@@ -748,6 +748,7 @@ class BETDiskCache(Flow360BaseModel):
748748 number_of_blades : Optional [pd .StrictInt ] = None
749749 initial_blade_direction : Optional [Axis ] = None
750750 blade_line_chord : Optional [LengthType .NonNegative ] = None
751+ collective_pitch : Optional [AngleType ] = None
751752
752753
753754class BETDisk (MultiConstructorBaseModel ):
@@ -819,6 +820,11 @@ class BETDisk(MultiConstructorBaseModel):
819820 + "Must be orthogonal to the rotation axis (Cylinder.axis). Only the direction is used—the "
820821 + "vector need not be unit length. Must be specified for unsteady BET Line (blade_line_chord > 0)." ,
821822 )
823+ collective_pitch : Optional [AngleType ] = pd .Field (
824+ None ,
825+ description = "Collective pitch angle applied as a uniform offset to all blade twist values. "
826+ + "Positive value increases the angle of attack at every radial station." ,
827+ )
822828 tip_gap : Union [Literal ["inf" ], LengthType .NonNegative ] = pd .Field (
823829 "inf" ,
824830 description = "Dimensional distance between blade tip and solid bodies to "
@@ -912,6 +918,7 @@ def check_bet_disk_3d_coefficients_in_polars(self):
912918 "number_of_blades" ,
913919 "entities" ,
914920 "initial_blade_direction" ,
921+ "collective_pitch" ,
915922 mode = "after" ,
916923 )
917924 @classmethod
@@ -1009,6 +1016,7 @@ def from_c81(
10091016 angle_unit : AngleType ,
10101017 initial_blade_direction : Optional [Axis ] = None ,
10111018 blade_line_chord : LengthType .NonNegative = 0 * u .m ,
1019+ collective_pitch : Optional [AngleType ] = None ,
10121020 name : str = "BET disk" ,
10131021 ):
10141022 """Constructs a :class: `BETDisk` instance from a given C81 file and additional inputs.
@@ -1038,6 +1046,8 @@ def from_c81(
10381046 Only direction matters (need not be a unit vector). Required for unsteady BET Line.
10391047 blade_line_chord: LengthType.NonNegative
10401048 Dimensional chord used in unsteady BET simulation. Defaults to ``0 * u.m``.
1049+ collective_pitch: AngleType, optional
1050+ Collective pitch angle applied as a uniform offset to all blade twist values.
10411051
10421052
10431053 Returns
@@ -1077,6 +1087,8 @@ def from_c81(
10771087 number_of_blades = number_of_blades ,
10781088 name = name ,
10791089 )
1090+ if collective_pitch is not None :
1091+ params ["collective_pitch" ] = collective_pitch
10801092
10811093 return cls (** params )
10821094
@@ -1095,6 +1107,7 @@ def from_dfdc(
10951107 angle_unit : AngleType ,
10961108 initial_blade_direction : Optional [Axis ] = None ,
10971109 blade_line_chord : LengthType .NonNegative = 0 * u .m ,
1110+ collective_pitch : Optional [AngleType ] = None ,
10981111 name : str = "BET disk" ,
10991112 ):
11001113 """Constructs a :class: `BETDisk` instance from a given DFDC file and additional inputs.
@@ -1122,6 +1135,8 @@ def from_dfdc(
11221135 Only direction matters (need not be a unit vector). Required for unsteady BET Line.
11231136 blade_line_chord: LengthType.NonNegative
11241137 Dimensional chord used in unsteady BET simulation. Defaults to ``0 * u.m``.
1138+ collective_pitch: AngleType, optional
1139+ Collective pitch angle applied as a uniform offset to all blade twist values.
11251140
11261141
11271142 Returns
@@ -1158,6 +1173,8 @@ def from_dfdc(
11581173 length_unit = length_unit ,
11591174 name = name ,
11601175 )
1176+ if collective_pitch is not None :
1177+ params ["collective_pitch" ] = collective_pitch
11611178
11621179 return cls (** params )
11631180
@@ -1177,6 +1194,7 @@ def from_xfoil(
11771194 number_of_blades : pd .StrictInt ,
11781195 initial_blade_direction : Optional [Axis ],
11791196 blade_line_chord : LengthType .NonNegative = 0 * u .m ,
1197+ collective_pitch : Optional [AngleType ] = None ,
11801198 name : str = "BET disk" ,
11811199 ):
11821200 """Constructs a :class: `BETDisk` instance from a given XROTOR file and additional inputs.
@@ -1206,6 +1224,8 @@ def from_xfoil(
12061224 Only direction matters (need not be a unit vector). Required for unsteady BET Line.
12071225 blade_line_chord: LengthType.NonNegative
12081226 Dimensional chord used in unsteady BET simulation. Defaults to ``0 * u.m``.
1227+ collective_pitch: AngleType, optional
1228+ Collective pitch angle applied as a uniform offset to all blade twist values.
12091229
12101230
12111231 Returns
@@ -1247,6 +1267,8 @@ def from_xfoil(
12471267 number_of_blades = number_of_blades ,
12481268 name = name ,
12491269 )
1270+ if collective_pitch is not None :
1271+ params ["collective_pitch" ] = collective_pitch
12501272
12511273 return cls (** params )
12521274
@@ -1265,6 +1287,7 @@ def from_xrotor(
12651287 angle_unit : AngleType ,
12661288 initial_blade_direction : Optional [Axis ] = None ,
12671289 blade_line_chord : LengthType .NonNegative = 0 * u .m ,
1290+ collective_pitch : Optional [AngleType ] = None ,
12681291 name : str = "BET disk" ,
12691292 ):
12701293 """Constructs a :class: `BETDisk` instance from a given XROTOR file and additional inputs.
@@ -1292,6 +1315,8 @@ def from_xrotor(
12921315 Only direction matters (need not be a unit vector). Required for unsteady BET Line.
12931316 blade_line_chord: LengthType.NonNegative
12941317 Dimensional chord used in unsteady BET simulation. Defaults to ``0 * u.m``.
1318+ collective_pitch: AngleType, optional
1319+ Collective pitch angle applied as a uniform offset to all blade twist values.
12951320
12961321
12971322 Returns
@@ -1328,6 +1353,8 @@ def from_xrotor(
13281353 length_unit = length_unit ,
13291354 name = name ,
13301355 )
1356+ if collective_pitch is not None :
1357+ params ["collective_pitch" ] = collective_pitch
13311358
13321359 return cls (** params )
13331360
0 commit comments