flow360.BETDisk#

class BETDisk[source]#

Bases: MultiConstructorBaseModel

BETDisk class for defining the Blade Element Theory (BET) model inputs. For detailed information on the parameters, please refer to the BET knowledge Base. To generate the sectional polars the BET translators can be used which are outlined here with best-practices for the sectional polars inputs available here. A case study of the XV-15 rotor using the steady BET Disk method is available in Case Studies. Because a transient BET Line simulation is simply a time-accurate version of a steady-state BET Disk simulation, most of the parameters below are applicable to both methods.

Note

Cylinder.center, Cylinder.axis, Cylinder.outer_radius, and Cylinder.height are taken as the rotation center, rotation axis, radius, and thickness of the BETDisk, respectively.

Example

>>> fl.BETDisk(
...    entities=[fl.Cylinder(...)],
...    rotation_direction_rule="leftHand",
...    number_of_blades=3,
...    omega=rpm * fl.u.rpm,
...    chord_ref=14 * fl.u.inch,
...    n_loading_nodes=20,
...    mach_numbers=[0],
...    reynolds_numbers=[1000000],
...    twists=[fl.BETDiskTwist(...), ...],
...    chords=[fl.BETDiskChord(...), ...],
...    alphas=[-2,0,2] * fl.u.deg,
...    sectional_radiuses=[13.5, 25.5] * fl.u.inch,
...    sectional_polars=[fl.BETDiskSectionalPolar(...), ...]
... )

name: str | None = 'BET disk'#

Name of the BETDisk model.

type: Literal['BETDisk'] = 'BETDisk'#
type_name: Literal['BETDisk'] = 'BETDisk'#
entities: EntityList[Cylinder] [Required] (alias 'volumes')#
rotation_direction_rule: Literal['leftHand', 'rightHand'] = 'rightHand'#

The rule for rotation direction and thrust direction, β€œrightHand” or β€œleftHand”.

number_of_blades: Annotated[int, Strict(strict=True)] [Required]#

Number of blades to model.

Constraints:
  • gt = 0

  • le = 10

  • strict = True

omega: Annotated[_Constrained, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] [Required]#

Rotating speed.

Constraints:
  • func = <function _dimensioned_type_serializer at 0x70391099c040>

  • return_type = PydanticUndefined

  • when_used = always

chord_ref: Annotated[_Constrained, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] [Required]#

Dimensional reference chord used to compute sectional blade loadings.

Constraints:
  • func = <function _dimensioned_type_serializer at 0x70391099c040>

  • return_type = PydanticUndefined

  • when_used = always

n_loading_nodes: Annotated[int, Strict(strict=True)] [Required]#

Number of nodes used to compute the sectional thrust and torque coefficients \(C_t\) and \(C_q\), defined in Example: BET Loading Output CSV File.

Constraints:
  • gt = 0

  • le = 1000

  • strict = True

blade_line_chord: Annotated[_Constrained, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] = unyt_quantity(0, 'm')#

Dimensional chord to use if performing an unsteady BET Line simulation. Default of 0.0 is an indication to run a steady BET Disk simulation.

Constraints:
  • func = <function _dimensioned_type_serializer at 0x70391099c040>

  • return_type = PydanticUndefined

  • when_used = always

initial_blade_direction: Axis | None = None#

Orientation of the first blade in the BET model. Must be specified if performing an unsteady BET Line simulation.

tip_gap: Literal['inf'] | Annotated[_Constrained, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] = 'inf'#

Dimensional distance between blade tip and solid bodies to define a tip loss factor.

mach_numbers: List[Annotated[float, Ge(ge=0)]] [Required]#

Mach numbers associated with airfoil polars provided in BETDiskSectionalPolar.

reynolds_numbers: List[Annotated[float, Gt(gt=0)]] [Required]#

Reynolds numbers associated with the airfoil polars provided in BETDiskSectionalPolar.

alphas: Annotated[_VectorType, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] [Required]#

Alphas associated with airfoil polars provided in BETDiskSectionalPolar.

Constraints:
  • func = <function _dimensioned_type_serializer at 0x70391099c040>

  • return_type = PydanticUndefined

  • when_used = always

twists: List[BETDiskTwist] [Required]#

A list of BETDiskTwist objects specifying the twist in degrees as a function of radial location.

chords: List[BETDiskChord] [Required]#

A list of BETDiskChord objects specifying the blade chord as a function of the radial location.

