Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stabilisation and acceleration of numerical simulation #2022

Open
dylewiczk opened this issue May 2, 2023 · 3 comments
Open

Stabilisation and acceleration of numerical simulation #2022

dylewiczk opened this issue May 2, 2023 · 3 comments

Comments

@dylewiczk
Copy link

Is your feature request related to a problem? Please describe.
"The knowledge of a steady base-flow solution of the governing Navier-Stokes equations is fundamental to instability studies and flow control. " [1]

I work in stability analysis of super- and hypersonic flows. To perform such analysis, I need to firstly obtain a steady-state solution of the Navier-Stokes equations. This is not a problem when a physical steady-state exists but becomes cumbersome otherwise. In the latter case, I need to drive the flow to a steady-state numerically such that the flow becomes steady and linear stability analysis can be performed. Presently, there is no compressible open-source CFD code capable of supersonic simulations, as far as I know, able to obtain ''unstable'' steady-states. The solutions outlined below not only would give the users capabilities needed to perform stability analysis of globally unstable flows with help of SU2 code but would also provide means of accelerating convergence of any unsteady solution.

Describe the solution you'd like
Implementation of selective frequency damping (SFD) for unsteady simulation as introduced in [1] and boostconv algorithm as proposed by [2].

SFD: A method, enabling the computation of steady solutions of the Navier-Stokes equations in globally unstable configurations. Steady-state is achieved by damping the unstable temporal frequencies with addition of a dissipative relaxation term proportional to the high-frequency content of the velocity fluctuations. [1]

boostconv: An iterative algorithm, inspired by Krylov-subspace methods, which is able to compute unstable steady states and/or accelerate the convergence to stable configurations. This algorithm is based on the minimization of the residual norm at each iteration step with a projection basis updated at each iteration rather than at periodic restarts like in the classical GMRES method. The algorithm is able to stabilize any dynamical system without increasing the computational time of the original numerical procedure used to solve the governing equations. Moreover, it can be easily inserted into a pre-existing relaxation (integration) procedure with a call to a single black-box subroutine. [2]

Additional context
I would be happy to collaborate on implementation of said algorithms in SU2 but I do not have much experience with C++ (I mostly use Fortran) and I am not too familiar with SU2 source code so it would be great to work with someone more experienced in those areas.

Figure from [2] outlining performance of SFD and boostconv on a cylinder:
Screenshot 2023-05-02 at 22 23 19

Bibliography
[1] Åkervik, E., Brandt, L., Henningson, D.S., Hœpffner, J., Marxen, O. and Schlatter, P., 2006. Steady solutions of the Navier-Stokes equations by selective frequency damping. Physics of fluids, 18(6), p.068102.
[2] Citro, V., Luchini, P., Giannetti, F. and Auteri, F., 2017. Efficient stabilization and acceleration of numerical simulation of fluid flows by residual recombination. Journal of Computational Physics, 344, pp.234-246.

@tbellosta
Copy link
Contributor

Hi @dylewiczk, a while back I was trying to implement those algorithms in SU2, but stopped halfway through due to a lack of time/motivation. I don't foresee any problem in implementing SFD in SU2, at least in the encapsulated formulation of Jordi et al. . I already have an implementation somewhere synced to a pretty recent develop branch. I'll try to push the branch so you can take a look.
Implementing boostconv will be a bit more involved, but I can help you with that if you are willing to do the heavy lifting on the development side. Also, one of the authors of the boostconv paper is in the office right next to mine, so I may be able to ask for extra insights on the method.

@dylewiczk
Copy link
Author

Hi @tbellosta, thanks for your message. Maybe we can first bring your SFD implementation back to life and then we can reassess the boostconv business. If that works for you, let me know when you push the branch.

@pcarruscag
Copy link
Member

Have you tried the Newton-Krylov approach in SU2? Boostconv sounds like Newton-Krylov. Our limitation with NK at the moment is that we don't have a good linear preconditioner to converge the Krylov solver to reasonable tolerances at high CFL (which is required to make this type of approach effective and efficient).

In the papers, the types of problems to which they apply these methods are very different from the application you have in mind. There is a lot of work that should be done on the numerical schemes for high-speed (and even low-speed) to understand where the robustness issues originate.

If these methods can be used as black boxes, it would be a good idea to implement them via the Python wrapper if possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants