@@ -215,6 +215,7 @@ class Fins(ABC):
215
215
Geometrical relation used to simplify lift and roll calculations
216
216
Fins.liftInterferenceFactor : float
217
217
Factor of Fin-Body interference in the lift coefficient
218
+
218
219
"""
219
220
220
221
def __init__ (
@@ -230,14 +231,17 @@ def __init__(
230
231
):
231
232
"""Initialize Fins class.
232
233
234
+
233
235
Parameters
234
236
----------
235
237
n : int
236
238
Number of fins, from 2 to infinity.
239
+
237
240
rootChord : int, float
238
241
Fin root chord in meters.
239
242
span : int, float
240
243
Fin span in meters.
244
+
241
245
distanceToCM : int, float
242
246
Fin set position relative to rocket unloaded center of
243
247
mass, considering positive direction from center of mass to
@@ -248,6 +252,7 @@ def __init__(
248
252
cantAngle : int, float, optional
249
253
Fins cant angle with respect to the rocket centerline. Must
250
254
be given in degrees.
255
+
251
256
airfoil : tuple, optional
252
257
Default is null, in which case fins will be treated as flat plates.
253
258
Otherwise, if tuple, fins will be considered as airfoils. The
@@ -277,10 +282,12 @@ def __init__(
277
282
# Store values
278
283
self .n = n
279
284
self .rocketRadius = rocketRadius
285
+
280
286
self .airfoil = airfoil
281
287
self .distanceToCM = distanceToCM
282
288
self .cantAngle = cantAngle
283
289
self .rootChord = rootChord
290
+
284
291
self .span = span
285
292
self .name = name
286
293
self .d = d
@@ -328,6 +335,7 @@ def evaluateLiftCoefficient(self):
328
335
if not self .airfoil :
329
336
# Defines clalpha2D as 2*pi for planar fins
330
337
clalpha2D = Function (lambda mach : 2 * np .pi / self .__beta (mach ))
338
+
331
339
else :
332
340
# Defines clalpha2D as the derivative of the
333
341
# lift coefficient curve for a specific airfoil
@@ -792,6 +800,7 @@ def __init__(
792
800
+ 4 * (rootChord + 2 * tipChord ) * rocketRadius * span ** 2
793
801
+ 6 * (rootChord + tipChord ) * span * rocketRadius ** 2
794
802
) / 12
803
+
795
804
rollDampingInterferenceFactor = 1 + (
796
805
((tau - λ ) / (tau )) - ((1 - λ ) / (tau - 1 )) * np .log (tau )
797
806
) / (
@@ -855,10 +864,12 @@ def evaluateCenterOfPressure(self):
855
864
- self .rootChord * self .tipChord / (self .rootChord + self .tipChord )
856
865
)
857
866
)
867
+
858
868
self .cpx = 0
859
869
self .cpy = 0
860
870
self .cpz = cpz
861
871
self .cp = (self .cpx , self .cpy , self .cpz )
872
+
862
873
return self .cp
863
874
864
875
def draw (self ):
@@ -1024,6 +1035,7 @@ class EllipticalFins(Fins):
1024
1035
Geometrical relation used to simplify lift and roll calculations
1025
1036
Fins.liftInterferenceFactor : float
1026
1037
Factor of Fin-Body interference in the lift coefficient
1038
+
1027
1039
"""
1028
1040
1029
1041
def __init__ (
@@ -1039,9 +1051,11 @@ def __init__(
1039
1051
):
1040
1052
"""Initialize EllipticalFins class.
1041
1053
1054
+
1042
1055
Parameters
1043
1056
----------
1044
1057
n : int
1058
+
1045
1059
Number of fins, from 2 to infinity.
1046
1060
rootChord : int, float
1047
1061
Fin root chord in meters.
@@ -1090,9 +1104,11 @@ def __init__(
1090
1104
name : str
1091
1105
Name of fin set.
1092
1106
1107
+
1093
1108
Returns
1094
1109
-------
1095
1110
None
1111
+
1096
1112
"""
1097
1113
1098
1114
super ().__init__ (
@@ -1152,6 +1168,7 @@ def __init__(
1152
1168
* (span / 3 + np .pi * rocketRadius / 4 )
1153
1169
* (span ** 2 - rocketRadius ** 2 )
1154
1170
)
1171
+
1155
1172
rollForcingInterferenceFactor = (1 / np .pi ** 2 ) * (
1156
1173
(np .pi ** 2 / 4 ) * ((tau + 1 ) ** 2 / tau ** 2 )
1157
1174
+ ((np .pi * (tau ** 2 + 1 ) ** 2 ) / (tau ** 2 * (tau - 1 ) ** 2 ))
@@ -1278,6 +1295,7 @@ def draw(self):
1278
1295
1279
1296
1280
1297
class Tail :
1298
+
1281
1299
"""Class that defines a tail for the rocket. Currently only accepts
1282
1300
conical tails.
1283
1301
@@ -1321,6 +1339,7 @@ class Tail:
1321
1339
Tail.surfaceArea : float
1322
1340
Surface area of the tail. Has the unit of meters squared.
1323
1341
1342
+
1324
1343
"""
1325
1344
1326
1345
def __init__ (
0 commit comments