sectional_polars: List[BETDiskSectionalPolar] [Required]#

A list of BETDiskSectionalPolar objects for every radial location specified in sectional_radiuses.

sectional_radiuses: Annotated[_VectorType, PlainSerializer(func=_dimensioned_type_serializer, return_type=PydanticUndefined, when_used=always)] [Required]#

A list of the radial locations in grid units at which \(C_l\) and \(C_d\) are specified in BETDiskSectionalPolar.

Constraints:
  • func = <function _dimensioned_type_serializer at 0x70391099c040>

  • return_type = PydanticUndefined

  • when_used = always

classmethod from_c81(file, rotation_direction_rule, omega, chord_ref, n_loading_nodes, entities, number_of_blades, length_unit, angle_unit, initial_blade_direction=None, blade_line_chord=unyt_quantity(0, 'm'), name='BET disk')[source]#

Constructs a :class: BETDisk instance from a given C81 file and additional inputs.

Parameters:
  • file (C81File) – C81File class instance containing information about the C81 file.

  • rotation_direction_rule (str) – Rule for rotation direction and thrust direction.

  • omega (AngularVelocityType.NonNegative) – Rotating speed of the propeller.

  • chord_ref (LengthType.Positive) – Dimensional reference cord used to compute sectional blade loadings.

  • n_loading_nodes (Int) – Number of nodes used to compute sectional thrust and torque coefficients.

  • entities (EntityList[Cylinder]) – List of Cylinder entities used for defining the BET volumes.

  • number_of_blades (Int) – Number of blades to model.

  • length_unit (LengthType.NonNegative) – Length unit of the geometry/mesh file.

  • angle_unit (AngleType) – Angle unit used for AngleType BETDisk parameters.

  • initial_blade_direction (Axis, optional) – Orientation of the first blade in BET model. Must be specified for unsteady BET simulation.

  • blade_line_chord (LengthType.NonNegative) – Dimensional chord used in unsteady BET simulation. Defaults to 0 * u.m.

  • name (str)

Returns:

An instance of BETDisk completed with given inputs.

Return type:

BETDisk

Examples

Create a BET disk with an C81 file.

>>> param = fl.BETDisk.from_xrotor(
...     file=fl.C81File(file_path="c81_xv15.csv")),
...     rotation_direction_rule="leftHand",
...     omega=0.0046 * fl.u.deg / fl.u.s,
...     chord_ref=14 * fl.u.m,
...     n_loading_nodes=20,
...     entities=bet_cylinder,
...     angle_unit=fl.u.deg,
...     number_of_blades=3,
...     length_unit=fl.u.m,
... )
classmethod from_dfdc(file, rotation_direction_rule, omega, chord_ref, n_loading_nodes, entities, length_unit, angle_unit, initial_blade_direction=None, blade_line_chord=unyt_quantity(0, 'm'), name='BET disk')[source]#

Constructs a :class: BETDisk instance from a given DFDC file and additional inputs.

Parameters:
  • file (DFDCFile) – DFDCFile class instance containing information about the DFDC file.

  • rotation_direction_rule (str) – Rule for rotation direction and thrust direction.

  • omega (AngularVelocityType.NonNegative) – Rotating speed of the propeller.

  • chord_ref (LengthType.Positive) – Dimensional reference cord used to compute sectional blade loadings.

  • n_loading_nodes (Int) – Number of nodes used to compute sectional thrust and torque coefficients.

  • entities (EntityList[Cylinder]) – List of Cylinder entities used for defining the BET volumes.

  • length_unit (LengthType.NonNegative) – Length unit used for LengthType BETDisk parameters.

  • angle_unit (AngleType) – Angle unit used for AngleType BETDisk parameters.

  • initial_blade_direction (Axis, optional) – Orientation of the first blade in BET model. Must be specified for unsteady BET simulation.

  • blade_line_chord (LengthType.NonNegative) – Dimensional chord used in unsteady BET simulation. Defaults to 0 * u.m.

  • name (str)

Returns:

An instance of BETDisk completed with given inputs.

Return type:

BETDisk

Examples

Create a BET disk with a DFDC file.

