SU2 Time Convergence Study : 2 Examples
Note: The examples used in this study are derived from SU2's Test Cases.
- The Laminar Flat Plate example comes from the unsteady flat plate Navier Stokes example.
- The Navier Stokes Cylinder example comes from lam_cylinder.cfg and various other unsteady flow examples.
The idea here is to see how quickly SU2's different time integration schemes converge. Examples in this repository show how varying temporal parameters such as TIME_MARCHING
, TIME_DISCRE_FLOW
, and TIME_STEP
affect the convergence rate of the solution to two examples problems employing different numerical methods.
This code includes a time_convergence_study.py script, which iterates through the various configurations tested. Also included, is a script which automates changes to SU2's configuration files (update_ts.py). (N.B., there are two versions of time_convergence_study.py
in this repository. Differences between the verions reflect what and how the data is plotted.)
The example in this repository test the following fields.
TIME_MARCHING
: DUAL_TIME_STEPPING-1ST_ORDER, DUAL_TIME_STEPPING-2ND-ORDER, TIME_STEPPINGTIME_DISCRE_FLOW
: EULER_IMPLICIT (default), EULER_EXPLICIT, RUNGE-KUTTA_EXPLICITSOLVER
: FEM_NAVIER_STOKES, NAVIER_STOKESNUM_METHOD_GRAD
: GREEN_GAUSS, WEIGHTED_LEAST_SQUARESNUM_METHOD_FLOW
andNUM_METHOD_FEM_FLOW
: DG, JST, ROE
Only able to employ Implicit methods in the laminar flat plate flow example due to periodic boundary conditions. Explicit methods caused the solution to diverge (related to this issue).
- To better understand SU2's time integration methods and their convergence rates.
- To understand where and how SU2's time integration methods could improve.
- To grow more familiar with how SU2 works and what the respository can do currently.
- To learn more about time integration methods used with Finite Volume Methods (and Discontinuous Galerkin Methods)
- SU2 v. 7.2.1
- Must be configured with mpi enabled.
- openmpi
- scipy
- pandas
- numpy
- matplotlib
Run time_convergence_study.py
. The examples output Paraview .vtu
files. You may want to modify the number of processes (nRank) for mpirun.
Based on this problem in SU2's Tutorials
Parameters (see config file for more detail)
- Flow: Unsteady (
TIME_DOMAIN = YES
), ideal, subsonic flow with constant viscosity and conductivity
- Boundary Conditions: periodic
- Mesh: flat plate
- Numerical : ROE numerical method,
SOLVER
:FEM_NAVIER_STOKES
(for DG) andNAVIER_STOKES
TIME_MARCHING
: (varies)TIME_STEPPING
,DUAL_TIME_STEPPING-1ST_ORDER
,DUAL_TIME_STEPPING-2ND_ORDER
TIME_ITER
:1
(increase for more time steps)TIME_DISCRE_FLOW
:EULER_IMPLICIT
- Time Convergence Field:
RMS_ENERGY
TIME_MARCHING | Figure |
---|---|
Dual Time Stepping (DTS) - 1st Order | ![]() |
Dual Time Stepping (DTS) - 2nd Order | ![]() |
Steady State (SST) | ![]() |
Comparison | ![]() |
- Multiple Time Steps (5 here)
TIME_MARCHING | Figure |
---|---|
DTS - 1st Order | ![]() |
DTS - 2nd Order | ![]() |
SST | ![]() |
Comparison | ![]() |
Parameters (see config file for more detail)
- Flow: Unsteady (
TIME_DOMAIN = YES
), ideal, subsonic flow with constant viscosity and conductivity
- Boundary Conditions: Farfield Boundary Markers
- Mesh: cylinder
- Numerical :
SOLVER
:FEM_NAVIER_STOKES
(for DG) andNAVIER_STOKES
TIME_MARCHING
: (varies)TIME_STEPPING
,DUAL_TIME_STEPPING-1ST_ORDER
,DUAL_TIME_STEPPING-2ND_ORDER
TIME_ITER
:1
(increase for more time steps)TIME_DISCRE_FLOW
orTIME_DISCRE_FEM_FLOW
:EULER_IMPLICIT
,EULER_EXPLICIT
,RUNGE-KUTTA_EXPLICIT
- Time Convergence Field:
TAVG_COMBO
- JST
- ROE
TIME_STEPPING
scheme does not appear to care about convergence. Merely attempts one inner iter per time step.DUAL_TIME_STEPPING-2ND_ORDER
converges slightly faster thanDUAL_TIME_STEPPING-2ND_ORDER
- Explicit methods converge faster than Implicit Methods (though that might be at the expense of accuracy or computational cost).
- JST converges faster than ROE
- Test on more unsteady example problems (e.g., incompressible flow, NACA0012, Turbulent Flat Plate).
- Try flat plate with non-periodic boundary conditions.
- Estimate the error.
- Implement MMS to verify the solutions (unsteady MMS is not yet available in SU2).
- Increase number of time steps (limited by processing speed on my computer at the moment).
- SU2
- Test Cases
- config_template.cfg
- SU2's VandV repository
.cfg
files and compute_order_of_accuracy.py were invaluable resources here