-
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: Turbomachinery
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 to set up a steady simulation of a blade row, or of a machine with several blade rows: compressors, turbines, stages of axial or radial machines, and linear cascades. The guide covers the turbomachinery features of the compressible solvers (SOLVER= EULER, NAVIER_STOKES or RANS).
Terms used below:
- Blade row (or zone): the mesh of one blade passage of one row, for example a stator or a rotor.
- Mixing plane: an interface between two rows that passes averaged flow values from one row to the next. It makes a steady stage simulation possible.
- Span-wise section: a band at constant height between hub and shroud. SU2 averages the flow on each band of an inlet, outlet or mixing plane.
- Non-reflecting boundary: a boundary that lets pressure waves leave the domain instead of bouncing back.
Start from
The block below comes from the regression test turbomachinery/axial_stage_2D. It is a 2D axial stage (a stator and a moving row) with a mixing plane, Giles boundaries and the SST model. We removed the comments, most output settings, and the options that are at their default value or have no effect in this setup. The mesh file mesh_axial_stage_2d_turb.su2 is in the TestCases repository.
Main file, Axial_stage2D.cfg:
MULTIZONE= YES
CONFIG_LIST= (zone_1.cfg, zone_2.cfg)
%
SOLVER= RANS
KIND_TURB_MODEL= SST
MATH_PROBLEM= DIRECT
RESTART_SOL= NO
%
MACH_NUMBER= 0.05
FREESTREAM_PRESSURE= 140000.0
FREESTREAM_TEMPERATURE= 300.0
FREESTREAM_OPTION= TEMPERATURE_FS
FREESTREAM_TURBULENCEINTENSITY= 0.03
FREESTREAM_TURB2LAMVISCRATIO= 100.0
INIT_OPTION= TD_CONDITIONS
REF_DIMENSIONALIZATION= DIMENSIONAL
%
FLUID_MODEL= IDEAL_GAS
GAMMA_VALUE= 1.4
GAS_CONSTANT= 287.058
VISCOSITY_MODEL= SUTHERLAND
MU_REF= 1.716E-5
MU_T_REF= 273.15
SUTHERLAND_CONSTANT= 110.4
CONDUCTIVITY_MODEL= CONSTANT_PRANDTL
%
MARKER_HEATFLUX= (wall1, 0.0, wall2, 0.0)
MARKER_PERIODIC= (periodic1, periodic2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04463756775, 0.0, periodic3, periodic4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04463756775, 0.0)
%
MARKER_TURBOMACHINERY= (inflow, outmix, inmix, outflow)
MARKER_ANALYZE= (outflow)
MARKER_ZONE_INTERFACE= (outmix, inmix)
MARKER_MIXINGPLANE_INTERFACE= (outmix, inmix)
MARKER_GILES= (inflow, TOTAL_CONDITIONS_PT, 169623.33, 305.76, 1.0, 0.0, 0.0, 1.0, 1.0, outmix, MIXING_OUT, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, inmix, MIXING_IN, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, outflow, STATIC_PRESSURE, 99741.00, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0)
SPATIAL_FOURIER= NO
TURBOMACHINERY_KIND= AXIAL AXIAL
TURBO_PERF_KIND= TURBINE TURBINE
TURBULENT_MIXINGPLANE= YES
AVERAGE_PROCESS_KIND= MIXEDOUT
PERFORMANCE_AVERAGE_PROCESS_KIND= MIXEDOUT
MIXEDOUT_COEFF= (1.0, 1.0E-05, 15)
AVERAGE_MACH_LIMIT= 0.05
%
NUM_METHOD_GRAD= WEIGHTED_LEAST_SQUARES
CFL_NUMBER= 10.0
LINEAR_SOLVER= FGMRES
LINEAR_SOLVER_PREC= LU_SGS
LINEAR_SOLVER_ERROR= 1E-4
LINEAR_SOLVER_ITER= 10
CONV_NUM_METHOD_FLOW= ROE
MUSCL_FLOW= YES
RAMP_MUSCL= YES
RAMP_MUSCL_COEFF= (0.0, 1.0, 20.0)
SLOPE_LIMITER_FLOW= VAN_ALBADA_EDGE
ENTROPY_FIX_COEFF= 0.01
CONV_NUM_METHOD_TURB= SCALAR_UPWIND
MUSCL_TURB= NO
%
% The test stops after 21 outer iterations. Raise OUTER_ITER for a converged result.
OUTER_ITER= 21
CONV_RESIDUAL_MINVAL= -16
CONV_STARTITER= 10
SCREEN_OUTPUT= OUTER_ITER, AVG_BGS_RES[0], AVG_BGS_RES[1], RMS_DENSITY[0], RMS_ENERGY[0], RMS_DENSITY[1], RMS_ENERGY[1], SURFACE_TOTAL_PRESSURE[1], MassFlowOut_2[1], TotalStaticEfficiency[1]
MESH_FILENAME= mesh_axial_stage_2d_turb.su2
MESH_FORMAT= SU2
OUTPUT_WRT_FREQ= 1000
Zone file of the fixed row, zone_1.cfg:
GRID_MOVEMENT= NONE
Zone file of the moving row, zone_2.cfg. In 2D the rotor is a row that translates along y:
GRID_MOVEMENT= STEADY_TRANSLATION
MACH_MOTION= 0.35
TRANSLATION_RATE= 0.0 -150.0 0.0
For a 3D machine, start from the Aachen turbine tutorial or from the test case turbomachinery/Aachen_turbine. That case restarts from a solution file (RESTART_SOL= YES). Set RESTART_SOL= NO to start from scratch.
Settings that matter
Mesh and machine axis
- For 3D turbomachinery, align the machine axis with z. The Aachen axial-flow example uses flow along positive z; radial machines also have a radial flow component, and the 2D translating-row example uses the x–y plane (tutorial, code). The code computes the radius as the distance from the z-axis when it builds the span-wise sections. The rotation ramp changes only the z component of
ROTATION_RATE(code). - Mesh one blade passage per row, and connect its sides with
MARKER_PERIODIC(tutorial). For a rotational periodicity, give the rotation centre and the rotation angle about each axis, in degrees. The Aachen case has 41 blades per row and uses an angle of 360/41 = 8.7804878 about z (test case). - In 3D, list the periodic pairs in
MARKER_PERIODICin zone order: the first pair for zone 1, the second pair for zone 2, and so on. The code that finds the span-wise sections of zone n looks at the n-th periodic pair (code, to be reviewed). All 3D test cases follow this order (test case).
Single row or several rows
- One row. Use a single config file. Even with one row, you need
MARKER_TURBOMACHINERY= (inlet, outlet)to use Giles boundaries or turbomachinery outputs (code). Example: transonic_stator_2D (test case). - Several rows. Put each row in its own zone. Set
MULTIZONE= YESand list one sub-config file per zone inCONFIG_LIST, in stream-wise order (tutorial). A sub-config file holds only the options that differ from the main file, usually the grid motion. See Basics of Multi-Zone Computations. - In multizone runs,
OUTER_ITERsets the number of iterations.INNER_ITER(default 1) is the number of iterations of each zone per outer iteration (code).
Rotating frame or moving mesh
Choose the motion of each zone with GRID_MOVEMENT in its sub-config file (code):
ROTATING_FRAME: the mesh does not move. SU2 solves the flow in a frame that turns with the rotor. Use it for steady simulations of rotors (tutorial). SetROTATION_RATE(rad/s, vector),MOTION_ORIGINandMACH_MOTION.STEADY_TRANSLATION: the 2D version ofROTATING_FRAME, for a row that moves along a straight line. SetTRANSLATION_RATE(m/s) (test case).RIGID_MOTION: the mesh really moves. This needs a time-accurate simulation (TIME_DOMAIN= YES) and sliding interfaces between zones (MARKER_FLUID_INTERFACE). See the sliding_interface test cases (test case). This guide does not cover unsteady rotor-stator runs.NONE: no motion, for stators.
MACH_MOTION is a Mach number based on the speed of the moving mesh. The multizone page says that SU2 uses it to initialize a viscous flow from the Reynolds number, and to compute force coefficients on moving meshes (docs). The test cases use 0.35 (test case).
For the stator zones, the Aachen and APU turbocharger test cases set GRID_MOVEMENT= ROTATING_FRAME with no rotation rate, and the 2D axial stage uses NONE. Both work (test case).
Use MARKER_SHROUD to list the shroud walls. In a rotating zone, SU2 sets the grid velocity to zero on these markers, so that the shroud does not turn with the rotor (code, tutorial).
Interfaces between rows
Every interface between two zones needs two lists. Give the markers in pairs (upstream marker, downstream marker), in stream-wise order (tutorial):
MARKER_ZONE_INTERFACEtells SU2 that the two markers are connected.- One of these two options sets the kind of interface (code):
MARKER_MIXINGPLANE_INTERFACE: mixing plane. SU2 passes averaged values for each span-wise section from one row to the next.MARKER_FLUID_INTERFACE: frozen rotor, where the rows keep a fixed position relative to each other. SU2 interpolates the local values, with no averaging (to be reviewed). The test case multi_interface uses one interface of each kind (test case).
Mixing-plane options:
MIXINGPLANE_INTERFACE_KINDsets how SU2 maps the span-wise sections of one side onto the other:NEAREST_SPAN(default),LINEAR_INTERPOLATIONorMATCHING(code). The test cases useLINEAR_INTERPOLATION(test case).MATCHINGprobably needs the same span-wise sections on both sides (to be reviewed).TURBULENT_MIXINGPLANE= YESalso passes the turbulence variables across the mixing plane. The default isNO(code). All turbulent test cases setYES(test case).- On the mixing-plane markers, also set a Giles condition:
MIXING_OUTon the upstream side andMIXING_INon the downstream side (tutorial).
Turbomachinery markers
MARKER_TURBOMACHINERY: the inlet and the outlet marker of every zone, zone by zone, in stream-wise order: (inlet zone 1, outlet zone 1, inlet zone 2, outlet zone 2, …) (tutorial).TURBOMACHINERY_KIND: the shape of each row, one entry per zone:AXIAL,CENTRIFUGAL,CENTRIPETAL,CENTRIPETAL_AXIALorAXIAL_CENTRIFUGAL. SU2 uses it to decide which coordinate measures the span (code). Example: the radial turbine of the APU turbocharger test usesCENTRIPETAL CENTRIPETAL_AXIAL(test case).TURBO_PERF_KIND: the kind of machine for the performance outputs, one entry per zone:TURBINE,COMPRESSORorPROPELLOR. SU2 stops with “Insufficient TURBO_PERF_KIND options” if there are fewer entries than zones (code).MARKER_ANALYZE: markers where SU2 writes surface-averaged values such asSURFACE_TOTAL_PRESSURE(tutorial).MARKER_ANALYZE_AVERAGEchoosesAREAorMASSFLUX(default) averaging for these outputs (code).
Inlet and outlet boundaries: Giles or Riemann
Both conditions are based on characteristics, that is, on the waves that enter and leave the domain. They work with any fluid model. The plain MARKER_INLET and MARKER_OUTLET work only with ideal gases (code).
MARKER_GILES is the non-reflecting condition for turbomachinery (tutorial).
- It works only together with
MARKER_TURBOMACHINERY. Without it, SU2 stops with “Giles Boundary conditions can only be used with turbomachinery markers” (code). - Format, 9 values per marker: (marker, kind, value 1, value 2, direction 1, direction 2, direction 3, average relaxation, Fourier relaxation) (tutorial).
- The last two values under-relax the update of the averaged state and of the Fourier modes: SU2 applies only this fraction of each update. The test cases use 1.0 in 2D. On most boundaries of the 3D Aachen case they use 0.3 (average) and 0.0 (Fourier) (test case).
SPATIAL_FOURIER= YESmakes the condition non-reflecting for the circumferential waves too. WithNO(default), it acts as a 1D characteristic condition (code). The Aachen tutorial keeps it off (tutorial).GILES_EXTRA_RELAXFACTOR= (relaxation factor, span fraction) adds extra under-relaxation near hub and shroud in 3D. The default is (0.1, 0.1). SU2 limits the span fraction to 0.5 (code). The Aachen case uses (0.05, 0.05) (test case).
Kinds of Giles boundary (code):
| Kind | Use | Values |
|---|---|---|
TOTAL_CONDITIONS_PT |
inlet | total pressure, total temperature, flow direction (normal, tangential, span-wise components) |
TOTAL_CONDITIONS_PT_1D |
inlet | same, imposed on the average of the whole boundary |
STATIC_PRESSURE |
outlet | static pressure, imposed on each span-wise section |
STATIC_PRESSURE_1D |
outlet | static pressure, imposed on the average of the whole boundary |
RADIAL_EQUILIBRIUM |
outlet (3D) | static pressure at mid-span; SU2 builds the span-wise pressure profile from the radial equilibrium of the averaged flow |
MASS_FLOW_OUTLET |
outlet | target mass flow (value 1) and a relaxation factor (value 2) |
MIXING_IN, MIXING_OUT |
mixing plane, averages for each span-wise section | none (write zeros) |
MIXING_IN_1D, MIXING_OUT_1D |
mixing plane, average of the whole boundary | none (write zeros) |
The _1D kinds impose only the average over the whole boundary, so the span-wise profile is free to develop. The tutorial uses STATIC_PRESSURE_1D on an outlet “where the flow is in radial equilibrium” (tutorial).
MARKER_RIEMANN is a characteristic condition with 7 values per marker: (marker, kind, value 1, value 2, direction 1, direction 2, direction 3). It accepts these kinds (code):
- Without turbomachinery markers:
TOTAL_CONDITIONS_PT,STATIC_PRESSURE,DENSITY_VELOCITY,STATIC_SUPERSONIC_INFLOW_PTandSTATIC_SUPERSONIC_INFLOW_PD. - With turbomachinery markers, SU2 uses an averaged version of the condition on the finest mesh. It accepts
TOTAL_CONDITIONS_PT,STATIC_PRESSURE,RADIAL_EQUILIBRIUM,MIXING_INandMIXING_OUT. - Any other kind stops the run with “Invalid Riemann input!”.
Which one to choose: the turbomachinery test cases and the Aachen tutorial use MARKER_GILES (test case, tutorial). Giles boundaries can sit closer to the blades than reflecting ones (advice, to be reviewed).
Averaging
AVERAGE_PROCESS_KINDsets how SU2 averages the flow on Giles boundaries and mixing planes:ALGEBRAIC,AREA(default),MASSFLUXorMIXEDOUT(code). The tutorial says that onlyMIXEDOUTmakes the mixing plane conservative (tutorial). All test cases useMIXEDOUT(test case).PERFORMANCE_AVERAGE_PROCESS_KINDsets the same for the performance outputs. The default isAREA(code).MIXEDOUT_COEFF= (relaxation factor, tolerance, maximum iterations) of the Newton method for the mixed-out average. The default is (1.0, 1.0E-05, 15) (code).AVERAGE_MACH_LIMIT(default 0.03): when the Mach number normal to the boundary is below this value, theMASSFLUXandMIXEDOUTaverages fall back to theAREAaverage. This matters at the start of a run, when the flow is still slow. Below this limit SU2 also skips the Fourier part of the Giles condition (code).
Span-wise sections (3D)
SU2 builds the span-wise sections as follows (code):
SPANWISE_KIND= AUTOMATIC(default): SU2 counts the mesh points along the span where the inlet or outlet meets the periodic boundary, and makes one section per point. This suits meshes with the same span-wise point distribution on both sides of an interface (to be reviewed).SPANWISE_KIND= EQUISPACED: SU2 makesNUM_SPANWISE_SECTIONSsections of equal height between hub and shroud.- In 2D, SU2 always uses one section.
Ramps
Ramps help when the machine has a high pressure ratio or a high rotation speed (tutorial). A ramp approaches the final value from a prescribed start value, using the configured update interval and ramp length.
The ramp options (code):
RAMP_MOTION_FRAME= YESramps the rotation speed (z component ofROTATION_RATE) or, withSTEADY_TRANSLATION, the y component ofTRANSLATION_RATE.RAMP_OUTLET= YESramps the outlet value of GilesSTATIC_PRESSURE,STATIC_PRESSURE_1D,RADIAL_EQUILIBRIUMandMASS_FLOW_OUTLETboundaries. The Aachen tutorial text calls this optionRAMP_OUTLET_PRESSURE, but the option in the code isRAMP_OUTLET.RAMP_MOTION_FRAME_COEFFandRAMP_OUTLET_COEFF= (start value, update every N iterations, length of the ramp in iterations). The defaults are (100.0, 1.0, 1000.0) and (100000.0, 1.0, 1000.0). Always set them.
The test values are RAMP_MOTION_FRAME_COEFF= (0.0, 39.0, 500) and RAMP_OUTLET_COEFF= (140000.0, 150.0, 2000) (test case).
Limits of the ramps (code):
- In multizone runs, the ramp follows the outer iteration.
- The rotation ramp acts only when
MARKER_TURBOMACHINERYis set. - The outlet ramp does not work on
MARKER_RIEMANNoutlets. SU2 stops with “Outlet pressure ramp only implemented for NRBC”. - SU2 does not set up these two ramps in discrete adjoint runs.
RAMP_MUSCL is a different ramp: it blends from first-order to second-order space discretization. The 2D stage uses RAMP_MUSCL_COEFF= (0.0, 1.0, 20.0) = (start iteration, update every N iterations, ramp length) (test case).
Initialization and numerics
- Use
INIT_OPTION= TD_CONDITIONSwithFREESTREAM_PRESSUREandFREESTREAM_TEMPERATUREnear the inlet state, and a smallMACH_NUMBER(0.05 in the test cases) (test case). The defaultINIT_OPTION= REYNOLDSrecomputes the pressure from the Reynolds number (code), which does not suit internal flows (advice). Check the initial state that SU2 prints before the first iteration (tutorial). - The test cases use
ROEwithMUSCL_FLOW= YES(2D stage, transonic stator) orJST(Aachen). Their CFL numbers range from 2 (Aachen) to 50 (transonic stator) (test case). - SU2 applies the Giles and the averaged Riemann conditions only on the finest mesh (code). Most turbomachinery test cases run without multigrid; the Aachen restart test uses
MGLEVEL= 1(test case). If a run with multigrid is unstable, tryMGLEVEL= 0(to be reviewed). - Wall functions (
MARKER_WALL_FUNCTIONS) let the Aachen tutorial run on a coarse mesh with high y+ (tutorial).
Performance outputs
- Add
TURBO_PERFtoHISTORY_OUTPUTto write the performance values to the history file (test case). - Values per row carry the row number, starting at 1:
MassFlowIn_1,MassFlowOut_1,TotalPressureIn_1,AbsFlowAngleOut_1,KineticEnergyLoss_1,TotPressureLoss_1, … (code). - Values for the whole machine:
TotalStaticEfficiency,TotalTotalEfficiency,PressureRatioTS,PressureRatioTT,EulerianWork,EntropyGeneration,KineticEnergyLoss_Stage,TotPressureLoss_Stage(code). - In multizone runs, these fields belong to the last zone. Write them with the index of the last zone, for example
TotalStaticEfficiency[1]for two zones (test case). - Every 100 iterations, SU2 prints a table of the performance of each row and of the machine (code).
- SU2 writes span-wise profiles (
inflow_spanwise_thermodynamic_values*.dat,outflow_spanwise_kinematic_values*.dat, …) and mixing-plane interpolation details into a folder namedTURBOMACHINERY(code). SU2 does not create this folder. Create it in the run directory before you start, otherwise these files are not written (to be reviewed). WRT_ZONE_HIST= YESwrites one history file per zone (tutorial).
The full list of fields is on the output fields page. The options are on the option reference page.
Check convergence and results
- Stop criterion. Use residuals, for example
CONV_FIELD= RMS_ENERGY[0]withCONV_RESIDUAL_MINVAL(test case). SU2 checks convergence only on residual fields and coefficient fields. The turbomachinery performance fields are neither, so do not put them inCONV_FIELD. TheMARKER_ANALYZEfields, such asSURFACE_MASSFLOW, are coefficients and work with the Cauchy criterion (CONV_CAUCHY_ELEMS,CONV_CAUCHY_EPS) (code). - Residuals. Watch the residuals of every zone (
RMS_DENSITY[0],RMS_DENSITY[1], …) and the coupling residuals (AVG_BGS_RES[0], …) (test case). - Mass flow.
MassFlowIn_nandMassFlowOut_nof each row should agree, and the outlet of one row should match the inlet of the next (advice). - Performance. Efficiency and pressure ratio should no longer change over the last few hundred iterations (advice).
- Span-wise profiles. Compare the profiles in the
TURBOMACHINERYfolder with the values you imposed, for example the outlet pressure (advice). - Ramps. If you used ramps, run well past the end of the ramp before you read the results (advice).
See Solver Setup for the convergence options.
Common problems
| Symptom | Likely cause | What to try |
|---|---|---|
| SU2 stops: “Giles Boundary conditions can only be used with turbomachinery markers”. | MARKER_TURBOMACHINERY is missing (code). |
Add the inlet and outlet markers of every zone. |
| SU2 stops: “Insufficient TURBO_PERF_KIND options specified with turbomachinery markers”. | There are fewer TURBO_PERF_KIND entries than zones (code). |
Give one entry per zone. Do the same for TURBOMACHINERY_KIND. |
| SU2 stops: “Outlet pressure ramp only implemented for NRBC”. | RAMP_OUTLET= YES with a MARKER_RIEMANN static-pressure outlet (code). |
Use a Giles outlet (NRBC means non-reflecting boundary condition), or switch the ramp off. |
| SU2 stops: “Invalid Riemann input!” | A Riemann kind that this boundary does not support (code). | Check the lists in Inlet and outlet boundaries. |
| The run diverges in the first iterations. | A large pressure ratio or a high rotation speed at start-up (tutorial). | Use RAMP_OUTLET and RAMP_MOTION_FRAME, lower CFL_NUMBER, start first order and use RAMP_MUSCL (advice, to be reviewed). |
| The flow near hub or shroud is unstable in 3D with Giles. | Strong span-wise gradients at the endwalls (advice, to be reviewed). | Lower GILES_EXTRA_RELAXFACTOR and the average relaxation factor of the Giles markers, as in the Aachen case (0.05 and 0.3) (test case). |
| Efficiency or mass flow look wrong in the first iterations. | The flow is slow, so the averages use the area average (code). | Wait until the flow develops. Check AVERAGE_MACH_LIMIT. |
| The ramp has no effect. | A discrete adjoint run, or no MARKER_TURBOMACHINERY for the rotation ramp, or the machine axis is not z (code). |
Run the direct solver, with turbomachinery markers and the z-axis as machine axis. |
| Wrong or missing span-wise sections, or a crash while SU2 sets up the turbomachinery boundaries. | The periodic pairs are not in zone order, or the mesh has no matching span-wise points for AUTOMATIC (code, to be reviewed). |
Order MARKER_PERIODIC by zone. Try SPANWISE_KIND= EQUISPACED. |
No span-wise .dat files. |
The TURBOMACHINERY folder does not exist (code). |
Create it in the run directory. |
| Reverse flow at the outlet. | The outlet is too close to the blade, or the outlet pressure is too high (advice, to be reviewed). | Move the outlet downstream. Check the outlet pressure value. |
Related tutorials and test cases
Tutorials:
- Aachen turbine stage with mixing plane: 3D, three rows, Giles boundaries, ramps, wall functions, performance outputs.
- Non-ideal compressible flows with physics-informed neural networks: uses Giles boundaries and an outlet ramp on a nozzle.
Test cases (SU2 repository):
- turbomachinery/axial_stage_2D: 2D stage, mixing plane, translating row.
- turbomachinery/Aachen_turbine: 3D, three rows, rotating frame, wall functions.
- turbomachinery/APU_turbocharger: radial turbine, rotation ramp.
- turbomachinery/multi_interface: one frozen-rotor and one mixing-plane interface.
- turbomachinery/transonic_stator_2D: single row, Peng-Robinson gas, Giles boundaries with
SPATIAL_FOURIER= YES. - disc_adj_turbomachinery: discrete adjoint of a stator and of a stage, with the objectives
TOTAL_PRESSURE_LOSSandENTROPY_GENERATION.
User guide pages: Basics of Multi-Zone Computations, Markers and Boundary Conditions, Solver Setup, History and Solution Output, Setup Guide: Non-Ideal Compressible Flows.
Source review: 22 October 2026, against SU2 docs_site at 41ea6a219a. See the review scope and outstanding validation. Setup recommendations remain draft where indicated.