>>> param = fl.BETDisk.from_dfdc(
...     file=fl.DFDCFile(file_path="dfdc_xv15.case")),
...     rotation_direction_rule="leftHand",
...     omega=0.0046 * fl.u.deg / fl.u.s,
...     chord_ref=14 * fl.u.m,
...     n_loading_nodes=20,
...     entities=bet_cylinder,
...     length_unit=fl.u.m,
...     angle_unit=fl.u.deg,
... )
classmethod from_xfoil(file, rotation_direction_rule, omega, chord_ref, n_loading_nodes, entities, length_unit, angle_unit, number_of_blades, initial_blade_direction, blade_line_chord=unyt_quantity(0, 'm'), name='BET disk')[source]#

Constructs a :class: BETDisk instance from a given XROTOR file and additional inputs.

Parameters:
  • file (XFOILFile) – XFOILFile class instance containing information about the XFOIL file.

  • rotation_direction_rule (str) – Rule for rotation direction and thrust direction.

  • omega (AngularVelocityType.NonNegative) – Rotating speed of the propeller.

  • chord_ref (LengthType.Positive) – Dimensional reference cord used to compute sectional blade loadings.

  • n_loading_nodes (Int) – Number of nodes used to compute sectional thrust and torque coefficients.

  • entities (EntityList[Cylinder]) – List of Cylinder entities used for defining the BET volumes.

  • length_unit (LengthType.NonNegative) – Length unit used for LengthType BETDisk parameters.

  • angle_unit (AngleType) – Angle unit used for AngleType BETDisk parameters.

  • number_of_blades (Int) – Number of blades to model.

  • initial_blade_direction (Axis, optional) – Orientation of the first blade in BET model. Must be specified for unsteady BET simulation.

  • blade_line_chord (LengthType.NonNegative) – Dimensional chord used in unsteady BET simulation. Defaults to 0 * u.m.

  • name (str)

Returns:

An instance of BETDisk completed with given inputs.

Return type:

BETDisk

Examples

Create a BET disk with an XFOIL file.

>>> param = fl.BETDisk.from_xfoil(
...     file=fl.XFOILFile(file_path=("xfoil_xv15.csv")),
...     rotation_direction_rule="leftHand",
...     initial_blade_direction=[1, 0, 0],
...     blade_line_chord=1 * fl.u.m,
...     omega=0.0046 * fl.u.deg / fl.u.s,
...     chord_ref=14 * fl.u.m,
...     n_loading_nodes=20,
...     entities=bet_cylinder_imperial,
...     length_unit=fl.u.m,
...     angle_unit=fl.u.deg,
...     number_of_blades=3,
)
classmethod from_xrotor(file, rotation_direction_rule, omega, chord_ref, n_loading_nodes, entities, length_unit, angle_unit, initial_blade_direction=None, blade_line_chord=unyt_quantity(0, 'm'), name='BET disk')[source]#

Constructs a :class: BETDisk instance from a given XROTOR file and additional inputs.

Parameters:
  • file (XROTORFile) – XROTORFile class instance containing information about the XROTOR file.

  • rotation_direction_rule (str) – Rule for rotation direction and thrust direction.

  • omega (AngularVelocityType.NonNegative) – Rotating speed of the propeller.

  • chord_ref (LengthType.Positive) – Dimensional reference cord used to compute sectional blade loadings.

  • n_loading_nodes (Int) – Number of nodes used to compute sectional thrust and torque coefficients.

  • entities (EntityList[Cylinder]) – List of Cylinder entities used for defining the BET volumes.

  • length_unit (LengthType.NonNegative) – Length unit used for LengthType BETDisk parameters.

  • angle_unit (AngleType) – Angle unit used for AngleType BETDisk parameters.

  • initial_blade_direction (Axis, optional) – Orientation of the first blade in BET model. Must be specified for unsteady BET simulation.

  • blade_line_chord (LengthType.NonNegative) – Dimensional chord used in unsteady BET simulation. Defaults to 0 * u.m.

  • name (str)

Returns:

An instance of BETDisk completed with given inputs.

Return type:

BETDisk

Examples

Create a BET disk with an XROTOR file.

>>> param = fl.BETDisk.from_xrotor(
...     file=fl.XROTORFile(file_path="xrotor_xv15.xrotor")),
...     rotation_direction_rule="leftHand",
...     omega=0.0046 * fl.u.deg / fl.u.s,
...     chord_ref=14 * fl.u.m,
...     n_loading_nodes=20,
...     entities=bet_cylinder,
...     angle_unit=fl.u.deg,
...     length_unit=fl.u.m,
... )