Introduction to SU2 Code Structure
SU2 Release Version 2.0 Workshop
Stanford University
Tuesday, January 15th, 2013
Amrita K. Lonkar
Department of Aeronautics & Astronautics
Stanford University
SU2-‐
Object
Oriented
Structure
• Why
Object
Oriented?
– Easy
to
add
new
capabili9es
– Easy
to
leverage
a
lot
of
exis9ng
capabili9es.
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
2
SU2
Modules
• SU2_CFD
–
The
main
PDE
solu7on
module
• SU2_DDC
–
The
Domain
Decomposi9on
Code
• SU2_MAC
–
The
Mesh
Adapta9on
Code
• SU2_MDC-‐
The
Mesh
Deforma9on
Code
• SU2_PBC
–
The
Periodic
Boundary
Condi9on
Code
• SU2_SMC
–
The
Sliding
Mesh
Code
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
3
SU2_CFD
Module
1a)
Read
Input
2)
Solve
Equa7ons
3)
Write
Output
Class:
CConfig
• Read
the
config
file
Pick
Solver
Class:
COutput
• Print
on
screen
Class:
CSolu9on
1b)
Read
Mesh
• Euler
Equa9ons:
CEulerSolu9on
• Write
solu9on
file
Class:
CGeometry
• Plasma
Equa9ons:
CPlasmaSolu9on
• Write
restart
file
• Read
the
mesh
file
• Adjoint
Equa9ons:
CEulerAdjSolu9on
• Write
history
file
• Set
up
mul9grid
meshes
• And
others…
trunk/Common/
trunk/Common/
Store
Flow
Variables
Discre7za7on
Solve
Linear
System
Class:
CVariable
Class:
CNumerics
Class:
CSparseMatrix
• Stores
variables
at
every
mesh
node.
Spa9al
Discre9za9on
• BiCSTAB
• Convec9ve
Flux,
Jacobian
• Declare
&
store
all
flow
variables
§ CNumerics::
Roe/JST/etc.
• GMRES
§ CEulerVariable:
Density,
• Viscous
Flux,
Jacobian
energy
etc.
§ CNumerics::
Avg_Grad/etc.
• LU-‐SGS
§ CNSVariable:
+
Viscosity
• Source
Terms,
Jacobian
§ CAdjVariable:
Adjoint
variables
§ CNumerics::
PieceWiseConst.
• Precondi9oners
§ And
others…
§ Linelet
Temporal
Discre9za9on
§ Jacobi
• Explicit
Euler/
Runge-‐Kuda
• Implicit
Time
Integra9on
• Update
solu9on
vector
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop`
MN
YGHHF
4
CGeometry
Class
CGeometry
CPhysicalGeometry
CMultiGridGeometry
CPrimalGrid
CDualGrid
Children Classes
Children Classes
Parent Class: CDualGrid
Parent Class: CPrimalGrid
Files
in
Common/include:
CEdge
CHexahedron
• geometry_structure.hpp
CLine
CPoint
• geometry_structure.inl
In
Common/src
CVertex
CPyramid
• geometry_structure.cpp
CRectangle
CTetrahedron
5
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
CSolu9on
Class
Parent Class: CSolution
CSolution
CEulerSolution
CNSSolution
CTurbSolution
CTurbSASolution
CSolu9on
CEulerSolution
CPlasmaSolution
CTurbSSTSolution
CWaveSolution
New Turbulence Model
CVariable
CNumerics
CSparseMatrix
CVariable
CNumerics
CSparseMatrix
CFEASolution
CHeatSolution
CEulerVariable
CRoe_Flow
CLevelSetSolution
CAdjEulerSolution
CAdjNSSolution
Files
in
SU2_CFD/include:
• solu9on_structure.hpp
CAdjTurbSolution
• solu9on_structure.inl
CAdjPlasmaSolution
In
SU2_CFD/src
• solu9on_direct_mean.cpp
CAdjLevelSetSolution
• solu9on_adjoint_mean.cpp
CLinEulerSolution
• solu9on_direct_plasma.cpp
• solu9on_direct_template.cpp
CTemplateSolution
• etc.
6
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
CVariable
Class
Parent Class: CVariable
CEulerVariable
CNSVariable
Stores
variables
for
a
par9cular
CSolu9on
solu9on
class,
at
EVERY
grid
CTurbVariable
node.
CTurbSAVariable
CPlasmaVariable
CTurbSSTVariable
CWaveVariable
New Turbulence Model
CVariable
CNumerics
CSparseMatrix
CFEAVariable
CHeatVariable
CLevelSetVariable
CAdjEulerVariable
CAdjNSVariable
Files
in
SU2_CFD/include
CAdjTurbVariable
• variable_structure.hpp
• variable_structure.inl
CAdjPlasmaVariable
SU2_CFD/src
• variable_direct.cpp
CAdjLevelSetVariable
• variable_adjoint.cpp
CLinEulerVariable
• variable_template.cpp
• etc.
CTemplateVariable
7
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
CNumerics
Class
Parent Class: CNumerics
Roe’s Scheme
Average Gradient
Piecewise Constant Source
Child
Classes
for:
JST Scheme
Galerkin
CSolu9on
Plasma Source
• Convec9ve
Flux
Discre9za9on
+
Jacobian
AUSM Scheme
Average Gradient Corrected
Gravity Source
• Viscous
Flux
Discre9za9on
+
Jacobian
HLLC Scheme
Template Viscous Terms
CVariable
CNumerics
CSparseMatrix
Electrical Source
Steger-Warming Scheme
• Source
Terms
Discre9za9on
+
Jacobian
Turbulence Source
Roe-Turkel for low Mach
Transition Source
Lax-Friedrich Scheme
Files
in
SU2_CFD/include
Axisymmetric Source
• numerics_structure.hpp
Upwinding for Turb Scalar
• numerics_structure.inl
Template Convective Terms
Rotational Frame Source
In
SU2_CFD/src:
• numerics_structure.cpp
Free Surface Source
• numerics_convec9ve.cpp
• numerics_viscous.cpp
Template Source Terms
• numerics_source.cpp
8
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
More
here…
• SU2
Paper:
Stanford
University
Unstructured
(SU2):
An
open-‐source
integrated
computa9onal
environment
for
mul9physics
simula9on
and
design.
AIAA
2013-‐0287
• Developers
contact:
susquared-‐dev@[Link]
Thank you
Jan
15th,
2013
SU2
Release
Version
2.0
Workshop
9