-
Configuration File
Mesh File
Restart File
Solver Setup
Physical Definition
Markers and Boundary Conditions
Convective Schemes
Slope Limiters and Shock Resolution
History and Solution Output
Linear Solvers and Preconditioners
Basics of Multi-Zone Computations
Execution
Aeroacoustic analysis of unsteady pressure
Flamelet Solver — Python Wrapper Wall Boundary Conditions
Output Fields Reference
Error Messages
-
Setup Guide: Steady RANS for External Aerodynamics
Setup Guide: Incompressible Flows
Setup Guide: Unsteady Flows and DES
Setup Guide: Laminar-Turbulent Transition
Setup Guide: Turbomachinery
Setup Guide: Heat Transfer and Conjugate Heat Transfer
Setup Guide: Species Transport and Combustion
Setup Guide: Shape Optimization with the Discrete Adjoint
Setup Guide: Non-Ideal Compressible Flows
-
Option Reference
Problem Definition
FluidModel
Data-driven fluid model parameters
Freestream Conditions
Reference Conditions
Boundary Markers
Time-marching
Linear solver definition
Convergence
Multi-grid
Spatial Discretization
Adjoint and Gradient
Sobolev Gradient Solver Parameters
Input/output files and formats
Dynamic mesh definition
Aeroelastic Simulation (Typical Section Model)
Wind Gust
Equivalent Area
Grid deformation
Deformable mesh
FEM flow solver definition
FEA solver
Multizone definition
Radiation solver
Heat solver
Visualize Control Volumes
Inverse design problem
Unsupported options
FFD point inversion
Automatic Differentation options
Python Options
Hybrid_RANSLES Options
Output Options
libROM options
Renamed and Removed Options
-
GIT-ting Started
Developing SU2 on GitHub (Internal Developers)
Running Regression Tests
Code Review
Code Structure
Style Guide
Advanced AD Techniques
Containers for Development
Writing Unit Tests
Integrating Tracy Profiler with SU2
Automatic Differentiation (AD)
Code Reference (Doxygen)
Debugging SU2
Documentation Improvements and Status
Glossary
Docs Check
Setup Guide: Non-Ideal Compressible Flows
Draft. These settings are drawn from SU2 source, tutorials and regression cases. Recommendations marked (to be reviewed) still need an experienced user’s review.
Use this guide to choose settings and understand their consequences. Follow the linked Tutorials for worked examples and consult V&V for numerical and physical comparisons. Example settings are starting points, not evidence that a case is converged or validated.
The documentation guide explains the source tags used below: (code), (test case), (tutorial), (docs), (advice) and (to be reviewed).
- When to use this guide
- Start from
- Settings that matter
- Check convergence and results
- Common problems
- Related tutorials and test cases
When to use this guide
Use this guide when the ideal gas law does not describe your fluid well. This happens for dense vapours and for gases near their critical point: for example organic fluids in ORC turbines, supercritical CO2 in compressors, or refrigerants in nozzles. This field is called NICFD (non-ideal compressible fluid dynamics).
The guide covers the compressible solvers (SOLVER= EULER, NAVIER_STOKES or RANS) with a non-ideal fluid model. These solvers do not model phase change: the fluid must stay a single-phase gas or a supercritical fluid.
Terms used below:
- Equation of state (EOS): the relation between pressure, density, temperature and energy of the fluid.
- Critical point: the endpoint of the liquid-vapour coexistence curve, where the two phases become identical. A supercritical state has both temperature and pressure above their critical values. Properties can vary rapidly nearby.
- Acentric factor: a dimensionless parameter defined from the reduced saturation pressure at a reduced temperature of 0.7. Peng-Robinson uses it to represent departures from simple-fluid behaviour.
- Two-phase region: states where liquid and vapour coexist in equilibrium. A cubic EOS may return a metastable or unstable single-phase continuation there. Positive pressure and sound-speed squared do not establish phase stability; check the saturation boundary separately.
In this guide, (advice) also covers general thermodynamics practice.
Start from
The block below is built from the regression test nicf/coolprop/fluidModel.cfg. That test runs the supersonic nozzle of the NICFD nozzle tutorial with CoolProp.
- We replaced the CoolProp fluid with the Peng-Robinson fluid block of the tutorial (siloxane MDM), so that the fluid model needs no CoolProp build. This modified combination has not been run as a new validation case.
- We set
RESTART_SOL= NO, and removed the comments and the file names. - We replaced
LIFTandDRAGin the screen output withNONPHYSICAL_POINTS. - The mesh
coolprop_nozzle.su2is in the TestCases repository.
SOLVER= RANS
KIND_TURB_MODEL= SST
MATH_PROBLEM= DIRECT
RESTART_SOL= NO
%
MACH_NUMBER= 1E-9
INIT_OPTION= TD_CONDITIONS
FREESTREAM_OPTION= TEMPERATURE_FS
FREESTREAM_PRESSURE= 904388
FREESTREAM_TEMPERATURE= 542.13
REF_DIMENSIONALIZATION= DIMENSIONAL
%
FLUID_MODEL= PR_GAS
GAMMA_VALUE= 1.01767
GAS_CONSTANT= 35.17
CRITICAL_TEMPERATURE= 565.3609
CRITICAL_PRESSURE= 1437500
ACENTRIC_FACTOR= 0.524
%
VISCOSITY_MODEL= CONSTANT_VISCOSITY
MU_CONSTANT= 1.21409E-05
CONDUCTIVITY_MODEL= CONSTANT_CONDUCTIVITY
THERMAL_CONDUCTIVITY_CONSTANT= 0.030542828
%
MARKER_HEATFLUX= ( WALL, 0.0 )
MARKER_SYM= ( SYMMETRY )
MARKER_RIEMANN= ( INFLOW, TOTAL_CONDITIONS_PT, 904388, 542.13, 1.0, 0.0, 0.0, OUTFLOW, STATIC_PRESSURE, 200000.0, 0.0, 0.0, 0.0, 0.0 )
%
NUM_METHOD_GRAD= GREEN_GAUSS
CFL_NUMBER= 10.0
CFL_ADAPT= YES
CFL_ADAPT_PARAM= ( 0.1, 2.0, 10.0, 1000.0 )
MAX_DELTA_TIME= 1E6
LINEAR_SOLVER= FGMRES
LINEAR_SOLVER_PREC= ILU
LINEAR_SOLVER_ILU_FILL_IN= 0
LINEAR_SOLVER_ERROR= 1E-6
LINEAR_SOLVER_ITER= 10
CONV_NUM_METHOD_FLOW= ROE
ENTROPY_FIX_COEFF= 0.1
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
CONV_NUM_METHOD_TURB= SCALAR_UPWIND
MUSCL_TURB= NO
%
% The test stops after 101 iterations. Raise ITER for a converged result.
ITER= 101
CONV_RESIDUAL_MINVAL= -24
CONV_STARTITER= 10
SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, RMS_TKE, RMS_DISSIPATION, NONPHYSICAL_POINTS)
MESH_FILENAME= coolprop_nozzle.su2
MESH_FORMAT= SU2
OUTPUT_WRT_FREQ= 50
To use CoolProp instead, replace the fluid block with the one of the test case: FLUID_MODEL= COOLPROP and FLUID_NAME= nitrogen (test case). The inlet and outlet values of the test then describe nitrogen, not MDM.
Settings that matter
Build options
These rules come from the code (code):
- CoolProp needs
-Denable-coolprop=trueat configure time. - The data-driven model with neural networks needs
-Denable-mlpcpp=true. The data-driven tutorial uses it too (tutorial). - CoolProp cannot be used with the AD builds, so there is no discrete adjoint with CoolProp.
VW_GASandPR_GASneed no extra build option.
Fluid model
Choose the equation of state with FLUID_MODEL (code):
| Value | Model | Parameters |
|---|---|---|
STANDARD_AIR, IDEAL_GAS |
ideal gas | GAMMA_VALUE, GAS_CONSTANT |
VW_GAS |
van der Waals | GAMMA_VALUE, GAS_CONSTANT, CRITICAL_TEMPERATURE, CRITICAL_PRESSURE |
PR_GAS |
Peng-Robinson | as VW_GAS, plus ACENTRIC_FACTOR |
COOLPROP |
multiparameter EOS from the CoolProp library | FLUID_NAME |
DATADRIVEN_FLUID |
look-up table or neural network | INTERPOLATION_METHOD, FILENAMES_INTERPOLATOR, USE_PINN, DATADRIVEN_NEWTON_RELAXATION |
How to choose (advice, to be reviewed):
VW_GASis the simplest non-ideal model. It is mainly useful for qualitative studies and code tests.PR_GASis a common choice for organic fluids. It gives fair accuracy away from the critical point. The NICFD nozzle tutorial uses it (tutorial).COOLPROPprovides fluid-specific multiparameter equations of state. Check the underlying EOS reference, validity range and uncertainty for the fluid and states of interest; neither accuracy nor evaluation cost has a universal ranking.DATADRIVEN_FLUIDapproximates a reference EOS with a table or network. Establish property and derivative errors over the intended state range and measure cost; closeness to the reference and a speedup are not guaranteed.
For background on the EOS families and their limits, see the primary CoolProp fluid-property documentation and cubic-EOS documentation. These describe the library, not a guarantee about SU2 coupling.
Parameters and their defaults (code):
GAMMA_VALUE(default 1.4) andGAS_CONSTANT(default 287.058 J/(kg K)). ForVW_GASandPR_GAS, take the ratio of specific heats in the dilute-gas limit, that is, at low pressure (tutorial). These models use a constant ideal-gas heat capacity, derived fromGAMMA_VALUE.GAS_CONSTANTis the universal gas constant divided by the molar mass of the fluid (advice).CRITICAL_TEMPERATURE(default 131.00 K),CRITICAL_PRESSURE(default 3588550.0 Pa),ACENTRIC_FACTOR(default 0.035). The defaults do not describe your fluid, so always set these values.CRITICAL_DENSITYexists (default 263.0) and the test cases set it, but the finite-volume solvers do not use it.FLUID_NAME(defaultnitrogen) is the CoolProp name of the fluid. WithCOOLPROP, SU2 takes the critical point and the acentric factor from CoolProp, so theCRITICAL_*options are not needed.
Data-driven options (code):
INTERPOLATION_METHOD:LUT(look-up table, default) orMLP(multi-layer perceptron, a neural network). The comment in the code says that the default isMLP, but the code setsLUT.FILENAMES_INTERPOLATOR: the.mlpfiles of the networks, or one.drgtable file forLUT. The file types are fromconfig_template.cfg.USE_PINN= YESuses a physics-informed network, defaultNO. The network gives the entropy as a function of density and internal energy. SU2 computes the other properties from its derivatives, which keeps them consistent (tutorial).DATADRIVEN_NEWTON_RELAXATION(default 1.0) relaxes a Newton solver. The model takes density and internal energy as inputs. When SU2 knows another pair of properties, for example pressure and temperature, this Newton solver finds the matching density and energy.- The data-driven tutorial shows how to make the network with SU2 DataMiner.
Reference values
REF_DIMENSIONALIZATION(defaultDIMENSIONAL) sets how SU2 scales the variables. See Physical Definition.COOLPROPmust run withDIMENSIONAL. Otherwise SU2 stops with “CoolProp can not be used with non-dimensionalization” (code).DATADRIVEN_FLUID: the test case and the tutorial useDIMENSIONAL(test case, tutorial). The code builds this model without reference scaling, so keepDIMENSIONAL(code, to be reviewed).PR_GASandVW_GASwork with both. The transonic stator test usesDIMENSIONAL, and the LS89 cascade test usesFREESTREAM_PRESS_EQ_ONE(test case).
Transport properties
Viscosity, VISCOSITY_MODEL (code):
CONSTANT_VISCOSITYwithMU_CONSTANT(default 1.716E-5 Pa s, the value of air).SUTHERLANDwithMU_REF,MU_T_REF,SUTHERLAND_CONSTANT(default model). Sutherland’s law is a fit for dilute gases (advice).COOLPROP: viscosity from CoolProp, for the fluids listed in the code.FLUID_NAMEmust match the list exactly, for exampleNitrogen,CarbonDioxide,R134a.POLYNOMIAL_VISCOSITYworks only with the incompressible solvers.
Thermal conductivity, CONDUCTIVITY_MODEL (code):
CONSTANT_CONDUCTIVITYwithTHERMAL_CONDUCTIVITY_CONSTANT(default 0.0257 W/(m K), the value of air).CONSTANT_PRANDTLwithPRANDTL_LAM(default 0.72) (default model).COOLPROP: conductivity from CoolProp, with the same exact-name rule as the viscosity.POLYNOMIAL_CONDUCTIVITYworks only with the incompressible solvers.
PRANDTL_TURB (default 0.9) sets the turbulent heat conduction in RANS (code).
What the examples use:
PR_GAStests and tutorial:CONSTANT_VISCOSITYandCONSTANT_CONDUCTIVITY(test case, tutorial). The tutorial says that these are the only models available withPR_GAS. The current code accepts the other models too (code). Whether they suit a dense gas is to be reviewed.- Data-driven test:
CONSTANT_VISCOSITYandCONSTANT_PRANDTL(test case). - CoolProp test
transportModel.cfg:COOLPROPfor both (test case).
With CONDUCTIVITY_MODEL= COOLPROP, also set TURBULENT_CONDUCTIVITY_MODEL= NONE. With the default CONSTANT_PRANDTL_TURB, the code replaces the CoolProp conductivity with THERMAL_CONDUCTIVITY_CONSTANT (code, to be reviewed). NONE does not remove the turbulent heat flux: the compressible solvers add it from PRANDTL_TURB in any case (code).
Boundary conditions
- With a non-ideal fluid,
MARKER_INLET,MARKER_OUTLETandMARKER_FARare not allowed. SU2 stops with “Riemann Boundary conditions or Giles must be used …” (code). - Use
MARKER_RIEMANNfor inlets and outlets. It is a characteristic condition, built on the waves that enter and leave the domain, and it uses the fluid model (tutorial). Format: (marker, kind, value 1, value 2, direction 1, direction 2, direction 3) (code).
Riemann kinds accepted by the general Riemann condition (code):
| Kind | Use | Values |
|---|---|---|
TOTAL_CONDITIONS_PT |
subsonic inlet | total pressure, total temperature, flow direction |
DENSITY_VELOCITY |
inlet | density, velocity magnitude, flow direction |
STATIC_PRESSURE |
subsonic outlet | static pressure, then four zeros |
STATIC_SUPERSONIC_INFLOW_PT |
supersonic inlet | static pressure, static temperature, Mach number components |
STATIC_SUPERSONIC_INFLOW_PD |
supersonic inlet | static pressure, static density, Mach number components |
Other kinds in the Riemann list, such as SUPERSONIC_OUTFLOW, stop the run with “Invalid Riemann input!” unless turbomachinery markers are set (code). The supersonic edge test uses STATIC_PRESSURE with a low value at its supersonic outlet (test case).
MARKER_GILESis a non-reflecting condition. It needsMARKER_TURBOMACHINERY(code). The data-driven tutorial uses it on a nozzle, with an outlet pressure ramp (tutorial). See Setup Guide: Turbomachinery for its kinds and options.- Walls:
MARKER_HEATFLUX,MARKER_EULERandMARKER_SYMwork as usual (test case).
Initialization
- Use
INIT_OPTION= TD_CONDITIONS(test case, tutorial). The defaultREYNOLDSrecomputes the pressure from the Reynolds number (code), which does not suit internal flows (advice). - The nozzle tests start from the inlet total state at rest:
FREESTREAM_PRESSUREandFREESTREAM_TEMPERATUREequal to the inlet total values, andMACH_NUMBER= 1E-9(test case). FREESTREAM_OPTION= DENSITY_FSgives the state from pressure and density, instead of pressure and temperature. The supersonic edge tests use it (test case).- Make sure that the initial state lies in the single-phase region, away from the saturation curve (advice).
- Check the initial state that SU2 prints before the first iteration (tutorial).
Schemes and limiters
- With a non-ideal fluid, only
ROE,HLLCandJSTare allowed forCONV_NUM_METHOD_FLOW(code). The test cases useROE(test case). - The nozzle tests raise
ENTROPY_FIX_COEFFto 0.1 (default 0.001) (test case). The entropy fix adds dissipation to the Roe scheme where wave speeds are close to zero (advice). - Second order: the nozzle tutorial uses
MUSCL_FLOW= YESwithSLOPE_LIMITER_FLOW= NONE(tutorial). The LS89 cascade test, with shocks, usesVENKATAKRISHNAN(test case). Use a limiter when the flow has shocks (advice). - The nozzle tests use
CFL_ADAPT= YESwithCFL_ADAPT_PARAM= ( 0.1, 2.0, 10.0, 1000.0 )(test case). The four values are the factor down, the factor up, and the minimum and maximum CFL (code). - The edge and LS89 tests use multigrid (
MGLEVEL= 3) (test case).
Near the critical point (advice, to be reviewed):
- The speed of sound and the heat capacity change fast there. Small errors in the reconstructed states can give non-physical states. Start first order (
MUSCL_FLOW= NO) or withRAMP_MUSCL, then switch to second order. - Start with a low CFL number, and let
CFL_ADAPTraise it. - Use a limiter, for example
VENKATAKRISHNAN, if non-physical points appear near steep gradients. - Refine the mesh where the flow passes close to the critical point.
What SU2 does with non-physical states (code):
- After each update, SU2 checks the density, pressure, temperature and square of the speed of sound of each point. If one is negative, SU2 goes back to the previous solution at that point and counts the point. The count is the history field
NONPHYSICAL_POINTS. - When a second-order reconstruction gives a negative pressure or density on an edge, SU2 uses first-order values on that edge.
- At start-up, SU2 prints “Warning. The original solution contains N points that are not physical.” when the initial state is non-physical.
Check convergence and results
- Non-physical points. Watch
NONPHYSICAL_POINTS. It should drop to zero long before convergence (advice). - Residuals. Watch the residuals (
RMS_DENSITY, …) as for any compressible case. See Solver Setup. - Mass flow. Check the mass flow balance between inlet and outlet, for example with
MARKER_ANALYZEandSURFACE_MASSFLOW(advice). - Phase. Check where the flow lies on a pressure-temperature or temperature-entropy diagram of the fluid. All points must stay outside the two-phase region (advice).
- Non-ideal effects. Compute the compressibility factor Z = p / (rho R T) in post-processing. Values far from 1 show where the non-ideal effects matter (tutorial). SU2 does not write Z as an output field (code).
- Data-driven model. With
DATADRIVEN_FLUID, look at the volume fieldEXTRAPOLATION. It marks points where the state is outside the range of the training data.FLUIDMODEL_NEWTONITERshows how many Newton iterations the fluid model needed (code). - Experiments. Compare with experiments where you can. The NICFD nozzle tutorial compares pressure and Mach number on the nozzle axis with measurements (tutorial).
Common problems
| Symptom | Likely cause | What to try |
|---|---|---|
| SU2 stops: “Riemann Boundary conditions or Giles must be used for inlet and outlet with Not Ideal Compressible Fluids”. | MARKER_INLET, MARKER_OUTLET or MARKER_FAR with a non-ideal fluid (code). |
Use MARKER_RIEMANN or MARKER_GILES. |
| SU2 stops: “Only ROE Upwind, HLLC Upwind scheme, and JST scheme can be used for Non-Ideal Compressible Fluids”. | Another convective scheme (code). | Use ROE, HLLC or JST. |
| SU2 stops: “CoolProp can not be used with non-dimensionalization.” | REF_DIMENSIONALIZATION is not DIMENSIONAL (code). |
Set REF_DIMENSIONALIZATION= DIMENSIONAL. |
| SU2 stops: “SU2 was not compiled with CoolProp (-Denable-coolprop=true)”. | A build without CoolProp (code). | Rebuild with -Denable-coolprop=true, without AD. |
| SU2 stops: “SU2 was not compiled with MLPCpp enabled (-Denable-mlpcpp=true).” | A build without MLPCpp (code). | Rebuild with -Denable-mlpcpp=true. |
| SU2 stops: “Viscosity model not available for this fluid in CoolProp library.” (or the same for conductivity). | FLUID_NAME is not in the list of the transport model, or is spelled with other capitals (code). |
Use the exact name, for example Nitrogen, or use a constant model. |
| SU2 stops: “POLYNOMIAL_VISCOSITY and POLYNOMIAL_CONDUCTIVITY are for incompressible only currently.” | A polynomial transport model with a compressible solver (code). | Use a constant model or COOLPROP. |
NONPHYSICAL_POINTS stays above zero, or sound-speed squared is negative. |
An invalid single-phase state, a metastable/unstable EOS branch, or too large a step at start-up (advice). | Check the boundary values against the saturation curve. Lower the CFL, start first order, and refine near the critical point (to be reviewed). |
Strange results close to saturation with COOLPROP. |
In a two-phase state, the code raises the temperature by 0.1 K and evaluates the speed of sound of the gas phase (code). | Keep the flow out of the two-phase region: the results there are not reliable. |
| The results look like air. | CRITICAL_*, ACENTRIC_FACTOR, GAMMA_VALUE, GAS_CONSTANT, MU_CONSTANT or THERMAL_CONDUCTIVITY_CONSTANT left at their defaults, which do not collectively describe the intended fluid (code). |
Set all fluid and transport parameters for your fluid. |
| The CoolProp conductivity has no effect. | TURBULENT_CONDUCTIVITY_MODEL is left at CONSTANT_PRANDTL_TURB (code). |
Set TURBULENT_CONDUCTIVITY_MODEL= NONE (to be reviewed). |
EXTRAPOLATION is 1 in parts of the domain. |
The data-driven model is used outside its training range (code). | Generate data and retrain over a wider range of density and energy. |
| The inlet flow angle is wrong on a 2D inlet that is not normal to x. | In 2D, SU2 reads the direction of the Riemann TOTAL_CONDITIONS_PT inlet relative to the boundary normal. In 3D, it reads it as x, y, z components (code, to be reviewed). |
In 2D, give the direction as (normal, tangential) components. |
| The run diverges at the start with a large pressure ratio. | The outlet pressure is applied at once (advice). | With MARKER_GILES, use RAMP_OUTLET as in the data-driven tutorial (tutorial). With MARKER_RIEMANN, start with a higher outlet pressure and lower it in steps (to be reviewed). |
Related tutorials and test cases
Tutorials:
- Non-ideal compressible flow in a supersonic nozzle: Peng-Robinson, Riemann boundaries, comparison with experiments.
- Non-ideal compressible flows with physics-informed neural networks: data-driven model, SU2 DataMiner, Giles boundaries.
- Aachen turbine stage with mixing plane: turbomachinery setup, which also applies to non-ideal fluids.
Test cases (SU2 repository):
- nicf/coolprop: CoolProp fluid model (
fluidModel.cfg) and CoolProp transport models (transportModel.cfg). - nicf/datadriven: data-driven model with a physics-informed network.
- nicf/edge: supersonic flow over an edge with
PR_GASandVW_GAS, Euler, multigrid. - nicf/LS89: turbine cascade with
PR_GAS, SA and SST models. - turbomachinery/transonic_stator_2D: stator with
PR_GASand Giles boundaries. - turbomachinery/centrifugal_stage uses
PR_GASbut old option names; it is not part of the regression tests.
User guide pages: Physical Definition, Markers and Boundary Conditions, Convective Schemes, Slope Limiters and Shock Resolution, Theory, Option reference, Output fields.
Source review: 22 October 2026, against SU2 docs_site at 41ea6a219a. See the review scope and outstanding validation. Setup recommendations remain draft where indicated.