A parallel implementation of the steady Navier–Stokes and eigenvalue solvers, developed in the FreeFEM language, suitably interfaced with the PETSc/SLEPc libraries.
The code available in this repository can reproduce the results from the following paper.
@article{moulin2019al,
Author = {Moulin, Johann and Jolivet, Pierre and Marquet, Olivier},
Title = {{Augmented Lagrangian Preconditioner for Large-Scale Hydrodynamic Stability Analysis}},
Year = {2019},
Volume = {351},
Pages = {718--743},
Journal = {Computer Methods in Applied Mechanics and Engineering},
Publisher = {Elsevier},
Url = {https://github.com/prj-/moulin2019al}
}
Make sure you have access to a recent FreeFEM installation (version 4.3 or above), compiled with the PETSc
and PETSc-complex
(with SLEPc) plugins. More details about the PETSc and SLEPc options used in the solvers may be found in their respective manual.
A small mesh is provided in the Mesh
folder. One should be able to launch the following command, which solves the steady Navier–Stokes equations for a Reynolds number of 50 (-Re 50
) on the same geometrical configuration as in the paper.
$ mpirun -np 4 FreeFem++-mpi Nonlinear-solver.edp -Re 50 -v 0
The option -v 0
is here to minimize the output generated by FreeFEM, see this tutorial for more information. Then, for performing the actual linear stability analysis.
$ mpirun -np 4 FreeFem++-mpi Eigensolver.edp -v 0
The results are stored in the State/EV
folder.
Here are the main command line parameters.
- Nonlinear-solver.edp
-Newton_tol
(default to1.0e-6
), stopping criterion of the Newton method-mesh
(default toFlatPlate3D.mesh
), must be stored in theMesh
folder ; if changed, do not forget to set the appropriate Dirichlet boundary conditions in the FreeFEM variational formulationsvJ
andvRes
-Re
(default to100
), Reynolds number-gamma
(default to0.3
), augmentation parameter
- Eigensolver.edp
-shift_real
(default to1.0e-6
), real part of the shift-shift_imag
(default to0.6
), imaginary part of the shift-nev
(default to5
), desired number of computed eigenmodes-recycle
(default to0
), number of recycled vectors from the Arnoldi basis between each GMRES cycle