@@ -194,7 +194,7 @@ def __str__(self):
194
194
rep = f"NoseCone Object. Name: { self .name } , kind: { self .kind } "
195
195
196
196
return rep
197
-
197
+
198
198
def evaluateGeometricalParameters (self ):
199
199
"""Calculates and returns nose cone's radius ratio.
200
200
@@ -229,7 +229,7 @@ def evaluateLiftCoefficient(self):
229
229
The output is the lift coefficient of the nose cone.
230
230
"""
231
231
# Calculate clalpha
232
- self .clalpha = 2 * self .radiusRatio ** 2
232
+ self .clalpha = 2 * self .radiusRatio ** 2
233
233
self .cl = Function (
234
234
lambda alpha , mach : self .clalpha * alpha ,
235
235
["Alpha (rad)" , "Mach" ],
@@ -441,7 +441,7 @@ def __init__(
441
441
442
442
# Compute auxiliary geometrical parameters
443
443
d = 2 * rocketRadius
444
- Aref = np .pi * rocketRadius ** 2 # Reference area
444
+ Aref = np .pi * rocketRadius ** 2 # Reference area
445
445
446
446
# Store values
447
447
self ._n = n
@@ -532,7 +532,7 @@ def airfoil(self, value):
532
532
@abstractmethod
533
533
def __str__ (self ):
534
534
pass
535
-
535
+
536
536
@abstractmethod
537
537
def evaluateCenterOfPressure (self ):
538
538
"""Calculates and returns the fin set's center of pressure position in local
@@ -677,7 +677,7 @@ def evaluateRollParameters(self):
677
677
* self .clalphaSingleFin
678
678
* np .cos (self .cantAngleRad )
679
679
* self .rollGeometricalConstant
680
- / (self .Aref * self .d ** 2 )
680
+ / (self .Aref * self .d ** 2 )
681
681
) # Function of mach number
682
682
cldOmega .setInputs ("Mach" )
683
683
cldOmega .setOutputs ("Roll moment damping coefficient derivative" )
@@ -702,11 +702,11 @@ def __beta(_, mach):
702
702
"""
703
703
704
704
if mach < 0.8 :
705
- return np .sqrt (1 - mach ** 2 )
705
+ return np .sqrt (1 - mach ** 2 )
706
706
elif mach < 1.1 :
707
- return np .sqrt (1 - 0.8 ** 2 )
707
+ return np .sqrt (1 - 0.8 ** 2 )
708
708
else :
709
- return np .sqrt (mach ** 2 - 1 )
709
+ return np .sqrt (mach ** 2 - 1 )
710
710
711
711
# Defines number of fins factor
712
712
def __finNumCorrection (_ , n ):
@@ -1172,11 +1172,11 @@ def draw(self):
1172
1172
/ (3 * (self .rootChord + self .tipChord ))
1173
1173
)
1174
1174
Yma_end = (
1175
- 2 * self .rootChord ** 2
1175
+ 2 * self .rootChord ** 2
1176
1176
+ self .rootChord * self .sweepLength
1177
1177
+ 2 * self .rootChord * self .tipChord
1178
1178
+ 2 * self .sweepLength * self .tipChord
1179
- + 2 * self .tipChord ** 2
1179
+ + 2 * self .tipChord ** 2
1180
1180
) / (3 * (self .rootChord + self .tipChord ))
1181
1181
Yma_line = plt .Line2D (
1182
1182
(Yma_start , Yma_end ),
@@ -1238,7 +1238,7 @@ def evaluateGeometricalParameters(self):
1238
1238
1239
1239
Yr = self .rootChord + self .tipChord
1240
1240
Af = Yr * self .span / 2 # Fin area
1241
- AR = 2 * self .span ** 2 / Af # Fin aspect ratio
1241
+ AR = 2 * self .span ** 2 / Af # Fin aspect ratio
1242
1242
gamma_c = np .arctan (
1243
1243
(self .sweepLength + 0.5 * self .tipChord - 0.5 * self .rootChord )
1244
1244
/ (self .span )
@@ -1255,30 +1255,30 @@ def evaluateGeometricalParameters(self):
1255
1255
# Parameters for Roll Moment.
1256
1256
# Documented at: https://github.com/RocketPy-Team/RocketPy/blob/master/docs/technical/aerodynamics/Roll_Equations.pdf
1257
1257
rollGeometricalConstant = (
1258
- (self .rootChord + 3 * self .tipChord ) * self .span ** 3
1258
+ (self .rootChord + 3 * self .tipChord ) * self .span ** 3
1259
1259
+ 4
1260
1260
* (self .rootChord + 2 * self .tipChord )
1261
1261
* self .rocketRadius
1262
- * self .span ** 2
1263
- + 6 * (self .rootChord + self .tipChord ) * self .span * self .rocketRadius ** 2
1262
+ * self .span ** 2
1263
+ + 6 * (self .rootChord + self .tipChord ) * self .span * self .rocketRadius ** 2
1264
1264
) / 12
1265
1265
rollDampingInterferenceFactor = 1 + (
1266
1266
((tau - λ ) / (tau )) - ((1 - λ ) / (tau - 1 )) * np .log (tau )
1267
1267
) / (
1268
- ((tau + 1 ) * (tau - λ )) / (2 ) - ((1 - λ ) * (tau ** 3 - 1 )) / (3 * (tau - 1 ))
1268
+ ((tau + 1 ) * (tau - λ )) / (2 ) - ((1 - λ ) * (tau ** 3 - 1 )) / (3 * (tau - 1 ))
1269
1269
)
1270
- rollForcingInterferenceFactor = (1 / np .pi ** 2 ) * (
1271
- (np .pi ** 2 / 4 ) * ((tau + 1 ) ** 2 / tau ** 2 )
1272
- + ((np .pi * (tau ** 2 + 1 ) ** 2 ) / (tau ** 2 * (tau - 1 ) ** 2 ))
1273
- * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1270
+ rollForcingInterferenceFactor = (1 / np .pi ** 2 ) * (
1271
+ (np .pi ** 2 / 4 ) * ((tau + 1 ) ** 2 / tau ** 2 )
1272
+ + ((np .pi * (tau ** 2 + 1 ) ** 2 ) / (tau ** 2 * (tau - 1 ) ** 2 ))
1273
+ * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1274
1274
- (2 * np .pi * (tau + 1 )) / (tau * (tau - 1 ))
1275
- + ((tau ** 2 + 1 ) ** 2 )
1276
- / (tau ** 2 * (tau - 1 ) ** 2 )
1277
- * (np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))) ** 2
1275
+ + ((tau ** 2 + 1 ) ** 2 )
1276
+ / (tau ** 2 * (tau - 1 ) ** 2 )
1277
+ * (np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))) ** 2
1278
1278
- (4 * (tau + 1 ))
1279
1279
/ (tau * (tau - 1 ))
1280
- * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1281
- + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
1280
+ * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1281
+ + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
1282
1282
)
1283
1283
1284
1284
# Store values
@@ -1444,13 +1444,12 @@ def __init__(
1444
1444
self .evaluateRollParameters ()
1445
1445
1446
1446
return None
1447
-
1447
+
1448
1448
def __str__ (self ):
1449
1449
rep = f"EllipticalFins Object. Name: { self .name } "
1450
1450
1451
1451
return rep
1452
1452
1453
-
1454
1453
def evaluateCenterOfPressure (self ):
1455
1454
"""Calculates and returns the center of pressure of the fin set in local
1456
1455
coordinates. The center of pressure position is saved and stored as a tuple.
@@ -1560,17 +1559,17 @@ def evaluateGeometricalParameters(self):
1560
1559
# Compute auxiliary geometrical parameters
1561
1560
Af = (np .pi * self .rootChord / 2 * self .span ) / 2 # Fin area
1562
1561
gamma_c = 0 # Zero for elliptical fins
1563
- AR = 2 * self .span ** 2 / Af # Fin aspect ratio
1562
+ AR = 2 * self .span ** 2 / Af # Fin aspect ratio
1564
1563
Yma = (
1565
- self .span / (3 * np .pi ) * np .sqrt (9 * np .pi ** 2 - 64 )
1564
+ self .span / (3 * np .pi ) * np .sqrt (9 * np .pi ** 2 - 64 )
1566
1565
) # Span wise coord of mean aero chord
1567
1566
rollGeometricalConstant = (
1568
1567
self .rootChord
1569
1568
* self .span
1570
1569
* (
1571
- 3 * np .pi * self .span ** 2
1570
+ 3 * np .pi * self .span ** 2
1572
1571
+ 32 * self .rocketRadius * self .span
1573
- + 12 * np .pi * self .rocketRadius ** 2
1572
+ + 12 * np .pi * self .rocketRadius ** 2
1574
1573
)
1575
1574
/ 48
1576
1575
)
@@ -1579,45 +1578,45 @@ def evaluateGeometricalParameters(self):
1579
1578
tau = (self .span + self .rocketRadius ) / self .rocketRadius
1580
1579
liftInterferenceFactor = 1 + 1 / tau
1581
1580
rollDampingInterferenceFactor = 1 + (
1582
- (self .rocketRadius ** 2 )
1581
+ (self .rocketRadius ** 2 )
1583
1582
* (
1584
1583
2
1585
- * (self .rocketRadius ** 2 )
1586
- * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1584
+ * (self .rocketRadius ** 2 )
1585
+ * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1587
1586
* np .log (
1588
1587
(
1589
- 2 * self .span * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1590
- + 2 * self .span ** 2
1588
+ 2 * self .span * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1589
+ + 2 * self .span ** 2
1591
1590
)
1592
1591
/ self .rocketRadius
1593
1592
)
1594
1593
- 2
1595
- * (self .rocketRadius ** 2 )
1596
- * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1594
+ * (self .rocketRadius ** 2 )
1595
+ * np .sqrt (self .span ** 2 - self .rocketRadius ** 2 )
1597
1596
* np .log (2 * self .span )
1598
- + 2 * self .span ** 3
1599
- - np .pi * self .rocketRadius * self .span ** 2
1600
- - 2 * (self .rocketRadius ** 2 ) * self .span
1601
- + np .pi * self .rocketRadius ** 3
1597
+ + 2 * self .span ** 3
1598
+ - np .pi * self .rocketRadius * self .span ** 2
1599
+ - 2 * (self .rocketRadius ** 2 ) * self .span
1600
+ + np .pi * self .rocketRadius ** 3
1602
1601
)
1603
1602
) / (
1604
1603
2
1605
- * (self .span ** 2 )
1604
+ * (self .span ** 2 )
1606
1605
* (self .span / 3 + np .pi * self .rocketRadius / 4 )
1607
- * (self .span ** 2 - self .rocketRadius ** 2 )
1606
+ * (self .span ** 2 - self .rocketRadius ** 2 )
1608
1607
)
1609
- rollForcingInterferenceFactor = (1 / np .pi ** 2 ) * (
1610
- (np .pi ** 2 / 4 ) * ((tau + 1 ) ** 2 / tau ** 2 )
1611
- + ((np .pi * (tau ** 2 + 1 ) ** 2 ) / (tau ** 2 * (tau - 1 ) ** 2 ))
1612
- * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1608
+ rollForcingInterferenceFactor = (1 / np .pi ** 2 ) * (
1609
+ (np .pi ** 2 / 4 ) * ((tau + 1 ) ** 2 / tau ** 2 )
1610
+ + ((np .pi * (tau ** 2 + 1 ) ** 2 ) / (tau ** 2 * (tau - 1 ) ** 2 ))
1611
+ * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1613
1612
- (2 * np .pi * (tau + 1 )) / (tau * (tau - 1 ))
1614
- + ((tau ** 2 + 1 ) ** 2 )
1615
- / (tau ** 2 * (tau - 1 ) ** 2 )
1616
- * (np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))) ** 2
1613
+ + ((tau ** 2 + 1 ) ** 2 )
1614
+ / (tau ** 2 * (tau - 1 ) ** 2 )
1615
+ * (np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))) ** 2
1617
1616
- (4 * (tau + 1 ))
1618
1617
/ (tau * (tau - 1 ))
1619
- * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1620
- + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
1618
+ * np .arcsin ((tau ** 2 - 1 ) / (tau ** 2 + 1 ))
1619
+ + (8 / (tau - 1 ) ** 2 ) * np .log ((tau ** 2 + 1 ) / (2 * tau ))
1621
1620
)
1622
1621
1623
1622
# Store values
@@ -1828,7 +1827,7 @@ def evaluateCenterOfPressure(self):
1828
1827
"""
1829
1828
# Calculate cp position in local coordinates
1830
1829
r = self .topRadius / self .bottomRadius
1831
- cpz = (self .length / 3 ) * (1 + (1 - r ) / (1 - r ** 2 ))
1830
+ cpz = (self .length / 3 ) * (1 + (1 - r ) / (1 - r ** 2 ))
1832
1831
1833
1832
# Store values as class attributes
1834
1833
self .cpx = 0
0 commit comments