1.7. XV-15 Rotor#

The XV-15 tiltotor aircraft is a commonly used test bed for propeller validation work. Its rotor geometry will be used to quickly run an isolated rotor simulation. This same geometry and additional simulation details are discussed further in a following tutorial.

1.7.1. Uploading the Mesh#

In order to run a rotating geometry, set up a mesh with two domains, an inner “rotational volume” and an outer “stationary volume”. The sliding interface between those two volumes needs to be a body of revolution (i.e., sphere, cylinder, etc.).

Inner rotational volume enclosing the XV-15 3-bladed prop

Fig. 1.7.1 Inner rotational volume enclosing the XV-15 3-bladed propeller#

For the purposes of this exercise, a pre-generated CGNS mesh will be used. This configuration has a blade pitch of 10°, targeting an ascent operating condition. The XV-15 mesh can be uploaded either through the Flow360 Web UI or through the Python API.

1.7.2. Case Inputs#

For this example, a case configuration json file is provided Click to download.

This simulation will be using the following operating conditions:

  • Airspeed = 5 m/s

  • Rotation rate = 600 RPM

  • Speed of sound = 340.2 m/s

  • Density = 1.225 kg/m3

  • Alpha = -90°, air coming down from above (i.e., an ascent case)

Other key considerations:

  • The reference Mach number is arbitrarily set to the tip Mach number of the blades

  • The simulation will run 3° per time step for 5 revolutions, hence 600 steps

Nondimensionalizing the above (see nondimensional inputs) and referencing the CFL and volumeZones guidelines yields the following flow conditions and timeStepping parameters in the case configuration file.

    "freestream" :
        "muRef" : 4.29279e-08,
        "Mach" : 1.46972e-02,
        "MachRef" : 0.70,
        "Temperature" : 288.15,
        "alphaAngle" : -90.0,
        "betaAngle" : 0.0
    "boundaries" : {
        "farField/farField" : { "type" : "Freestream" },
        "innerRotating/blade" : { "type" : "NoSlipWall" }
                "axisOfRotation" : [0,0,-1],
                "centerOfRotation" : [0,0,0],
                "omega" : 1.84691e-01
    "timeStepping" : {
      "timeStepSize" : 2.83500e-01,
      "physicalSteps" : 600,
      "maxPseudoSteps" : 35,
        "CFL" : {

1.7.3. Submit the Cases#

Using either the Web UI or the Python API, launch a new case referencing the mesh uploaded above and the case configuration file previously downloaded. The case takes about 3.5 to 4 minutes to run its 5 revolutions.

For a time-accurate case to be considered well-converged, it is recommended to reduce residuals by at least 2 orders of magnitude within each time step.

convergence of residuals

Fig. 1.7.2 Convergence plot showing more than 2 orders of magnitude decrease in residuals for each time step.#

The forces also seem to have stabilized after running for 5 revolutions.

convergence of forces

Fig. 1.7.3 Force history plot showing stabilization of the forces.#