BETDisk#

Steady blade disk solver

To use the steady blade disk solver, the blade_line_chord needs to be set as 0, which is its default value if omitted.

Unsteady blade line solver

To use the unsteady blade line solver, blade_line_chord has to be a positive value and initial_blade_direction also needs to be set.

In the BETDisk volume model, except the blade_line_chord and initial_blade_direction, other parameters are necessary for both solvers. A case study on the XV-15 rotor using blade element theory can be found at XV15 BET Disk.

Note

  1. For users of XROTOR and DFDC, we have a translator script that will convert the XROTOR/DFDC inputs in Flow360 BET inputs.

Some input parameters related to BET solver in Flow360 are explained:

rotation_direction_rule#

leftHand or rightHand. It depends on the design of the rotor blades: whether the blades follow curl left hand rule or the curl right hand rule to generate positive thrust. The following 2 figures show the curl left hand rule and curl right hand rule. The fingers follow the spinning of the blades and the thumb points to the thrust direction. By default, it is rightHand.

omega#

The nondimensional rotating speed. It should be positive in most cases, which means the leading edge moves in front and the rotation direction of the blades in BET simulations is consistent with the curling fingers described in “rotationDirectionRule” to generate positive thrust. A negative “omega” means the blades rotate in a reverse direction, hence in an opposite direction to the curling fingers, where the trailing edge moves in front.

The following 4 pictures give some examples of different rotationDirectionRule and axisOfRotation with positive omega. The curved arrow follows the same direction in which rotor spins. The straight arrow points to the direction of thrust.

volume_entity.axis = (0,0,1)
fl.BETDisk(
    rotation_direction_rule="leftHand",
    omega=0.3 * fl.u.deg / fl.u.s,
    entities=[volume_entity]
)

volume_entity.axis = (0,0,-1)
fl.BETDisk(
    rotation_direction_rule="leftHand",
    omega=0.5 * fl.u.deg / fl.u.s,
    entities=[volume_entity]
)

volume_entity.axis = (0,0,1)
fl.BETDisk(
    rotation_direction_rule="rightHand",
    omega=0.5 * fl.u.deg / fl.u.s,
    entities=[volume_entity]
)

volume_entity.axis = (0,0,-1)
fl.BETDisk(
    rotation_direction_rule="rightHand",
    omega=0.5 * fl.u.deg / fl.u.s,
    entities=[volume_entity]
)

chords and twists#

The sampled radial distribution of chord length and geometric twist angle. The “twist” affects the local pitch angle. The “chords” affects the amount of lift and drag imposed on the blade (or fluid). For a radial location where chord=0, there is no lift or drag imposed. It should be noted that for any radial location within the given sampling range, the chord or twist is linearly interpolated between its two neighboring sampled data points. For any radial location beyond the given sampling range, the chord or twist is set to be the nearest sampled chord or twist, i.e. constant extrapolation. In the Flow360 python client, the chords and twists can be set up using BETDiskChord and BETDiskTwist, respectively. Here are 3 examples of the given “chords” and the corresponding radial distribution of chord length:

Example 1. The root of blade starts at r=20 with chord length=15. The chord shrinks to 10 linearly up to r=60. The chord keeps as 10 for the rest of blade. In this setting, the chord=0 for r in [0,20], there is no aerodynamic lift and drag imposed no matter what the twist angle it has, so this setting fits the rotor without hub.

chords = []
radial_loc_value_for_chord =[19.9999, 20, 60, 150]
radial_chords_value = [0, 15, 10, 10]
for radius, chord in zip(radial_loc_value_for_chord, radial_chords_value):
    betDiskChord = fl.BETDiskChord(radius=radius * fl.u.inch, chord=chord * fl.u.inch)
    chords.append(betDiskChord)
../../../_images/chords_distribution_1.svg

Example 2. The root of blade starts at r=0 with chord=0. The chord expands to 15 linearly up to r=20, then shrinks to 10 linearly up to r=60. The chord keeps as 10 for the rest of blade. This setting could be used for a mesh with the geometry of hub. Because the chord length changes gradually near the root region, there won’t be tip vortices in root region.

chords = []
radial_loc_value_for_chord =[0, 20, 60, 150]
radial_chords_value = [0, 15, 10, 10]
for radius, chord in zip(radial_loc_value_for_chord, radial_chords_value):
    betDiskChord = fl.BETDiskChord(radius=radius * fl.u.inch, chord=chord * fl.u.inch)
    chords.append(betDiskChord)
../../../_images/chords_distribution_2.svg

Example 3. This is an example of a wrong setting of chords, because the chord length at r=0 is not 0, so the local solidity is infinity, which is not realistic.

chords = []
radial_loc_value_for_chord =[20, 60, 150]
radial_chords_value = [15, 10, 10]
for radius, chord in zip(radial_loc_value_for_chord, radial_chords_value):
    betDiskChord = fl.BETDiskChord(radius=radius * fl.u.inch, chord=chord * fl.u.inch)
    chords.append(betDiskChord)
../../../_images/chords_distribution_3.svg

Note

The number of sampling data points in chords and twists doesn’t have to be the same. They are served as sampled data for interpolation of chord length and twist angle respectively and separately.

n_loading_nodes#

This parameter defines the number of loading nodes used to compute the sectional thrust and torque coefficients \(C_t\) and \(C_q\), defined in Example: BET Loading Output CSV File. The recommended value is 20 to ensure sufficient resolution of the sectional loading distributions.

blade_line_chord#

When the value of blade_line_chord is zero, a steady-state BET Disk simulation is performed. If non-zero, this value defines the nondimensional chord for unsteady BET Line simulations. The recommended value is 1-2x the physical mean aerodynamic chord (MAC) of the blade for an unsteady BET Line simulation.

tip_gap#

The tip_gap is the nondimensional distance between blade tips and peripheral geometry (e.g., duct, shroud, cowling, nacelle, etc.). The peripheral structures must be effective at reducing blade tip vortices as this parameter affects the tip loss effect. Being close to a fuselage or to another blade is not a cause to enable this parameter, because they won’t effectively reduce the tip loss. tip_gap = 0 means there is no tip loss effect in the solver. It is \(\infty\) (default) for open propellers.