Can Nektar++ filter architecture work for my filter application?
******************* This email originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. If you trust the sender, add them to your safe senders list https://spam.ic.ac.uk/SpamConsole/Senders.aspx to disable email stamping for this address. ******************* Hi, I am implementing an algorithm that takes an intermediate solution [image: {U}_n] at time n and transforms it to [image: \tilde{U}_n]. Inside SolverUtils/UnsteadySystem.cpp, I want to feed this transformed value back to the TimeIntegrate() call at the beginning of the time loop, so [image: {U}_{(n+1)}] will be formed using [image: \tilde{U}_n]. I wrote a Nektar++ filter that takes the m_fields object and modifies its phys and coeffs attributes using my filter's update() method. Upon return, I verify that m_fields indeed have [image: \tilde{U}] , which are different from the [image: U]. But the change is not passed to the next integration timestep. I tried to update the local variable "fields" used to initialize the integration scheme from [image: {U}_n] to [image: \tilde{U}_n]. The integration object is still unaware of the change to the intermediate solution. I suspect that the time integration object does not expose a *setter *method for the solution vector objects. I checked all the existing Nektar++ filters, but from my understanding, none of those change the values of the intermediate solutions. The only way I could get my filter to work is by calling the initializer of the time integration scheme at every timestep with the modified "fields" object. While it works for my experiments, I need advice about where architecture-wise, should I put my *filter *such that I don't need to modify UnsteadySystem.cpp at all. Thanks much! V -- ,-~~-.___._. / | ' \ | |--------. Vidhi Zala ( ) 0 | | | School of Computing \_/-, ,----' | | | Scientific Computing and Imaging Institute ==== !_!-v---v--. University of Utah / \-'~; .--------. / __/~| ._-""|| | vidhi.zala@utah.edu =( _____|_|____||________| http://sci.utah.edu/people/vidhi.html
Hi Vidhi, Just checking on old emails. Did you get any response on this question? The closest thing I can think of that might help is in the Sub stepping scheme of the IncNavierStokesSOlver. If you look at SubSteppingExtrapolate.cpp you will see there is an m_intScheme->GetSolutionVector and m_intScheme->SetSolutionVector which allows you to get access to the integration variables in physical space and update them. I do not however recall if you have access to the m_intScheme member in the Filter. Possibly it does hold the EquationSystem which may allow you to access this. Cheers, Spencer. On 16 Jun 2021, at 11:20, Vidhi Zala <vidhi.zala@utah.edu<mailto:vidhi.zala@utah.edu>> wrote: This email from vidhi.zala@utah.edu<mailto:vidhi.zala@utah.edu> originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. If you trust the sender, add them to your safe senders list<https://spam.ic.ac.uk/SpamConsole/Senders.aspx> to disable email stamping for this address. Hi, I am implementing an algorithm that takes an intermediate solution [{U}_n] at time n and transforms it to [\tilde{U}_n] . Inside SolverUtils/UnsteadySystem.cpp, I want to feed this transformed value back to the TimeIntegrate() call at the beginning of the time loop, so [{U}_{(n+1)}] will be formed using [\tilde{U}_n] . I wrote a Nektar++ filter that takes the m_fields object and modifies its phys and coeffs attributes using my filter's update() method. Upon return, I verify that m_fields indeed have [\tilde{U}] , which are different from the [U] . But the change is not passed to the next integration timestep. I tried to update the local variable "fields" used to initialize the integration scheme from [{U}_n] to [\tilde{U}_n] . The integration object is still unaware of the change to the intermediate solution. I suspect that the time integration object does not expose a setter method for the solution vector objects. I checked all the existing Nektar++ filters, but from my understanding, none of those change the values of the intermediate solutions. The only way I could get my filter to work is by calling the initializer of the time integration scheme at every timestep with the modified "fields" object. While it works for my experiments, I need advice about where architecture-wise, should I put my filter such that I don't need to modify UnsteadySystem.cpp at all. Thanks much! V -- ,-~~-.___._. / | ' \ | |--------. Vidhi Zala ( ) 0 | | | School of Computing \_/-, ,----' | | | Scientific Computing and Imaging Institute ==== !_!-v---v--. University of Utah / \-'~; .--------. / __/~| ._-""|| | vidhi.zala@utah.edu<mailto:vidhi.zala@utah.edu> =( _____|_|____||________| http://sci.utah.edu/people/vidhi.html _______________________________________________ Nektar-users mailing list Nektar-users@imperial.ac.uk<mailto:Nektar-users@imperial.ac.uk> https://mailman.ic.ac.uk/mailman/listinfo/nektar-users
Hi Spencer Thanks for getting back to me on this issue. I found out the solution vector getter and setter after digging around. That was exactly what I wanted! V On Thu, Jul 15, 2021, 7:14 AM Sherwin, Spencer J <s.sherwin@imperial.ac.uk> wrote:
Hi Vidhi,
Just checking on old emails. Did you get any response on this question?
The closest thing I can think of that might help is in the Sub stepping scheme of the IncNavierStokesSOlver. If you look at SubSteppingExtrapolate.cpp you will see there is an
m_intScheme->GetSolutionVector
and
m_intScheme->SetSolutionVector
which allows you to get access to the integration variables in physical space and update them. I do not however recall if you have access to the m_intScheme member in the Filter. Possibly it does hold the EquationSystem which may allow you to access this.
Cheers, Spencer.
On 16 Jun 2021, at 11:20, Vidhi Zala <vidhi.zala@utah.edu> wrote:
This email from vidhi.zala@utah.edu originates from outside Imperial. Do not click on links and attachments unless you recognise the sender. If you trust the sender, add them to your safe senders list <https://spam.ic.ac.uk/SpamConsole/Senders.aspx> to disable email stamping for this address.
Hi,
I am implementing an algorithm that takes an intermediate solution [image: {U}_n] at time n and transforms it to [image: \tilde{U}_n].
Inside SolverUtils/UnsteadySystem.cpp, I want to feed this transformed value back to the TimeIntegrate() call at the beginning of the time loop, so [image: {U}_{(n+1)}] will be formed using [image: \tilde{U}_n]. I wrote a Nektar++ filter that takes the m_fields object and modifies its phys and coeffs attributes using my filter's update() method. Upon return, I verify that m_fields indeed have [image: \tilde{U}] , which are different from the [image: U]. But the change is not passed to the next integration timestep.
I tried to update the local variable "fields" used to initialize the integration scheme from [image: {U}_n] to [image: \tilde{U}_n]. The integration object is still unaware of the change to the intermediate solution. I suspect that the time integration object does not expose a *setter *method for the solution vector objects. I checked all the existing Nektar++ filters, but from my understanding, none of those change the values of the intermediate solutions.
The only way I could get my filter to work is by calling the initializer of the time integration scheme at every timestep with the modified "fields" object. While it works for my experiments, I need advice about where architecture-wise, should I put my *filter *such that I don't need to modify UnsteadySystem.cpp at all.
Thanks much! V --
,-~~-.___._. / | ' \ | |--------. Vidhi Zala ( ) 0 | | | School of Computing \_/-, ,----' | | | Scientific Computing and Imaging Institute ==== !_!-v---v--. University of Utah / \-'~; .--------. / __/~| ._-""|| | vidhi.zala@utah.edu =( _____|_|____||________| http://sci.utah.edu/people/vidhi.html
_______________________________________________ Nektar-users mailing list Nektar-users@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/nektar-users
_______________________________________________ Nektar-users mailing list Nektar-users@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/nektar-users
participants (2)
- 
                
                Sherwin, Spencer J
- 
                
                Vidhi Zala