You are on page 1of 9

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@mailman.stanford.edu  

Thank you

Jan  15th,  2013   SU2  Release  Version  2.0  Workshop   9  

You might also like