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