Transition model#
The transition model determines how and when the flow transitions from laminar to turbulent within the simulation. It enables accurate prediction of laminar-turbulent transition effects, which are critical for correctly modeling aerodynamic performance, especially for flows at moderate Reynolds numbers where transition location significantly impacts drag prediction.
Available Parameters#
Parameter |
Description |
|---|---|
Type |
Transition model selection (AFT or None) |
Turbulence intensity percent |
Freestream turbulence intensity |
NCrit |
Critical amplification factor |
Absolute tolerance |
Convergence criteria for transition equations |
Relative tolerance |
Relative residual reduction for unsteady cases |
Trip regions |
Regions forcing boundary layer transition |
Order of accuracy |
Spatial discretization order (1st or 2nd) |
Equation evaluation frequency |
Update frequency for transition equations |
Linear solver - max iterations |
Maximum iterations for linear solver |
Update Jacobian frequency |
Frequency of Jacobian matrix updates |
Max force jacobian update physical pseudo steps |
Controls Jacobian matrix update criteria |
CFL multiplier |
Stability factor applied to CFL |
Reconstruction gradient limiter |
Limiter strength for stability |
Detailed Descriptions#
Type#
The type of transition modeling approach used in the simulation.
Options:
AmplificationFactorTransport: Gamma-ReTheta model with amplification factor transportNone: No transition modeling (fully turbulent)
Default:
None
Notes:
Must be used with a compatible turbulence model (SA or SST)
AmplificationFactorTransport is based on the Gamma-ReTheta model with enhancements
Applicable to a wide range of external and internal flows
Turbulence intensity percent#
The freestream turbulence intensity as a percentage.
Default: Not specified (requires either this or N_crit)
Example:
0.05(0.05%)Range:
0.03to2.5
Notes:
Critical parameter affecting transition onset
Must not be specified simultaneously with N_crit
Internally converted to N_crit via correlation
Lower values delay transition (typical wind tunnel:
0.05-0.1%)
N_crit#
The critical amplification factor for transition onset.
Default:
8.15(if neither N_crit nor turbulence intensity specified)Example:
9.0(for low disturbance environments)Range:
1.0to11.0
Notes:
Must not be specified simultaneously with turbulence intensity
Higher values delay transition (typical range:
7-9)Flight conditions typically
8-10Wind tunnel typically
5-8depending on qualityRelation to turbulence intensity: N_crit = -8.43 - 2.4ln(0.025tanh(Tu%/2.5))
Absolute tolerance#
The convergence threshold for transition equation residuals.
Default:
1.0e-7Example:
1.0e-6
Notes:
Controls convergence criteria for transition equations
Can typically be less strict than Navier-Stokes tolerance
May need to be relaxed for challenging transition cases
Relative tolerance#
Relative residual reduction target for the transition equations per physical step.
Default:
0.0Example:
1e-2
Notes:
Applicable only with unsteady simulations
For unsteady cases, typically set to 1e-2
Once residuals drop by prescribed order of magnitude (0.01 means 2 orders of magnitude), solver proceeds to next physical step
Trip regions#
Box regions where transition is forced to occur.
Default: None (natural transition)
Example: Box entities defining trip zones
Notes:
Useful for matching experimental trip strip locations
Can be used to force transition at specific locations
Multiple trip regions can be defined
Order of accuracy#
Spatial discretization order for transition variables.
Default:
2Example:
1
Notes:
1is more robust;2is more accurateIn most cases it should be kept at default value
Equation evaluation frequency#
Controls how often (in pseudo steps) transition equations are solved.
Default:
4Example:
1
Notes:
1provides the most robust convergenceHigher values can reduce time cost but may slow down convergence
Max force jacobian update physical pseudo steps#
If the current physical step is lower than this value, jacobian matrix will be updated at every pseudo step.
Default:
0(disabled)Example:
10
Notes:
Useful for cases where more stability is needed at the beginning
Linear solver - max iterations*#
Configures the maximum number of iterations solved at each pseudo-step for transition equations.
Default:
20Example:
40
Note:
Increasing the parameter can improve robustness at added cost per pseudo-step
Update Jacobian frequency#
Controls how often the Jacobian matrix for the transition equations is updated.
Default:
4(every 4 pseudo-steps)Example:
1(every iteration)
Notes:
Lower values improve robustness but increase cost
For challenging cases with complex transition, set to
1For well-behaved flows, 4 is typically sufficient
CFL multiplier#
Scaling factor applied to the CFL number for transition equations.
Default:
2.0Example:
1.0(for improved stability)
Notes:
Effective transition CFL = Time Stepping CFL × CFL Multiplier
Can often be higher than Navier-Stokes CFL for efficiency
Reduce for stability in complex transition scenarios
Reconstruction gradient limiter#
Controls the aggressiveness of gradient limiting for transition variables.
Default:
1.0Example:
0.5(more limiting for stability)
Notes:
Range: [
0.0,2.0]
0.0: Maximum limiting (first-order accuracy)
2.0: No limiting (can be unstable)Lower values improve stability but may affect transition prediction accuracy
💡 Tips
For accurate transition prediction:
Use a sufficiently refined mesh in the boundary layer (y+ < 1)
Ensure streamwise resolution is adequate near expected transition locations
Set appropriate turbulence intensity based on environment (flight vs. wind tunnel)
For flight conditions:
Use N_crit =
8-10or very low turbulence intensity (0.03-0.05%)Consider sensitivity studies for uncertain cases
For wind tunnel validation:
Match the facility turbulence intensity if known
For typical low-turbulence tunnels, use
0.05-0.1% or N_crit =7-8For conventional tunnels, use
0.1-0.5% or N_crit =5-7
For stability in challenging cases:
Reduce CFL multiplier to
1.0Set equation evaluation frequency to
1Update Jacobian every iteration (frequency =
1)Use gradient limiter values around
0.5-0.7
When comparing to experiments:
Consider using trip regions to match experimental trip strip locations
Be aware that surface quality/roughness affects transition but isn’t directly modeled
❓ Frequently Asked Questions
When should I use a transition model vs. fully turbulent simulation?
Use a transition model when the transition location significantly impacts the results, typically in: 1) Low to moderate Reynolds number flows (Re < 10^7), 2) Flows with extensive laminar regions, 3) Cases where drag prediction accuracy is critical, or 4) When comparing with experiments that show distinct transition effects. For very high Reynolds numbers where transition occurs near the leading edge, fully turbulent models are often sufficient.
How do I choose between turbulence intensity and N_crit parameters?
If you know the freestream turbulence intensity from experimental data, use that directly. If you’re modeling flight conditions or have experience with N_crit values, you can specify that instead. They are related by a correlation and cannot be specified simultaneously. For typical applications, turbulence intensity is more intuitive.
Why does my transition location not match experiment/expected results?
Transition prediction is highly sensitive to several factors: 1) Freestream turbulence intensity/N_crit setting, 2) Pressure gradient resolution, 3) Mesh resolution, 4) Surface roughness (not directly modeled), and 5) Freestream turbulence spectrum (not captured by intensity alone). Try adjusting turbulence intensity within a reasonable range or using trip regions to match known transition locations.
Can I use the transition model with any turbulence model?
The AmplificationFactorTransport transition model in Flow360 works with both Spalart-Allmaras and k-Omega SST turbulence models. It cannot be used if the turbulence model is set to “None.”
How does mesh resolution affect transition prediction?
Transition prediction requires: 1) Wall-normal resolution with y+ < 1, 2) Adequate streamwise resolution to capture the pressure gradient accurately, and 3) Smooth mesh growth rate in boundary layer regions. Insufficient resolution typically leads to premature transition prediction or failure to predict transition at all.
What is the difference between using trip regions and adjusting turbulence intensity?
Trip regions force transition at specific locations, mimicking experimental trip strips or roughness elements. Turbulence intensity affects when natural transition occurs throughout the entire domain based on local flow conditions. Use trip regions when you want to force transition at known locations, and use turbulence intensity to model the natural transition process.
🐍 Python Example Usage
Below are Python code examples showing how to configure transition models:
# Basic transition model with turbulence intensity
transition_model = fl.TransitionModelSolver(
type_name="AmplificationFactorTransport",
turbulence_intensity_percent=0.05,
absolute_tolerance=1e-7,
CFL_multiplier=2.0,
equation_evaluation_frequency=4
)
# Transition model with N_crit instead of turbulence intensity
transition_model = fl.TransitionModelSolver(
N_crit=9.0, # Higher values delay transition
absolute_tolerance=1e-7
)
# Transition model with custom linear solver settings
transition_model = fl.TransitionModelSolver(
turbulence_intensity_percent=0.1,
linear_solver=fl.LinearSolver(
max_iterations=30,
absolute_tolerance=1e-8
)
)
# Advanced transition model with trip regions
from flow360 import u
# Define trip box entities
trip_box1 = fl.Box(
name="LeadingEdgeTrip",
center=(0.05 * u.m, 0, 0),
size=(0.01 * u.m, 0.5 * u.m, 0.01 * u.m)
)
trip_box2 = fl.Box(
name="UpperSurfaceTrip",
center=(0.2 * u.m, 0.1 * u.m, 0),
size=(0.01 * u.m, 0.05 * u.m, 0.05 * u.m)
)
# Configure transition model with trip regions
transition_model = fl.TransitionModelSolver(
N_crit=8.15,
reconstruction_gradient_limiter=0.7,
update_jacobian_frequency=1,
equation_evaluation_frequency=1,
CFL_multiplier=1.0, # Reduced for stability
trip_regions=[trip_box1, trip_box2]
)
# Example usage in a simulation setup
simulation_params = fl.SimulationParams(
# Other simulation parameters...
models=[fl.Fluid(
transition_model=transition_model,
turbulence_model=fl.SpalartAllmaras() # Must be used with a compatible turbulence model
)]
)
# Submit to a project
project.submit(mesh_name="my_airfoil_mesh", simulation_params=simulation_params)