Rotation model#
The Rotation model in Flow360 handles rotating components in two fundamentally different ways: through physical mesh rotation in unsteady simulations or through reference frame approaches (MRF) in steady simulations.
The Rotation model provides different approaches to simulate rotating components:
Unsteady Simulation with Physical Mesh Rotation: The mesh actually rotates over time, capturing time-dependent effects such as blade passing. This requires time-accurate simulation.
Steady Simulation with Moving Reference Frame (MRF): The mesh remains fixed while rotational forces are added to the momentum equations in specified regions. This “freezes” the rotor in one position while approximating rotational effects, allowing for steady-state solutions.
Unsteady Simulation with Moving Reference Frame (MRF): The rotational forces are added to the momentum equations in an unsteady simulation, allowing for lower computational cost.
Important: Physical mesh rotation is the default approach for unsteady cases, while MRF is the default for steady ones.
Available Parameters#
Parameter |
Description |
Applicable |
|---|---|---|
Rotation |
Rotation specification method |
always |
Angular velocity |
Constant rotation rate specification |
when Rotation is |
Angle expression |
Time-dependent rotation angle formula |
when Rotation is |
From user defined dynamics |
Rotation controlled by user dynamics model |
when Rotation is |
Transient MRF |
Choose to use MRF in transient simulations |
when Time is |
Assigned parent zones |
Optional parent rotating entity for nested rotations |
always |
Assigned zones |
Volumes that rotate (must have center and axis defined) |
always |
Detailed Descriptions#
Rotation#
The angular velocity or rotation angle as a function of time.
Default:
Angular velocityOptions:
Angular velocity: Constant rotation rateAngle expression: Time-dependent rotation angle formulaFrom user defined dynamics: Rotation controlled by user dynamics
Note: The appropriate option depends on both your simulation type (steady or unsteady) and your modeling requirements.
Angular velocity#
Defines a constant angular velocity for the rotating domain.
Example:
300 RPMor2 rad/s
Notes:
Can be specified in various angular velocity units such as rad/s or rpm.
Used in steady simulations with MRF to specify the rotational speed of the reference frame.
Used in unsteady simulations to specify a constant physical rotation rate.
Angle expression#
Defines the rotation angle as a function of time.
Example:
0.1*sin(t)
Notes:
The result of the expression is assumed to be in radians.
Allows for periodic or complex rotation patterns.
Variable ‘t’ represents time.
Can only be used in unsteady/time-accurate simulations with physical mesh rotation.
Incompatible with steady-state MRF/SRF approaches.
From user defined dynamics#
Sets the rotation to be controlled by user defined dynamics.
Default:
FromUserDefinedDynamics
Notes:
Requires setting up a UserDefinedDynamics model in the simulation parameters.
Can only be used in unsteady/time-accurate simulations with physical mesh rotation.
Incompatible with steady-state MRF/SRF approaches.
Transient MRF#
Flag to specify whether the non-inertial reference frame model is to be used for the rotation model.
Default: Unselected
Example: Selected
Note: Controls whether rotation is handled via reference frame transformation (MRF) or physical mesh rotation during unsteady simulations.
Parent Volume#
The parent rotating entity in a nested rotation case.
Default: None
Notes:
Used for complex systems with multiple rotating components.
The entity should be Cylinder or GenericVolume type.
Child rotation is relative to the parent rotation.
Works in both steady MRF/SRF and unsteady approaches.
Assigned zones#
The entity list for the Rotation model. The entity should be Cylinder or GenericVolume type.
Required
Notes:
Each entity must have
centerandaxisproperties defined.The center defines the point through which the rotation axis passes.
The axis defines the direction of the rotation axis.
💡 Tips
For All Rotation Simulations#
Define rotation axis and center consistently with your coordinate system
The axis vector does not need to be normalized; the direction is what matters
For nested rotations, define the outermost rotation first, then the inner rotations
For Steady Simulations with MRF#
Set
Rotating Reference Frame Model = TrueUse
Angular Velocityfor rotation specificationCreate clean interfaces between rotating and stationary zones
Position interfaces in regions with primarily axial flow when possible
Avoid placing interfaces in regions with strong radial flow gradients
MRF is a good approximation for most propeller and turbomachinery applications
Consider using a frozen rotor approach (MRF) for initial convergence
For high-fidelity results, you may need a larger sliding zone in the wake region
For Steady Simulations with SRF#
Use SRF when the entire domain needs to rotate (e.g., for simulating maneuvers)
Be careful with boundary condition velocity types:
Use “relative” velocity type for rotating surfaces
Use “absolute” velocity type for fixed surfaces
SRF is generally preferred over MRF for simulating maneuvers
For Unsteady Simulations with Physical Mesh Rotation#
Any of the three rotation specifications can be used (
Angular Velocity,Angle ExpressionorFrom User Defined Dynamics)Ensure time step size is appropriate for the rotation rate
For periodic motion using
Angle Expression:Keep the expression as simple as possible for better performance
Test with simple rotations first before implementing complex motion
Ensure adequate mesh resolution in the rotating region
❓ Frequently Asked Questions
What’s the difference between MRF, SRF, and physical mesh rotation?
MRF (Multiple Reference Frame) is a steady-state approximation that adds rotational forces to specific volume zones while keeping the mesh fixed. SRF (Single Reference Frame) applies rotation to the entire simulation domain. Physical mesh rotation actually moves the mesh over time to simulate rotation and requires unsteady simulation. MRF and SRF are computationally efficient but cannot capture inherently unsteady effects like blade passing.
When should I use MRF vs. SRF?
Use MRF when you have distinct rotating and stationary regions, such as a propeller or turbomachinery stage with a fixed casing. Use SRF when the entire domain is rotating or when simulating maneuvers like pitch, roll, or yaw.
When should I use MRF/SRF vs. physical mesh rotation?
Physical Mesh Rotation (Rotational Volume Zone):
The most accurate of all modeling options for rotating components
Best for capturing time-dependent effects, blade-passing phenomena, wake interactions, and acoustic analysis
Most resource-intensive approach, requiring accurate mesh of the propeller geometry
Requires relatively small time steps to accurately capture the propeller’s forces
Needs extended time spans to sufficiently develop the propeller’s wake far downstream
Allows for complex cyclical motions through nested rotational volume zones
Multiple Reference Frame (MRF):
Efficient for steady-state simulations where time-averaged performance is your primary interest (thrust, torque, efficiency)
Computationally advantageous since it uses the steady-state flow solver
The formulation is ONLY exact when the flow field is rotationally invariant on the interface
Validity decreases when there is significant circumferential variation in the flow field
May produce non-physical behavior across interfaces such as discontinuous rotor wake
For high-fidelity results, requires a larger sliding zone in the wake region than unsteady simulation
Recommended for steady simulations of rotors, turbomachinery, and wind turbines when detailed wake dynamics aren’t critical
Single Reference Frame (SRF):
Best for simulating maneuvers (pitch/roll/yaw) where the entire simulation domain rotates
Simpler than MRF when you don’t have distinct stationary and rotating regions
Requires careful handling of boundary condition velocity types (relative vs. absolute)
Less suitable than MRF for cases with clear rotating and non-rotating domains
As a general guideline, use MRF/SRF when computational efficiency is a priority and time-averaged results are sufficient. Use physical mesh rotation when accurate prediction of time-dependent phenomena is essential, despite the increased computational cost.
When should I use Angular Velocity vs. Angle Expression?
Use Angular Velocity for constant rotation rate in either steady MRF/SRF simulations or unsteady physical rotation. Use Angle Expression only for unsteady simulations with physical mesh rotation when you need time-varying rotation rates, such as oscillating motion or accelerating/decelerating components.
How do nested rotations work?
Nested rotations allow one rotating component to be contained within another. The child component’s rotation is relative to its parent. This is useful for modeling complex machinery like planetary gears or multi-stage turbomachinery. Works in both MRF/SRF and physical rotation approaches.
How do I determine the correct rotation direction?
The rotation follows the right-hand rule with respect to the axis vector. Point your right thumb along the axis vector, and your fingers curl in the direction of positive rotation.
Can I change rotation speed during a simulation?
In steady MRF/SRF simulations, no - the rotation rate is fixed. In unsteady simulations with physical mesh rotation, yes - by using Angle Expression with time dependency or by using User Defined Dynamics.
Do I need to place the rotation axis at the origin?
No, you can place the rotation axis anywhere by specifying the center and axis properties of the rotating entity.
What happens at interfaces between rotating and non-rotating zones in MRF?
Flow variables are transformed between reference frames at these interfaces. For best results, these interfaces should be positioned in regions with minimal flow variation. The MRF formulation is only exact when the flow field is rotationally invariant on the interface.
What’s the difference in boundary condition handling between MRF and SRF?
In SRF, you need to specify whether boundary conditions use “relative” velocity (for rotating surfaces) or “absolute” velocity (for fixed surfaces). In MRF, this distinction is handled by which volume zone the boundary belongs to.
🔄 Common Applications
Propeller and Rotor Analysis#
Steady MRF: Performance prediction (thrust, torque, efficiency)
Steady SRF: Simulations involving maneuvers (e.g., tilting rotors)
Unsteady Physical Rotation: Blade-passing effects, acoustic analysis
Turbomachinery#
Steady MRF: Performance metrics, stage analysis with multiple reference frames
Unsteady Physical Rotation: Rotor-stator interactions, transient surge/stall studies
Maneuvers and Vehicle Dynamics#
Steady SRF: Aircraft in steady roll, pitch, or yaw
Unsteady Physical Rotation: Complex maneuver sequences with varying motion rates
Mixing Equipment#
Steady MRF: Steady-state mixing patterns, time-averaged mixing efficiency
Unsteady Physical Rotation: Transient mixing dynamics, time-dependent behavior
🐍 Python Example Usage
Below is an example of how to configure Rotation models using the Flow360 Python API:
# Example (for reference only, not included in GUI documentation)
# Steady MRF rotation example
mrf_volume = volume_mesh["rotor"]
mrf_volume.center = (0, 0, 0) * u.m
mrf_volume.axis = (1, 0, 0)
mrf_rotation = fl.Rotation(
name="steadyRotor",
volumes=[mrf_volume],
spec=fl.AngularVelocity(1200 * u.rpm),
rotating_reference_frame_model=True # Required for MRF
)
# Steady SRF example for aircraft in roll
srf_rotation = fl.Rotation(
name="aircraftRoll",
volumes=[volume_mesh["entire_domain"]],
spec=fl.AngularVelocity(5 * u.deg / u.s),
# SRF configuration would be specified here
)
# Unsteady physical rotation example
unsteady_volume = volume_mesh["propeller"]
unsteady_volume.center = (0, 0, 0) * u.m
unsteady_volume.axis = (1, 0, 0)
# Constant rotation rate
constant_rotation = fl.Rotation(
name="constantSpeedPropeller",
volumes=[unsteady_volume],
spec=fl.AngularVelocity(1200 * u.rpm)
)
# Time-varying rotation angle
oscillating_rotation = fl.Rotation(
name="oscillatingPropeller",
volumes=[unsteady_volume],
spec=fl.AngleExpression("0.5*sin(2*pi*t)")
)
# Nested rotation example
outer_volume = volume_mesh["outer"]
outer_volume.center = (-1, 0, 0) * u.m
outer_volume.axis = (0, 1, 0)
inner_volume = volume_mesh["inner"]
inner_volume.center = (0, 0, 0) * u.m
inner_volume.axis = (0, 1, 0)
outer_rotation = fl.Rotation(
name="outerRotation",
volumes=[outer_volume],
spec=fl.AngularVelocity(10 * u.rad / u.s)
)
inner_rotation = fl.Rotation(
name="innerRotation",
volumes=[inner_volume],
spec=fl.AngularVelocity(5 * u.rad / u.s),
parent_volume=outer_volume # Inner rotation nested in outer rotation
)