pyBADA 0.1.5__py3-none-any.whl → 0.1.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyBADA/TCL.py +185 -192
- pyBADA/aircraft.py +15 -15
- pyBADA/atmosphere.py +427 -262
- pyBADA/bada3.py +226 -240
- pyBADA/bada4.py +346 -340
- pyBADA/badaH.py +220 -233
- pyBADA/configuration.py +2 -1
- pyBADA/conversions.py +107 -130
- pyBADA/flightTrajectory.py +2 -1
- pyBADA/geodesic.py +116 -10
- pyBADA/magnetic.py +2 -1
- pyBADA/trajectoryPrediction.py +4 -3
- pyBADA/utils.py +209 -0
- {pybada-0.1.5.dist-info → pybada-0.1.7.dist-info}/METADATA +15 -13
- {pybada-0.1.5.dist-info → pybada-0.1.7.dist-info}/RECORD +18 -17
- {pybada-0.1.5.dist-info → pybada-0.1.7.dist-info}/WHEEL +0 -0
- {pybada-0.1.5.dist-info → pybada-0.1.7.dist-info}/licenses/AUTHORS +0 -0
- {pybada-0.1.5.dist-info → pybada-0.1.7.dist-info}/licenses/LICENCE.txt +0 -0
pyBADA/TCL.py
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"""Trajectory Computation Light (TCL) for BADAH/BADAE/BADA3/BADA4 aircraft
|
|
2
2
|
performance module."""
|
|
3
3
|
|
|
4
|
-
import numpy as np
|
|
5
|
-
from pyBADA.geodesic import Vincenty as vincenty
|
|
6
|
-
from pyBADA.geodesic import RhumbLine as rhumb
|
|
7
|
-
from pyBADA.geodesic import Turn as turn
|
|
8
|
-
|
|
9
|
-
from dataclasses import dataclass
|
|
10
4
|
import itertools
|
|
11
5
|
import warnings
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from math import asin, atan, cos, degrees, radians, sin, tan
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
import numpy as np
|
|
14
10
|
|
|
15
11
|
from pyBADA import atmosphere as atm
|
|
16
|
-
from pyBADA import conversions as conv
|
|
17
12
|
from pyBADA import constants as const
|
|
13
|
+
from pyBADA import conversions as conv
|
|
14
|
+
from pyBADA import utils
|
|
18
15
|
from pyBADA.flightTrajectory import FlightTrajectory as FT
|
|
16
|
+
from pyBADA.geodesic import RhumbLine as rhumb
|
|
17
|
+
from pyBADA.geodesic import Turn as turn
|
|
18
|
+
from pyBADA.geodesic import Vincenty as vincenty
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
@dataclass
|
|
@@ -26,13 +26,6 @@ class target:
|
|
|
26
26
|
ESFtarget: float = None
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def checkArgument(argument, **kwargs):
|
|
30
|
-
if kwargs.get(argument) is not None:
|
|
31
|
-
return kwargs.get(argument)
|
|
32
|
-
else:
|
|
33
|
-
raise TypeError("Missing " + argument + " argument")
|
|
34
|
-
|
|
35
|
-
|
|
36
29
|
def constantSpeedLevel(
|
|
37
30
|
AC,
|
|
38
31
|
lengthType,
|
|
@@ -41,7 +34,7 @@ def constantSpeedLevel(
|
|
|
41
34
|
v,
|
|
42
35
|
Hp_init,
|
|
43
36
|
m_init,
|
|
44
|
-
|
|
37
|
+
deltaTemp,
|
|
45
38
|
maxRFL=float("Inf"),
|
|
46
39
|
wS=0.0,
|
|
47
40
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
@@ -68,7 +61,7 @@ def constantSpeedLevel(
|
|
|
68
61
|
:param v: The target speed in [kt] for CAS/TAS or [-] for MACH.
|
|
69
62
|
:param Hp_init: Initial pressure altitude at the start of the flight segment [ft].
|
|
70
63
|
:param m_init: Initial mass of the aircraft [kg].
|
|
71
|
-
:param
|
|
64
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
72
65
|
:param maxRFL: Maximum cruise altitude limit [ft]. Default is infinity.
|
|
73
66
|
:param wS: Wind speed component along the longitudinal axis (positive for headwind, negative for tailwind) [kt]. Default is 0.0.
|
|
74
67
|
:param turnMetrics: Dictionary containing turn parameters:
|
|
@@ -343,7 +336,7 @@ def constantSpeedLevel(
|
|
|
343
336
|
# atmosphere properties
|
|
344
337
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
345
338
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
346
|
-
h=H_m,
|
|
339
|
+
h=H_m, deltaTemp=deltaTemp
|
|
347
340
|
)
|
|
348
341
|
# aircraft speed
|
|
349
342
|
[M_i, CAS_i, TAS_i] = atm.convertSpeed(
|
|
@@ -437,7 +430,7 @@ def constantSpeedLevel(
|
|
|
437
430
|
phase=flightPhase,
|
|
438
431
|
v=CAS_i,
|
|
439
432
|
mass=mass_i,
|
|
440
|
-
|
|
433
|
+
deltaTemp=deltaTemp,
|
|
441
434
|
)
|
|
442
435
|
else:
|
|
443
436
|
config_i = config_default
|
|
@@ -466,7 +459,7 @@ def constantSpeedLevel(
|
|
|
466
459
|
THR_i = Drag
|
|
467
460
|
CT = AC.CT(Thrust=THR_i, delta=delta)
|
|
468
461
|
FUEL_i = AC.ff(
|
|
469
|
-
CT=CT, delta=delta, theta=theta, M=M_i,
|
|
462
|
+
CT=CT, delta=delta, theta=theta, M=M_i, deltaTemp=deltaTemp
|
|
470
463
|
) # [kg/s]
|
|
471
464
|
|
|
472
465
|
# BADA3
|
|
@@ -478,7 +471,7 @@ def constantSpeedLevel(
|
|
|
478
471
|
phase=flightPhase,
|
|
479
472
|
v=CAS_i,
|
|
480
473
|
mass=mass_i,
|
|
481
|
-
|
|
474
|
+
deltaTemp=deltaTemp,
|
|
482
475
|
)
|
|
483
476
|
else:
|
|
484
477
|
config_i = config_default
|
|
@@ -742,7 +735,7 @@ def constantSpeedLevel(
|
|
|
742
735
|
nextHp = min(Hp_i + HpStep, maxRFL)
|
|
743
736
|
H_m = conv.ft2m(nextHp) # altitude [m]
|
|
744
737
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
745
|
-
h=H_m,
|
|
738
|
+
h=H_m, deltaTemp=deltaTemp
|
|
746
739
|
)
|
|
747
740
|
|
|
748
741
|
# aircraft speed at upper cruise altitude
|
|
@@ -760,7 +753,7 @@ def constantSpeedLevel(
|
|
|
760
753
|
phase=flightPhase,
|
|
761
754
|
v=CAS_up,
|
|
762
755
|
mass=mass_i,
|
|
763
|
-
|
|
756
|
+
deltaTemp=deltaTemp,
|
|
764
757
|
)
|
|
765
758
|
else:
|
|
766
759
|
config_i = config_default
|
|
@@ -799,7 +792,7 @@ def constantSpeedLevel(
|
|
|
799
792
|
phase=flightPhase,
|
|
800
793
|
v=CAS_up,
|
|
801
794
|
mass=mass_i,
|
|
802
|
-
|
|
795
|
+
deltaTemp=deltaTemp,
|
|
803
796
|
)
|
|
804
797
|
else:
|
|
805
798
|
config_i = config_default
|
|
@@ -836,7 +829,7 @@ def constantSpeedLevel(
|
|
|
836
829
|
delta=delta,
|
|
837
830
|
theta=theta,
|
|
838
831
|
M=M_up,
|
|
839
|
-
|
|
832
|
+
deltaTemp=deltaTemp,
|
|
840
833
|
) # [kg/s]
|
|
841
834
|
|
|
842
835
|
# Compare specific range at current and upper cruise altitudes
|
|
@@ -848,14 +841,14 @@ def constantSpeedLevel(
|
|
|
848
841
|
delta=delta,
|
|
849
842
|
theta=theta,
|
|
850
843
|
M=M_up,
|
|
851
|
-
|
|
844
|
+
deltaTemp=deltaTemp,
|
|
852
845
|
) # MCMB Thrust
|
|
853
846
|
elif AC.BADAFamily.BADA3:
|
|
854
847
|
THR_CL = AC.Thrust(
|
|
855
848
|
rating="MCMB",
|
|
856
849
|
v=TAS,
|
|
857
850
|
h=H_m,
|
|
858
|
-
|
|
851
|
+
deltaTemp=deltaTemp,
|
|
859
852
|
config=config_i,
|
|
860
853
|
) # MCMB Thrust
|
|
861
854
|
|
|
@@ -864,10 +857,10 @@ def constantSpeedLevel(
|
|
|
864
857
|
h=H_m,
|
|
865
858
|
flightEvolution=flightEvolution,
|
|
866
859
|
M=M_up,
|
|
867
|
-
|
|
860
|
+
deltaTemp=deltaTemp,
|
|
868
861
|
)
|
|
869
862
|
temp_const = (theta * const.temp_0) / (
|
|
870
|
-
theta * const.temp_0 -
|
|
863
|
+
theta * const.temp_0 - deltaTemp
|
|
871
864
|
) # T/T-dT
|
|
872
865
|
ROCD_up = (
|
|
873
866
|
conv.m2ft(
|
|
@@ -899,7 +892,7 @@ def constantSpeedLevel(
|
|
|
899
892
|
Hp_step=HpStep,
|
|
900
893
|
m_init=mass_i,
|
|
901
894
|
wS=wS,
|
|
902
|
-
|
|
895
|
+
deltaTemp=deltaTemp,
|
|
903
896
|
Lat=LAT[-1],
|
|
904
897
|
Lon=LON[-1],
|
|
905
898
|
initialHeading={
|
|
@@ -920,7 +913,7 @@ def constantSpeedLevel(
|
|
|
920
913
|
Hp_step=HpStep,
|
|
921
914
|
m_init=mass_i,
|
|
922
915
|
wS=wS,
|
|
923
|
-
|
|
916
|
+
deltaTemp=deltaTemp,
|
|
924
917
|
turnMetrics=turnMetrics,
|
|
925
918
|
)
|
|
926
919
|
|
|
@@ -989,7 +982,7 @@ def constantSpeedLevel(
|
|
|
989
982
|
phase=flightPhase,
|
|
990
983
|
v=CAS_up,
|
|
991
984
|
mass=mass[-1],
|
|
992
|
-
|
|
985
|
+
deltaTemp=deltaTemp,
|
|
993
986
|
)
|
|
994
987
|
else:
|
|
995
988
|
config_i = config_default
|
|
@@ -1032,7 +1025,7 @@ def constantSpeedLevel(
|
|
|
1032
1025
|
phase=flightPhase,
|
|
1033
1026
|
v=CAS_up,
|
|
1034
1027
|
mass=mass[-1],
|
|
1035
|
-
|
|
1028
|
+
deltaTemp=deltaTemp,
|
|
1036
1029
|
)
|
|
1037
1030
|
else:
|
|
1038
1031
|
config_i = config_default
|
|
@@ -1071,7 +1064,7 @@ def constantSpeedLevel(
|
|
|
1071
1064
|
delta=delta,
|
|
1072
1065
|
theta=theta,
|
|
1073
1066
|
M=M_up,
|
|
1074
|
-
|
|
1067
|
+
deltaTemp=deltaTemp,
|
|
1075
1068
|
) # [kg/s]
|
|
1076
1069
|
|
|
1077
1070
|
Hp.append(Hp[-1])
|
|
@@ -1173,7 +1166,7 @@ def constantSpeedROCD(
|
|
|
1173
1166
|
Hp_final,
|
|
1174
1167
|
ROCDtarget,
|
|
1175
1168
|
m_init,
|
|
1176
|
-
|
|
1169
|
+
deltaTemp,
|
|
1177
1170
|
wS=0.0,
|
|
1178
1171
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
1179
1172
|
Lat=None,
|
|
@@ -1201,7 +1194,7 @@ def constantSpeedROCD(
|
|
|
1201
1194
|
:param Hp_final: Final pressure altitude at the end of the segment [ft].
|
|
1202
1195
|
:param ROCDtarget: Target rate of climb/descent [ft/min].
|
|
1203
1196
|
:param m_init: Initial aircraft mass at the start of the segment [kg].
|
|
1204
|
-
:param
|
|
1197
|
+
:param deltaTemp: Deviation from standard ISA temperature [K].
|
|
1205
1198
|
:param wS: Wind speed component along the longitudinal axis [kt]. Positive values for headwind, negative for tailwind. Default is 0.0.
|
|
1206
1199
|
:param turnMetrics: Dictionary defining turn parameters:
|
|
1207
1200
|
|
|
@@ -1474,10 +1467,10 @@ def constantSpeedROCD(
|
|
|
1474
1467
|
# atmosphere properties
|
|
1475
1468
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
1476
1469
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
1477
|
-
h=H_m,
|
|
1470
|
+
h=H_m, deltaTemp=deltaTemp
|
|
1478
1471
|
)
|
|
1479
1472
|
temp_const = (theta * const.temp_0) / (
|
|
1480
|
-
theta * const.temp_0 -
|
|
1473
|
+
theta * const.temp_0 - deltaTemp
|
|
1481
1474
|
)
|
|
1482
1475
|
|
|
1483
1476
|
# aircraft speed
|
|
@@ -1493,7 +1486,7 @@ def constantSpeedROCD(
|
|
|
1493
1486
|
] = AC.ARPM.ARPMProcedure(
|
|
1494
1487
|
phase=phase,
|
|
1495
1488
|
h=H_m,
|
|
1496
|
-
|
|
1489
|
+
deltaTemp=deltaTemp,
|
|
1497
1490
|
mass=mass[-1],
|
|
1498
1491
|
rating="ARPM",
|
|
1499
1492
|
)
|
|
@@ -1508,7 +1501,7 @@ def constantSpeedROCD(
|
|
|
1508
1501
|
ESF_i = AC.esf(
|
|
1509
1502
|
h=H_m,
|
|
1510
1503
|
M=M_i,
|
|
1511
|
-
|
|
1504
|
+
deltaTemp=deltaTemp,
|
|
1512
1505
|
flightEvolution=("const" + speedType),
|
|
1513
1506
|
)
|
|
1514
1507
|
|
|
@@ -1542,7 +1535,7 @@ def constantSpeedROCD(
|
|
|
1542
1535
|
# Compute power required for target ROCD
|
|
1543
1536
|
Preq_target_i = AC.Peng_target(
|
|
1544
1537
|
temp=theta * const.temp_0,
|
|
1545
|
-
|
|
1538
|
+
deltaTemp=deltaTemp,
|
|
1546
1539
|
ROCD=ROCDisu,
|
|
1547
1540
|
mass=mass_i,
|
|
1548
1541
|
Preq=Preq_i,
|
|
@@ -1558,7 +1551,7 @@ def constantSpeedROCD(
|
|
|
1558
1551
|
phase=phase,
|
|
1559
1552
|
v=CAS_i,
|
|
1560
1553
|
mass=mass_i,
|
|
1561
|
-
|
|
1554
|
+
deltaTemp=deltaTemp,
|
|
1562
1555
|
)
|
|
1563
1556
|
else:
|
|
1564
1557
|
config_i = config_default
|
|
@@ -1598,7 +1591,7 @@ def constantSpeedROCD(
|
|
|
1598
1591
|
phase=phase,
|
|
1599
1592
|
v=CAS_i,
|
|
1600
1593
|
mass=mass_i,
|
|
1601
|
-
|
|
1594
|
+
deltaTemp=deltaTemp,
|
|
1602
1595
|
)
|
|
1603
1596
|
else:
|
|
1604
1597
|
config_i = config_default
|
|
@@ -1644,7 +1637,7 @@ def constantSpeedROCD(
|
|
|
1644
1637
|
mass=mass_i,
|
|
1645
1638
|
ESF=ESF_i,
|
|
1646
1639
|
theta=theta,
|
|
1647
|
-
|
|
1640
|
+
deltaTemp=deltaTemp,
|
|
1648
1641
|
)
|
|
1649
1642
|
)
|
|
1650
1643
|
* 60
|
|
@@ -1659,7 +1652,7 @@ def constantSpeedROCD(
|
|
|
1659
1652
|
mass=mass_i,
|
|
1660
1653
|
ESF=ESF_i,
|
|
1661
1654
|
theta=theta,
|
|
1662
|
-
|
|
1655
|
+
deltaTemp=deltaTemp,
|
|
1663
1656
|
)
|
|
1664
1657
|
)
|
|
1665
1658
|
* 60
|
|
@@ -1689,7 +1682,7 @@ def constantSpeedROCD(
|
|
|
1689
1682
|
mass=mass_i,
|
|
1690
1683
|
ESF=ESF_i,
|
|
1691
1684
|
theta=theta,
|
|
1692
|
-
|
|
1685
|
+
deltaTemp=deltaTemp,
|
|
1693
1686
|
)
|
|
1694
1687
|
)
|
|
1695
1688
|
* 60
|
|
@@ -1704,7 +1697,7 @@ def constantSpeedROCD(
|
|
|
1704
1697
|
mass=mass_i,
|
|
1705
1698
|
ESF=ESF_i,
|
|
1706
1699
|
theta=theta,
|
|
1707
|
-
|
|
1700
|
+
deltaTemp=deltaTemp,
|
|
1708
1701
|
)
|
|
1709
1702
|
)
|
|
1710
1703
|
* 60
|
|
@@ -1730,28 +1723,28 @@ def constantSpeedROCD(
|
|
|
1730
1723
|
delta=delta,
|
|
1731
1724
|
theta=theta,
|
|
1732
1725
|
M=M_i,
|
|
1733
|
-
|
|
1726
|
+
deltaTemp=deltaTemp,
|
|
1734
1727
|
) # IDLE Thrust
|
|
1735
1728
|
FUEL_min = AC.ff(
|
|
1736
1729
|
rating="LIDL",
|
|
1737
1730
|
delta=delta,
|
|
1738
1731
|
theta=theta,
|
|
1739
1732
|
M=M_i,
|
|
1740
|
-
|
|
1733
|
+
deltaTemp=deltaTemp,
|
|
1741
1734
|
) # IDLE Fuel Flow
|
|
1742
1735
|
THR_max = AC.Thrust(
|
|
1743
1736
|
rating="MCMB",
|
|
1744
1737
|
delta=delta,
|
|
1745
1738
|
theta=theta,
|
|
1746
1739
|
M=M_i,
|
|
1747
|
-
|
|
1740
|
+
deltaTemp=deltaTemp,
|
|
1748
1741
|
) # MCMB Thrust
|
|
1749
1742
|
FUEL_max = AC.ff(
|
|
1750
1743
|
rating="MCMB",
|
|
1751
1744
|
delta=delta,
|
|
1752
1745
|
theta=theta,
|
|
1753
1746
|
M=M_i,
|
|
1754
|
-
|
|
1747
|
+
deltaTemp=deltaTemp,
|
|
1755
1748
|
) # MCMB Fuel Flow
|
|
1756
1749
|
if THR_i < THR_min:
|
|
1757
1750
|
THR_i = THR_min
|
|
@@ -1786,7 +1779,7 @@ def constantSpeedROCD(
|
|
|
1786
1779
|
delta=delta,
|
|
1787
1780
|
theta=theta,
|
|
1788
1781
|
M=M_i,
|
|
1789
|
-
|
|
1782
|
+
deltaTemp=deltaTemp,
|
|
1790
1783
|
) # [kg/s]
|
|
1791
1784
|
ROCD_i = ROCDtarget
|
|
1792
1785
|
|
|
@@ -1797,7 +1790,7 @@ def constantSpeedROCD(
|
|
|
1797
1790
|
v=TAS_i,
|
|
1798
1791
|
h=H_m,
|
|
1799
1792
|
config="CR",
|
|
1800
|
-
|
|
1793
|
+
deltaTemp=deltaTemp,
|
|
1801
1794
|
) # IDLE Thrust
|
|
1802
1795
|
FUEL_min = AC.ff(
|
|
1803
1796
|
flightPhase="Descent",
|
|
@@ -1811,7 +1804,7 @@ def constantSpeedROCD(
|
|
|
1811
1804
|
rating="MCMB",
|
|
1812
1805
|
v=TAS_i,
|
|
1813
1806
|
h=H_m,
|
|
1814
|
-
|
|
1807
|
+
deltaTemp=deltaTemp,
|
|
1815
1808
|
config="CR",
|
|
1816
1809
|
) # MCMB Thrust
|
|
1817
1810
|
FUEL_max = AC.ff(
|
|
@@ -2213,7 +2206,7 @@ def constantSpeedROCD_time(
|
|
|
2213
2206
|
Hp_init,
|
|
2214
2207
|
ROCDtarget,
|
|
2215
2208
|
m_init,
|
|
2216
|
-
|
|
2209
|
+
deltaTemp,
|
|
2217
2210
|
wS=0.0,
|
|
2218
2211
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
2219
2212
|
Lat=None,
|
|
@@ -2240,7 +2233,7 @@ def constantSpeedROCD_time(
|
|
|
2240
2233
|
:param Hp_init: Initial pressure altitude [ft].
|
|
2241
2234
|
:param ROCDtarget: Rate of climb or descent [ft/min].
|
|
2242
2235
|
:param m_init: Initial aircraft mass at the start of the segment [kg].
|
|
2243
|
-
:param
|
|
2236
|
+
:param deltaTemp: Deviation from standard ISA temperature [K].
|
|
2244
2237
|
:param wS: Wind speed component along the longitudinal axis [kt]. Default is 0.0.
|
|
2245
2238
|
:param turnMetrics: Dictionary defining turn parameters:
|
|
2246
2239
|
|
|
@@ -2502,10 +2495,10 @@ def constantSpeedROCD_time(
|
|
|
2502
2495
|
# atmosphere properties
|
|
2503
2496
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
2504
2497
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
2505
|
-
h=H_m,
|
|
2498
|
+
h=H_m, deltaTemp=deltaTemp
|
|
2506
2499
|
)
|
|
2507
2500
|
temp_const = (theta * const.temp_0) / (
|
|
2508
|
-
theta * const.temp_0 -
|
|
2501
|
+
theta * const.temp_0 - deltaTemp
|
|
2509
2502
|
)
|
|
2510
2503
|
|
|
2511
2504
|
# aircraft speed
|
|
@@ -2521,7 +2514,7 @@ def constantSpeedROCD_time(
|
|
|
2521
2514
|
] = AC.ARPM.ARPMProcedure(
|
|
2522
2515
|
phase=phase,
|
|
2523
2516
|
h=H_m,
|
|
2524
|
-
|
|
2517
|
+
deltaTemp=deltaTemp,
|
|
2525
2518
|
mass=mass[-1],
|
|
2526
2519
|
rating="ARPM",
|
|
2527
2520
|
)
|
|
@@ -2536,7 +2529,7 @@ def constantSpeedROCD_time(
|
|
|
2536
2529
|
ESF_i = AC.esf(
|
|
2537
2530
|
h=H_m,
|
|
2538
2531
|
M=M_i,
|
|
2539
|
-
|
|
2532
|
+
deltaTemp=deltaTemp,
|
|
2540
2533
|
flightEvolution=("const" + speedType),
|
|
2541
2534
|
)
|
|
2542
2535
|
|
|
@@ -2566,7 +2559,7 @@ def constantSpeedROCD_time(
|
|
|
2566
2559
|
# Compute power required for target ROCD
|
|
2567
2560
|
Preq_target_i = AC.Peng_target(
|
|
2568
2561
|
temp=theta * const.temp_0,
|
|
2569
|
-
|
|
2562
|
+
deltaTemp=deltaTemp,
|
|
2570
2563
|
ROCD=ROCDisu,
|
|
2571
2564
|
mass=mass_i,
|
|
2572
2565
|
Preq=Preq_i,
|
|
@@ -2582,7 +2575,7 @@ def constantSpeedROCD_time(
|
|
|
2582
2575
|
phase=phase,
|
|
2583
2576
|
v=CAS_i,
|
|
2584
2577
|
mass=mass_i,
|
|
2585
|
-
|
|
2578
|
+
deltaTemp=deltaTemp,
|
|
2586
2579
|
)
|
|
2587
2580
|
else:
|
|
2588
2581
|
config_i = config_default
|
|
@@ -2622,7 +2615,7 @@ def constantSpeedROCD_time(
|
|
|
2622
2615
|
phase=phase,
|
|
2623
2616
|
v=CAS_i,
|
|
2624
2617
|
mass=mass_i,
|
|
2625
|
-
|
|
2618
|
+
deltaTemp=deltaTemp,
|
|
2626
2619
|
)
|
|
2627
2620
|
else:
|
|
2628
2621
|
config_i = config_default
|
|
@@ -2668,7 +2661,7 @@ def constantSpeedROCD_time(
|
|
|
2668
2661
|
mass=mass_i,
|
|
2669
2662
|
ESF=ESF_i,
|
|
2670
2663
|
theta=theta,
|
|
2671
|
-
|
|
2664
|
+
deltaTemp=deltaTemp,
|
|
2672
2665
|
)
|
|
2673
2666
|
)
|
|
2674
2667
|
* 60
|
|
@@ -2683,7 +2676,7 @@ def constantSpeedROCD_time(
|
|
|
2683
2676
|
mass=mass_i,
|
|
2684
2677
|
ESF=ESF_i,
|
|
2685
2678
|
theta=theta,
|
|
2686
|
-
|
|
2679
|
+
deltaTemp=deltaTemp,
|
|
2687
2680
|
)
|
|
2688
2681
|
)
|
|
2689
2682
|
* 60
|
|
@@ -2713,7 +2706,7 @@ def constantSpeedROCD_time(
|
|
|
2713
2706
|
mass=mass_i,
|
|
2714
2707
|
ESF=ESF_i,
|
|
2715
2708
|
theta=theta,
|
|
2716
|
-
|
|
2709
|
+
deltaTemp=deltaTemp,
|
|
2717
2710
|
)
|
|
2718
2711
|
)
|
|
2719
2712
|
* 60
|
|
@@ -2728,7 +2721,7 @@ def constantSpeedROCD_time(
|
|
|
2728
2721
|
mass=mass_i,
|
|
2729
2722
|
ESF=ESF_i,
|
|
2730
2723
|
theta=theta,
|
|
2731
|
-
|
|
2724
|
+
deltaTemp=deltaTemp,
|
|
2732
2725
|
)
|
|
2733
2726
|
)
|
|
2734
2727
|
* 60
|
|
@@ -2754,28 +2747,28 @@ def constantSpeedROCD_time(
|
|
|
2754
2747
|
delta=delta,
|
|
2755
2748
|
theta=theta,
|
|
2756
2749
|
M=M_i,
|
|
2757
|
-
|
|
2750
|
+
deltaTemp=deltaTemp,
|
|
2758
2751
|
) # IDLE Thrust
|
|
2759
2752
|
FUEL_min = AC.ff(
|
|
2760
2753
|
rating="LIDL",
|
|
2761
2754
|
delta=delta,
|
|
2762
2755
|
theta=theta,
|
|
2763
2756
|
M=M_i,
|
|
2764
|
-
|
|
2757
|
+
deltaTemp=deltaTemp,
|
|
2765
2758
|
) # IDLE Fuel Flow
|
|
2766
2759
|
THR_max = AC.Thrust(
|
|
2767
2760
|
rating="MCMB",
|
|
2768
2761
|
delta=delta,
|
|
2769
2762
|
theta=theta,
|
|
2770
2763
|
M=M_i,
|
|
2771
|
-
|
|
2764
|
+
deltaTemp=deltaTemp,
|
|
2772
2765
|
) # MCMB Thrust
|
|
2773
2766
|
FUEL_max = AC.ff(
|
|
2774
2767
|
rating="MCMB",
|
|
2775
2768
|
delta=delta,
|
|
2776
2769
|
theta=theta,
|
|
2777
2770
|
M=M_i,
|
|
2778
|
-
|
|
2771
|
+
deltaTemp=deltaTemp,
|
|
2779
2772
|
) # MCMB Fuel Flow
|
|
2780
2773
|
if THR_i < THR_min:
|
|
2781
2774
|
THR_i = THR_min
|
|
@@ -2810,7 +2803,7 @@ def constantSpeedROCD_time(
|
|
|
2810
2803
|
delta=delta,
|
|
2811
2804
|
theta=theta,
|
|
2812
2805
|
M=M_i,
|
|
2813
|
-
|
|
2806
|
+
deltaTemp=deltaTemp,
|
|
2814
2807
|
) # [kg/s]
|
|
2815
2808
|
ROCD_i = ROCDtarget
|
|
2816
2809
|
|
|
@@ -2821,7 +2814,7 @@ def constantSpeedROCD_time(
|
|
|
2821
2814
|
v=TAS_i,
|
|
2822
2815
|
h=H_m,
|
|
2823
2816
|
config="CR",
|
|
2824
|
-
|
|
2817
|
+
deltaTemp=deltaTemp,
|
|
2825
2818
|
) # IDLE Thrust
|
|
2826
2819
|
FUEL_min = AC.ff(
|
|
2827
2820
|
flightPhase="Descent",
|
|
@@ -2835,7 +2828,7 @@ def constantSpeedROCD_time(
|
|
|
2835
2828
|
rating="MCMB",
|
|
2836
2829
|
v=TAS_i,
|
|
2837
2830
|
h=H_m,
|
|
2838
|
-
|
|
2831
|
+
deltaTemp=deltaTemp,
|
|
2839
2832
|
config="CR",
|
|
2840
2833
|
) # MCMB Thrust
|
|
2841
2834
|
FUEL_max = AC.ff(
|
|
@@ -2986,10 +2979,10 @@ def constantSpeedROCD_time(
|
|
|
2986
2979
|
gamma_i = 90 * np.sign(ROCD_i)
|
|
2987
2980
|
else:
|
|
2988
2981
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
2989
|
-
h=conv.ft2m(Hp_i),
|
|
2982
|
+
h=conv.ft2m(Hp_i), deltaTemp=deltaTemp
|
|
2990
2983
|
)
|
|
2991
2984
|
temp_const = (theta * const.temp_0) / (
|
|
2992
|
-
theta * const.temp_0 -
|
|
2985
|
+
theta * const.temp_0 - deltaTemp
|
|
2993
2986
|
)
|
|
2994
2987
|
if AC.BADAFamily.BADAE:
|
|
2995
2988
|
gamma_i = degrees(
|
|
@@ -3230,7 +3223,7 @@ def constantSpeedSlope(
|
|
|
3230
3223
|
Hp_final,
|
|
3231
3224
|
slopetarget,
|
|
3232
3225
|
m_init,
|
|
3233
|
-
|
|
3226
|
+
deltaTemp,
|
|
3234
3227
|
wS=0.0,
|
|
3235
3228
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
3236
3229
|
Lat=None,
|
|
@@ -3257,7 +3250,7 @@ def constantSpeedSlope(
|
|
|
3257
3250
|
:param Hp_final: Final pressure altitude [ft].
|
|
3258
3251
|
:param slopetarget: Target slope (trajectory angle) to be maintained during climb/descent [deg].
|
|
3259
3252
|
:param m_init: Initial mass of the aircraft at the start of the segment [kg].
|
|
3260
|
-
:param
|
|
3253
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
3261
3254
|
:param wS: Wind speed component along the longitudinal axis (affects ground speed) [kt]. Default is 0.0.
|
|
3262
3255
|
:param turnMetrics: A dictionary defining the turn parameters:
|
|
3263
3256
|
|
|
@@ -3519,10 +3512,10 @@ def constantSpeedSlope(
|
|
|
3519
3512
|
# atmosphere properties
|
|
3520
3513
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
3521
3514
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
3522
|
-
h=H_m,
|
|
3515
|
+
h=H_m, deltaTemp=deltaTemp
|
|
3523
3516
|
)
|
|
3524
3517
|
temp_const = (theta * const.temp_0) / (
|
|
3525
|
-
theta * const.temp_0 -
|
|
3518
|
+
theta * const.temp_0 - deltaTemp
|
|
3526
3519
|
)
|
|
3527
3520
|
|
|
3528
3521
|
# aircraft speed
|
|
@@ -3538,7 +3531,7 @@ def constantSpeedSlope(
|
|
|
3538
3531
|
] = AC.ARPM.ARPMProcedure(
|
|
3539
3532
|
phase=phase,
|
|
3540
3533
|
h=H_m,
|
|
3541
|
-
|
|
3534
|
+
deltaTemp=deltaTemp,
|
|
3542
3535
|
mass=mass[-1],
|
|
3543
3536
|
rating="ARPM",
|
|
3544
3537
|
)
|
|
@@ -3568,7 +3561,7 @@ def constantSpeedSlope(
|
|
|
3568
3561
|
ESF_i = AC.esf(
|
|
3569
3562
|
h=H_m,
|
|
3570
3563
|
M=M_i,
|
|
3571
|
-
|
|
3564
|
+
deltaTemp=deltaTemp,
|
|
3572
3565
|
flightEvolution=("const" + speedType),
|
|
3573
3566
|
)
|
|
3574
3567
|
|
|
@@ -3593,7 +3586,7 @@ def constantSpeedSlope(
|
|
|
3593
3586
|
# Compute power required for target ROCD
|
|
3594
3587
|
Preq_target_i = AC.Peng_target(
|
|
3595
3588
|
temp=theta * const.temp_0,
|
|
3596
|
-
|
|
3589
|
+
deltaTemp=deltaTemp,
|
|
3597
3590
|
ROCD=ROCDisu,
|
|
3598
3591
|
mass=mass_i,
|
|
3599
3592
|
Preq=Preq_i,
|
|
@@ -3609,7 +3602,7 @@ def constantSpeedSlope(
|
|
|
3609
3602
|
phase=phase,
|
|
3610
3603
|
v=CAS_i,
|
|
3611
3604
|
mass=mass_i,
|
|
3612
|
-
|
|
3605
|
+
deltaTemp=deltaTemp,
|
|
3613
3606
|
)
|
|
3614
3607
|
else:
|
|
3615
3608
|
config_i = config_default
|
|
@@ -3649,7 +3642,7 @@ def constantSpeedSlope(
|
|
|
3649
3642
|
phase=phase,
|
|
3650
3643
|
v=CAS_i,
|
|
3651
3644
|
mass=mass_i,
|
|
3652
|
-
|
|
3645
|
+
deltaTemp=deltaTemp,
|
|
3653
3646
|
)
|
|
3654
3647
|
else:
|
|
3655
3648
|
config_i = config_default
|
|
@@ -3695,7 +3688,7 @@ def constantSpeedSlope(
|
|
|
3695
3688
|
mass=mass_i,
|
|
3696
3689
|
ESF=ESF_i,
|
|
3697
3690
|
theta=theta,
|
|
3698
|
-
|
|
3691
|
+
deltaTemp=deltaTemp,
|
|
3699
3692
|
)
|
|
3700
3693
|
)
|
|
3701
3694
|
* 60
|
|
@@ -3710,7 +3703,7 @@ def constantSpeedSlope(
|
|
|
3710
3703
|
mass=mass_i,
|
|
3711
3704
|
ESF=ESF_i,
|
|
3712
3705
|
theta=theta,
|
|
3713
|
-
|
|
3706
|
+
deltaTemp=deltaTemp,
|
|
3714
3707
|
)
|
|
3715
3708
|
)
|
|
3716
3709
|
* 60
|
|
@@ -3740,7 +3733,7 @@ def constantSpeedSlope(
|
|
|
3740
3733
|
mass=mass_i,
|
|
3741
3734
|
ESF=ESF_i,
|
|
3742
3735
|
theta=theta,
|
|
3743
|
-
|
|
3736
|
+
deltaTemp=deltaTemp,
|
|
3744
3737
|
)
|
|
3745
3738
|
)
|
|
3746
3739
|
* 60
|
|
@@ -3755,7 +3748,7 @@ def constantSpeedSlope(
|
|
|
3755
3748
|
mass=mass_i,
|
|
3756
3749
|
ESF=ESF_i,
|
|
3757
3750
|
theta=theta,
|
|
3758
|
-
|
|
3751
|
+
deltaTemp=deltaTemp,
|
|
3759
3752
|
)
|
|
3760
3753
|
)
|
|
3761
3754
|
* 60
|
|
@@ -3781,28 +3774,28 @@ def constantSpeedSlope(
|
|
|
3781
3774
|
delta=delta,
|
|
3782
3775
|
theta=theta,
|
|
3783
3776
|
M=M_i,
|
|
3784
|
-
|
|
3777
|
+
deltaTemp=deltaTemp,
|
|
3785
3778
|
) # IDLE Thrust
|
|
3786
3779
|
FUEL_min = AC.ff(
|
|
3787
3780
|
rating="LIDL",
|
|
3788
3781
|
delta=delta,
|
|
3789
3782
|
theta=theta,
|
|
3790
3783
|
M=M_i,
|
|
3791
|
-
|
|
3784
|
+
deltaTemp=deltaTemp,
|
|
3792
3785
|
) # IDLE Fuel Flow
|
|
3793
3786
|
THR_max = AC.Thrust(
|
|
3794
3787
|
rating="MCMB",
|
|
3795
3788
|
delta=delta,
|
|
3796
3789
|
theta=theta,
|
|
3797
3790
|
M=M_i,
|
|
3798
|
-
|
|
3791
|
+
deltaTemp=deltaTemp,
|
|
3799
3792
|
) # MCMB Thrust
|
|
3800
3793
|
FUEL_max = AC.ff(
|
|
3801
3794
|
rating="MCMB",
|
|
3802
3795
|
delta=delta,
|
|
3803
3796
|
theta=theta,
|
|
3804
3797
|
M=M_i,
|
|
3805
|
-
|
|
3798
|
+
deltaTemp=deltaTemp,
|
|
3806
3799
|
) # MCMB Fuel Flow
|
|
3807
3800
|
|
|
3808
3801
|
if THR_i < THR_min:
|
|
@@ -3838,7 +3831,7 @@ def constantSpeedSlope(
|
|
|
3838
3831
|
delta=delta,
|
|
3839
3832
|
theta=theta,
|
|
3840
3833
|
M=M_i,
|
|
3841
|
-
|
|
3834
|
+
deltaTemp=deltaTemp,
|
|
3842
3835
|
) # [kg/s]
|
|
3843
3836
|
ROCD_i = conv.m2ft(ROCDisu) * 60
|
|
3844
3837
|
|
|
@@ -3849,7 +3842,7 @@ def constantSpeedSlope(
|
|
|
3849
3842
|
v=TAS_i,
|
|
3850
3843
|
h=H_m,
|
|
3851
3844
|
config="CR",
|
|
3852
|
-
|
|
3845
|
+
deltaTemp=deltaTemp,
|
|
3853
3846
|
) # IDLE Thrust
|
|
3854
3847
|
FUEL_min = AC.ff(
|
|
3855
3848
|
flightPhase="Descent",
|
|
@@ -3863,7 +3856,7 @@ def constantSpeedSlope(
|
|
|
3863
3856
|
rating="MCMB",
|
|
3864
3857
|
v=TAS_i,
|
|
3865
3858
|
h=H_m,
|
|
3866
|
-
|
|
3859
|
+
deltaTemp=deltaTemp,
|
|
3867
3860
|
config="CR",
|
|
3868
3861
|
) # MCMB Thrust
|
|
3869
3862
|
FUEL_max = AC.ff(
|
|
@@ -4262,7 +4255,7 @@ def constantSpeedSlope_time(
|
|
|
4262
4255
|
Hp_init,
|
|
4263
4256
|
slopetarget,
|
|
4264
4257
|
m_init,
|
|
4265
|
-
|
|
4258
|
+
deltaTemp,
|
|
4266
4259
|
wS=0.0,
|
|
4267
4260
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
4268
4261
|
Lat=None,
|
|
@@ -4286,7 +4279,7 @@ def constantSpeedSlope_time(
|
|
|
4286
4279
|
:param Hp_init: Initial pressure altitude [ft].
|
|
4287
4280
|
:param slopetarget: Desired slope (trajectory angle) to follow [deg].
|
|
4288
4281
|
:param m_init: Initial aircraft mass [kg].
|
|
4289
|
-
:param
|
|
4282
|
+
:param deltaTemp: Deviation from standard ISA temperature [K].
|
|
4290
4283
|
:param wS: Longitudinal wind speed component (affects ground speed) [kt]. Default is 0.0.
|
|
4291
4284
|
:param turnMetrics: A dictionary defining the turn parameters:
|
|
4292
4285
|
|
|
@@ -4545,10 +4538,10 @@ def constantSpeedSlope_time(
|
|
|
4545
4538
|
# atmosphere properties
|
|
4546
4539
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
4547
4540
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
4548
|
-
h=H_m,
|
|
4541
|
+
h=H_m, deltaTemp=deltaTemp
|
|
4549
4542
|
)
|
|
4550
4543
|
temp_const = (theta * const.temp_0) / (
|
|
4551
|
-
theta * const.temp_0 -
|
|
4544
|
+
theta * const.temp_0 - deltaTemp
|
|
4552
4545
|
)
|
|
4553
4546
|
|
|
4554
4547
|
# aircraft speed
|
|
@@ -4564,7 +4557,7 @@ def constantSpeedSlope_time(
|
|
|
4564
4557
|
] = AC.ARPM.ARPMProcedure(
|
|
4565
4558
|
phase=phase,
|
|
4566
4559
|
h=H_m,
|
|
4567
|
-
|
|
4560
|
+
deltaTemp=deltaTemp,
|
|
4568
4561
|
mass=mass[-1],
|
|
4569
4562
|
rating="ARPM",
|
|
4570
4563
|
)
|
|
@@ -4594,7 +4587,7 @@ def constantSpeedSlope_time(
|
|
|
4594
4587
|
ESF_i = AC.esf(
|
|
4595
4588
|
h=H_m,
|
|
4596
4589
|
M=M_i,
|
|
4597
|
-
|
|
4590
|
+
deltaTemp=deltaTemp,
|
|
4598
4591
|
flightEvolution=("const" + speedType),
|
|
4599
4592
|
)
|
|
4600
4593
|
|
|
@@ -4620,7 +4613,7 @@ def constantSpeedSlope_time(
|
|
|
4620
4613
|
# Compute power required for target ROCD
|
|
4621
4614
|
Preq_target_i = AC.Peng_target(
|
|
4622
4615
|
temp=theta * const.temp_0,
|
|
4623
|
-
|
|
4616
|
+
deltaTemp=deltaTemp,
|
|
4624
4617
|
ROCD=ROCDisu,
|
|
4625
4618
|
mass=mass_i,
|
|
4626
4619
|
Preq=Preq_i,
|
|
@@ -4636,7 +4629,7 @@ def constantSpeedSlope_time(
|
|
|
4636
4629
|
phase=phase,
|
|
4637
4630
|
v=CAS_i,
|
|
4638
4631
|
mass=mass_i,
|
|
4639
|
-
|
|
4632
|
+
deltaTemp=deltaTemp,
|
|
4640
4633
|
)
|
|
4641
4634
|
else:
|
|
4642
4635
|
config_i = config_default
|
|
@@ -4676,7 +4669,7 @@ def constantSpeedSlope_time(
|
|
|
4676
4669
|
phase=phase,
|
|
4677
4670
|
v=CAS_i,
|
|
4678
4671
|
mass=mass_i,
|
|
4679
|
-
|
|
4672
|
+
deltaTemp=deltaTemp,
|
|
4680
4673
|
)
|
|
4681
4674
|
else:
|
|
4682
4675
|
config_i = config_default
|
|
@@ -4722,7 +4715,7 @@ def constantSpeedSlope_time(
|
|
|
4722
4715
|
mass=mass_i,
|
|
4723
4716
|
ESF=ESF_i,
|
|
4724
4717
|
theta=theta,
|
|
4725
|
-
|
|
4718
|
+
deltaTemp=deltaTemp,
|
|
4726
4719
|
)
|
|
4727
4720
|
)
|
|
4728
4721
|
* 60
|
|
@@ -4737,7 +4730,7 @@ def constantSpeedSlope_time(
|
|
|
4737
4730
|
mass=mass_i,
|
|
4738
4731
|
ESF=ESF_i,
|
|
4739
4732
|
theta=theta,
|
|
4740
|
-
|
|
4733
|
+
deltaTemp=deltaTemp,
|
|
4741
4734
|
)
|
|
4742
4735
|
)
|
|
4743
4736
|
* 60
|
|
@@ -4767,7 +4760,7 @@ def constantSpeedSlope_time(
|
|
|
4767
4760
|
mass=mass_i,
|
|
4768
4761
|
ESF=ESF_i,
|
|
4769
4762
|
theta=theta,
|
|
4770
|
-
|
|
4763
|
+
deltaTemp=deltaTemp,
|
|
4771
4764
|
)
|
|
4772
4765
|
)
|
|
4773
4766
|
* 60
|
|
@@ -4782,7 +4775,7 @@ def constantSpeedSlope_time(
|
|
|
4782
4775
|
mass=mass_i,
|
|
4783
4776
|
ESF=ESF_i,
|
|
4784
4777
|
theta=theta,
|
|
4785
|
-
|
|
4778
|
+
deltaTemp=deltaTemp,
|
|
4786
4779
|
)
|
|
4787
4780
|
)
|
|
4788
4781
|
* 60
|
|
@@ -4808,28 +4801,28 @@ def constantSpeedSlope_time(
|
|
|
4808
4801
|
delta=delta,
|
|
4809
4802
|
theta=theta,
|
|
4810
4803
|
M=M_i,
|
|
4811
|
-
|
|
4804
|
+
deltaTemp=deltaTemp,
|
|
4812
4805
|
) # IDLE Thrust
|
|
4813
4806
|
FUEL_min = AC.ff(
|
|
4814
4807
|
rating="LIDL",
|
|
4815
4808
|
delta=delta,
|
|
4816
4809
|
theta=theta,
|
|
4817
4810
|
M=M_i,
|
|
4818
|
-
|
|
4811
|
+
deltaTemp=deltaTemp,
|
|
4819
4812
|
) # IDLE Fuel Flow
|
|
4820
4813
|
THR_max = AC.Thrust(
|
|
4821
4814
|
rating="MCMB",
|
|
4822
4815
|
delta=delta,
|
|
4823
4816
|
theta=theta,
|
|
4824
4817
|
M=M_i,
|
|
4825
|
-
|
|
4818
|
+
deltaTemp=deltaTemp,
|
|
4826
4819
|
) # MCMB Thrust
|
|
4827
4820
|
FUEL_max = AC.ff(
|
|
4828
4821
|
rating="MCMB",
|
|
4829
4822
|
delta=delta,
|
|
4830
4823
|
theta=theta,
|
|
4831
4824
|
M=M_i,
|
|
4832
|
-
|
|
4825
|
+
deltaTemp=deltaTemp,
|
|
4833
4826
|
) # MCMB Fuel Flow
|
|
4834
4827
|
|
|
4835
4828
|
if THR_i < THR_min:
|
|
@@ -4865,7 +4858,7 @@ def constantSpeedSlope_time(
|
|
|
4865
4858
|
delta=delta,
|
|
4866
4859
|
theta=theta,
|
|
4867
4860
|
M=M_i,
|
|
4868
|
-
|
|
4861
|
+
deltaTemp=deltaTemp,
|
|
4869
4862
|
) # [kg/s]
|
|
4870
4863
|
ROCD_i = conv.m2ft(ROCDisu) * 60
|
|
4871
4864
|
|
|
@@ -4876,7 +4869,7 @@ def constantSpeedSlope_time(
|
|
|
4876
4869
|
v=TAS_i,
|
|
4877
4870
|
h=H_m,
|
|
4878
4871
|
config="CR",
|
|
4879
|
-
|
|
4872
|
+
deltaTemp=deltaTemp,
|
|
4880
4873
|
) # IDLE Thrust
|
|
4881
4874
|
FUEL_min = AC.ff(
|
|
4882
4875
|
flightPhase="Descent",
|
|
@@ -4890,7 +4883,7 @@ def constantSpeedSlope_time(
|
|
|
4890
4883
|
rating="MCMB",
|
|
4891
4884
|
v=TAS_i,
|
|
4892
4885
|
h=H_m,
|
|
4893
|
-
|
|
4886
|
+
deltaTemp=deltaTemp,
|
|
4894
4887
|
config="CR",
|
|
4895
4888
|
) # MCMB Thrust
|
|
4896
4889
|
FUEL_max = AC.ff(
|
|
@@ -5041,10 +5034,10 @@ def constantSpeedSlope_time(
|
|
|
5041
5034
|
gamma_i = 90 * np.sign(ROCD_i)
|
|
5042
5035
|
else:
|
|
5043
5036
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
5044
|
-
h=conv.ft2m(Hp_i),
|
|
5037
|
+
h=conv.ft2m(Hp_i), deltaTemp=deltaTemp
|
|
5045
5038
|
)
|
|
5046
5039
|
temp_const = (theta * const.temp_0) / (
|
|
5047
|
-
theta * const.temp_0 -
|
|
5040
|
+
theta * const.temp_0 - deltaTemp
|
|
5048
5041
|
)
|
|
5049
5042
|
if AC.BADAFamily.BADAE:
|
|
5050
5043
|
gamma_i = degrees(
|
|
@@ -5284,7 +5277,7 @@ def constantSpeedRating(
|
|
|
5284
5277
|
Hp_init,
|
|
5285
5278
|
Hp_final,
|
|
5286
5279
|
m_init,
|
|
5287
|
-
|
|
5280
|
+
deltaTemp,
|
|
5288
5281
|
wS=0.0,
|
|
5289
5282
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
5290
5283
|
Lat=None,
|
|
@@ -5312,7 +5305,7 @@ def constantSpeedRating(
|
|
|
5312
5305
|
:param Hp_init: Initial pressure altitude [ft].
|
|
5313
5306
|
:param Hp_final: Final pressure altitude [ft].
|
|
5314
5307
|
:param m_init: Initial mass of the aircraft at the start of the segment [kg].
|
|
5315
|
-
:param
|
|
5308
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
5316
5309
|
:param wS: Wind speed component along the longitudinal axis (affects ground speed) [kt]. Default is 0.0.
|
|
5317
5310
|
:param turnMetrics: A dictionary defining the turn parameters:
|
|
5318
5311
|
|
|
@@ -5602,10 +5595,10 @@ def constantSpeedRating(
|
|
|
5602
5595
|
# atmosphere properties
|
|
5603
5596
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
5604
5597
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
5605
|
-
h=H_m,
|
|
5598
|
+
h=H_m, deltaTemp=deltaTemp
|
|
5606
5599
|
)
|
|
5607
5600
|
temp_const = (theta * const.temp_0) / (
|
|
5608
|
-
theta * const.temp_0 -
|
|
5601
|
+
theta * const.temp_0 - deltaTemp
|
|
5609
5602
|
)
|
|
5610
5603
|
|
|
5611
5604
|
# aircraft speed
|
|
@@ -5621,7 +5614,7 @@ def constantSpeedRating(
|
|
|
5621
5614
|
] = AC.ARPM.ARPMProcedure(
|
|
5622
5615
|
phase=phase,
|
|
5623
5616
|
h=H_m,
|
|
5624
|
-
|
|
5617
|
+
deltaTemp=deltaTemp,
|
|
5625
5618
|
mass=mass[-1],
|
|
5626
5619
|
rating=rating,
|
|
5627
5620
|
)
|
|
@@ -5651,7 +5644,7 @@ def constantSpeedRating(
|
|
|
5651
5644
|
ESF_i = AC.esf(
|
|
5652
5645
|
h=H_m,
|
|
5653
5646
|
M=M_i,
|
|
5654
|
-
|
|
5647
|
+
deltaTemp=deltaTemp,
|
|
5655
5648
|
flightEvolution=("const" + speedType),
|
|
5656
5649
|
)
|
|
5657
5650
|
|
|
@@ -5702,14 +5695,14 @@ def constantSpeedRating(
|
|
|
5702
5695
|
delta=delta,
|
|
5703
5696
|
theta=theta,
|
|
5704
5697
|
M=M_i,
|
|
5705
|
-
|
|
5698
|
+
deltaTemp=deltaTemp,
|
|
5706
5699
|
) # [N]
|
|
5707
5700
|
FUEL_i = AC.ff(
|
|
5708
5701
|
rating=rating,
|
|
5709
5702
|
delta=delta,
|
|
5710
5703
|
theta=theta,
|
|
5711
5704
|
M=M_i,
|
|
5712
|
-
|
|
5705
|
+
deltaTemp=deltaTemp,
|
|
5713
5706
|
)
|
|
5714
5707
|
|
|
5715
5708
|
# BADA3
|
|
@@ -5721,7 +5714,7 @@ def constantSpeedRating(
|
|
|
5721
5714
|
phase=phase,
|
|
5722
5715
|
v=CAS_i,
|
|
5723
5716
|
mass=mass_i,
|
|
5724
|
-
|
|
5717
|
+
deltaTemp=deltaTemp,
|
|
5725
5718
|
)
|
|
5726
5719
|
else:
|
|
5727
5720
|
config_i = config_default
|
|
@@ -5740,7 +5733,7 @@ def constantSpeedRating(
|
|
|
5740
5733
|
v=TAS_i,
|
|
5741
5734
|
h=H_m,
|
|
5742
5735
|
config=config_i,
|
|
5743
|
-
|
|
5736
|
+
deltaTemp=deltaTemp,
|
|
5744
5737
|
)
|
|
5745
5738
|
FUEL_i = AC.ff(
|
|
5746
5739
|
flightPhase=phase, v=TAS_i, h=H_m, T=THR_i, config=config_i
|
|
@@ -5775,7 +5768,7 @@ def constantSpeedRating(
|
|
|
5775
5768
|
mass=mass_i,
|
|
5776
5769
|
ESF=ESF_i,
|
|
5777
5770
|
theta=theta,
|
|
5778
|
-
|
|
5771
|
+
deltaTemp=deltaTemp,
|
|
5779
5772
|
)
|
|
5780
5773
|
)
|
|
5781
5774
|
* 60
|
|
@@ -5790,7 +5783,7 @@ def constantSpeedRating(
|
|
|
5790
5783
|
phase=phase,
|
|
5791
5784
|
v=CAS_i,
|
|
5792
5785
|
mass=mass_i,
|
|
5793
|
-
|
|
5786
|
+
deltaTemp=deltaTemp,
|
|
5794
5787
|
)
|
|
5795
5788
|
else:
|
|
5796
5789
|
config_i = config_default
|
|
@@ -5841,7 +5834,7 @@ def constantSpeedRating(
|
|
|
5841
5834
|
phase=phase,
|
|
5842
5835
|
v=CAS_i,
|
|
5843
5836
|
mass=mass_i,
|
|
5844
|
-
|
|
5837
|
+
deltaTemp=deltaTemp,
|
|
5845
5838
|
)
|
|
5846
5839
|
else:
|
|
5847
5840
|
config_i = config_default
|
|
@@ -5875,7 +5868,7 @@ def constantSpeedRating(
|
|
|
5875
5868
|
mass=mass_i,
|
|
5876
5869
|
ESF=ESF_i,
|
|
5877
5870
|
h=H_m,
|
|
5878
|
-
|
|
5871
|
+
deltaTemp=deltaTemp,
|
|
5879
5872
|
reducedPower=reducedPower,
|
|
5880
5873
|
)
|
|
5881
5874
|
)
|
|
@@ -6234,7 +6227,7 @@ def constantSpeedRating_time(
|
|
|
6234
6227
|
Hp_init,
|
|
6235
6228
|
phase,
|
|
6236
6229
|
m_init,
|
|
6237
|
-
|
|
6230
|
+
deltaTemp,
|
|
6238
6231
|
wS=0.0,
|
|
6239
6232
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
6240
6233
|
Lat=None,
|
|
@@ -6262,7 +6255,7 @@ def constantSpeedRating_time(
|
|
|
6262
6255
|
:param Hp_init: Initial pressure altitude [ft].
|
|
6263
6256
|
:param phase: Phase of flight (Climb or Descent).
|
|
6264
6257
|
:param m_init: Initial mass of the aircraft at the start of the segment [kg].
|
|
6265
|
-
:param
|
|
6258
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
6266
6259
|
:param wS: Wind speed component along the longitudinal axis (affects ground speed) [kt]. Default is 0.0.
|
|
6267
6260
|
:param turnMetrics: A dictionary defining the turn parameters:
|
|
6268
6261
|
|
|
@@ -6556,10 +6549,10 @@ def constantSpeedRating_time(
|
|
|
6556
6549
|
# atmosphere properties
|
|
6557
6550
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
6558
6551
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
6559
|
-
h=H_m,
|
|
6552
|
+
h=H_m, deltaTemp=deltaTemp
|
|
6560
6553
|
)
|
|
6561
6554
|
temp_const = (theta * const.temp_0) / (
|
|
6562
|
-
theta * const.temp_0 -
|
|
6555
|
+
theta * const.temp_0 - deltaTemp
|
|
6563
6556
|
)
|
|
6564
6557
|
|
|
6565
6558
|
# aircraft speed
|
|
@@ -6575,7 +6568,7 @@ def constantSpeedRating_time(
|
|
|
6575
6568
|
] = AC.ARPM.ARPMProcedure(
|
|
6576
6569
|
phase=phase,
|
|
6577
6570
|
h=H_m,
|
|
6578
|
-
|
|
6571
|
+
deltaTemp=deltaTemp,
|
|
6579
6572
|
mass=mass[-1],
|
|
6580
6573
|
rating=rating,
|
|
6581
6574
|
)
|
|
@@ -6605,7 +6598,7 @@ def constantSpeedRating_time(
|
|
|
6605
6598
|
ESF_i = AC.esf(
|
|
6606
6599
|
h=H_m,
|
|
6607
6600
|
M=M_i,
|
|
6608
|
-
|
|
6601
|
+
deltaTemp=deltaTemp,
|
|
6609
6602
|
flightEvolution=("const" + speedType),
|
|
6610
6603
|
)
|
|
6611
6604
|
|
|
@@ -6658,14 +6651,14 @@ def constantSpeedRating_time(
|
|
|
6658
6651
|
delta=delta,
|
|
6659
6652
|
theta=theta,
|
|
6660
6653
|
M=M_i,
|
|
6661
|
-
|
|
6654
|
+
deltaTemp=deltaTemp,
|
|
6662
6655
|
) # [N]
|
|
6663
6656
|
FUEL_i = AC.ff(
|
|
6664
6657
|
rating=rating,
|
|
6665
6658
|
delta=delta,
|
|
6666
6659
|
theta=theta,
|
|
6667
6660
|
M=M_i,
|
|
6668
|
-
|
|
6661
|
+
deltaTemp=deltaTemp,
|
|
6669
6662
|
)
|
|
6670
6663
|
|
|
6671
6664
|
# BADA3
|
|
@@ -6677,7 +6670,7 @@ def constantSpeedRating_time(
|
|
|
6677
6670
|
phase=phase,
|
|
6678
6671
|
v=CAS_i,
|
|
6679
6672
|
mass=mass_i,
|
|
6680
|
-
|
|
6673
|
+
deltaTemp=deltaTemp,
|
|
6681
6674
|
)
|
|
6682
6675
|
else:
|
|
6683
6676
|
config_i = config_default
|
|
@@ -6696,7 +6689,7 @@ def constantSpeedRating_time(
|
|
|
6696
6689
|
v=TAS_i,
|
|
6697
6690
|
h=H_m,
|
|
6698
6691
|
config=config_i,
|
|
6699
|
-
|
|
6692
|
+
deltaTemp=deltaTemp,
|
|
6700
6693
|
)
|
|
6701
6694
|
FUEL_i = AC.ff(
|
|
6702
6695
|
flightPhase=phase, v=TAS_i, h=H_m, T=THR_i, config=config_i
|
|
@@ -6717,7 +6710,7 @@ def constantSpeedRating_time(
|
|
|
6717
6710
|
mass=mass_i,
|
|
6718
6711
|
ESF=ESF_i,
|
|
6719
6712
|
theta=theta,
|
|
6720
|
-
|
|
6713
|
+
deltaTemp=deltaTemp,
|
|
6721
6714
|
)
|
|
6722
6715
|
)
|
|
6723
6716
|
* 60
|
|
@@ -6732,7 +6725,7 @@ def constantSpeedRating_time(
|
|
|
6732
6725
|
phase=phase,
|
|
6733
6726
|
v=CAS_i,
|
|
6734
6727
|
mass=mass_i,
|
|
6735
|
-
|
|
6728
|
+
deltaTemp=deltaTemp,
|
|
6736
6729
|
)
|
|
6737
6730
|
else:
|
|
6738
6731
|
config_i = config_default
|
|
@@ -6783,7 +6776,7 @@ def constantSpeedRating_time(
|
|
|
6783
6776
|
phase=phase,
|
|
6784
6777
|
v=CAS_i,
|
|
6785
6778
|
mass=mass_i,
|
|
6786
|
-
|
|
6779
|
+
deltaTemp=deltaTemp,
|
|
6787
6780
|
)
|
|
6788
6781
|
else:
|
|
6789
6782
|
config_i = config_default
|
|
@@ -6817,7 +6810,7 @@ def constantSpeedRating_time(
|
|
|
6817
6810
|
mass=mass_i,
|
|
6818
6811
|
ESF=ESF_i,
|
|
6819
6812
|
h=H_m,
|
|
6820
|
-
|
|
6813
|
+
deltaTemp=deltaTemp,
|
|
6821
6814
|
reducedPower=reducedPower,
|
|
6822
6815
|
)
|
|
6823
6816
|
)
|
|
@@ -6931,10 +6924,10 @@ def constantSpeedRating_time(
|
|
|
6931
6924
|
gamma_i = 90 * np.sign(ROCD_i)
|
|
6932
6925
|
else:
|
|
6933
6926
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
6934
|
-
h=conv.ft2m(Hp_i),
|
|
6927
|
+
h=conv.ft2m(Hp_i), deltaTemp=deltaTemp
|
|
6935
6928
|
)
|
|
6936
6929
|
temp_const = (theta * const.temp_0) / (
|
|
6937
|
-
theta * const.temp_0 -
|
|
6930
|
+
theta * const.temp_0 - deltaTemp
|
|
6938
6931
|
)
|
|
6939
6932
|
if AC.BADAFamily.BADAE:
|
|
6940
6933
|
gamma_i = degrees(
|
|
@@ -7175,7 +7168,7 @@ def accDec(
|
|
|
7175
7168
|
phase,
|
|
7176
7169
|
Hp_init,
|
|
7177
7170
|
m_init,
|
|
7178
|
-
|
|
7171
|
+
deltaTemp,
|
|
7179
7172
|
wS=0.0,
|
|
7180
7173
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
7181
7174
|
control=None,
|
|
@@ -7217,7 +7210,7 @@ def accDec(
|
|
|
7217
7210
|
- ESFtarget: Energy Share Factor to be followed [-].
|
|
7218
7211
|
:param Hp_init: Initial pressure altitude [ft].
|
|
7219
7212
|
:param m_init: Initial aircraft mass [kg].
|
|
7220
|
-
:param
|
|
7213
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
7221
7214
|
:param wS: Wind speed component along the longitudinal axis (affects ground speed) [kt]. Default is 0.0.
|
|
7222
7215
|
:param turnMetrics: A dictionary defining turn parameters:
|
|
7223
7216
|
|
|
@@ -7506,7 +7499,7 @@ def accDec(
|
|
|
7506
7499
|
else:
|
|
7507
7500
|
maxRating = "MCMB"
|
|
7508
7501
|
else:
|
|
7509
|
-
maxRating = checkArgument("maxRating", **kwargs)
|
|
7502
|
+
maxRating = utils.checkArgument("maxRating", **kwargs)
|
|
7510
7503
|
|
|
7511
7504
|
# Determine engine rating
|
|
7512
7505
|
if (
|
|
@@ -7616,10 +7609,10 @@ def accDec(
|
|
|
7616
7609
|
# atmosphere properties
|
|
7617
7610
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
7618
7611
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
7619
|
-
h=H_m,
|
|
7612
|
+
h=H_m, deltaTemp=deltaTemp
|
|
7620
7613
|
)
|
|
7621
7614
|
temp_const = (theta * const.temp_0) / (
|
|
7622
|
-
theta * const.temp_0 -
|
|
7615
|
+
theta * const.temp_0 - deltaTemp
|
|
7623
7616
|
)
|
|
7624
7617
|
|
|
7625
7618
|
# aircraft speed
|
|
@@ -7711,7 +7704,7 @@ def accDec(
|
|
|
7711
7704
|
mass=mass_i,
|
|
7712
7705
|
ESF=ESFc,
|
|
7713
7706
|
theta=theta,
|
|
7714
|
-
|
|
7707
|
+
deltaTemp=deltaTemp,
|
|
7715
7708
|
)
|
|
7716
7709
|
)
|
|
7717
7710
|
* 60
|
|
@@ -7741,7 +7734,7 @@ def accDec(
|
|
|
7741
7734
|
mass=mass_i,
|
|
7742
7735
|
ESF=ESFc,
|
|
7743
7736
|
theta=theta,
|
|
7744
|
-
|
|
7737
|
+
deltaTemp=deltaTemp,
|
|
7745
7738
|
)
|
|
7746
7739
|
)
|
|
7747
7740
|
* 60
|
|
@@ -7813,7 +7806,7 @@ def accDec(
|
|
|
7813
7806
|
phase=phase,
|
|
7814
7807
|
v=CAS_i,
|
|
7815
7808
|
mass=mass_i,
|
|
7816
|
-
|
|
7809
|
+
deltaTemp=deltaTemp,
|
|
7817
7810
|
)
|
|
7818
7811
|
else:
|
|
7819
7812
|
config_i = config_default
|
|
@@ -7862,28 +7855,28 @@ def accDec(
|
|
|
7862
7855
|
delta=delta,
|
|
7863
7856
|
theta=theta,
|
|
7864
7857
|
M=M_i,
|
|
7865
|
-
|
|
7858
|
+
deltaTemp=deltaTemp,
|
|
7866
7859
|
) # IDLE Thrust
|
|
7867
7860
|
FUEL_min = AC.ff(
|
|
7868
7861
|
rating="LIDL",
|
|
7869
7862
|
delta=delta,
|
|
7870
7863
|
theta=theta,
|
|
7871
7864
|
M=M_i,
|
|
7872
|
-
|
|
7865
|
+
deltaTemp=deltaTemp,
|
|
7873
7866
|
) # IDLE Fuel Flow
|
|
7874
7867
|
THR_max = AC.Thrust(
|
|
7875
7868
|
rating="MCMB",
|
|
7876
7869
|
delta=delta,
|
|
7877
7870
|
theta=theta,
|
|
7878
7871
|
M=M_i,
|
|
7879
|
-
|
|
7872
|
+
deltaTemp=deltaTemp,
|
|
7880
7873
|
) # MCMB Thrust
|
|
7881
7874
|
FUEL_max = AC.ff(
|
|
7882
7875
|
rating="MCMB",
|
|
7883
7876
|
delta=delta,
|
|
7884
7877
|
theta=theta,
|
|
7885
7878
|
M=M_i,
|
|
7886
|
-
|
|
7879
|
+
deltaTemp=deltaTemp,
|
|
7887
7880
|
) # MCMB Fuel Flow
|
|
7888
7881
|
|
|
7889
7882
|
if THR_i < THR_min:
|
|
@@ -7899,7 +7892,7 @@ def accDec(
|
|
|
7899
7892
|
delta=delta,
|
|
7900
7893
|
theta=theta,
|
|
7901
7894
|
M=M_i,
|
|
7902
|
-
|
|
7895
|
+
deltaTemp=deltaTemp,
|
|
7903
7896
|
)
|
|
7904
7897
|
else:
|
|
7905
7898
|
THR_i = AC.Thrust(
|
|
@@ -7907,7 +7900,7 @@ def accDec(
|
|
|
7907
7900
|
delta=delta,
|
|
7908
7901
|
theta=theta,
|
|
7909
7902
|
M=M_i,
|
|
7910
|
-
|
|
7903
|
+
deltaTemp=deltaTemp,
|
|
7911
7904
|
) # [N]
|
|
7912
7905
|
CT = AC.CT(Thrust=THR_i, delta=delta)
|
|
7913
7906
|
FUEL_i = AC.ff(
|
|
@@ -7915,7 +7908,7 @@ def accDec(
|
|
|
7915
7908
|
delta=delta,
|
|
7916
7909
|
theta=theta,
|
|
7917
7910
|
M=M_i,
|
|
7918
|
-
|
|
7911
|
+
deltaTemp=deltaTemp,
|
|
7919
7912
|
)
|
|
7920
7913
|
|
|
7921
7914
|
# compute excess power
|
|
@@ -7930,7 +7923,7 @@ def accDec(
|
|
|
7930
7923
|
phase=phase,
|
|
7931
7924
|
v=CAS_i,
|
|
7932
7925
|
mass=mass_i,
|
|
7933
|
-
|
|
7926
|
+
deltaTemp=deltaTemp,
|
|
7934
7927
|
)
|
|
7935
7928
|
else:
|
|
7936
7929
|
config_i = config_default
|
|
@@ -7974,7 +7967,7 @@ def accDec(
|
|
|
7974
7967
|
v=TAS_i,
|
|
7975
7968
|
h=H_m,
|
|
7976
7969
|
config="CR",
|
|
7977
|
-
|
|
7970
|
+
deltaTemp=deltaTemp,
|
|
7978
7971
|
) # IDLE Thrust
|
|
7979
7972
|
FUEL_min = AC.ff(
|
|
7980
7973
|
flightPhase="Descent",
|
|
@@ -7989,7 +7982,7 @@ def accDec(
|
|
|
7989
7982
|
v=TAS_i,
|
|
7990
7983
|
h=H_m,
|
|
7991
7984
|
config="CR",
|
|
7992
|
-
|
|
7985
|
+
deltaTemp=deltaTemp,
|
|
7993
7986
|
) # MCMB Thrust
|
|
7994
7987
|
FUEL_max = AC.ff(
|
|
7995
7988
|
flightPhase="Climb",
|
|
@@ -8020,7 +8013,7 @@ def accDec(
|
|
|
8020
8013
|
v=TAS_i,
|
|
8021
8014
|
h=H_m,
|
|
8022
8015
|
config=config_i,
|
|
8023
|
-
|
|
8016
|
+
deltaTemp=deltaTemp,
|
|
8024
8017
|
)
|
|
8025
8018
|
if rating == "MCMB" or rating == "MTKF":
|
|
8026
8019
|
FUEL_i = AC.ff(
|
|
@@ -8202,10 +8195,10 @@ def accDec(
|
|
|
8202
8195
|
gamma_i = 90 * np.sign(ROCD_i)
|
|
8203
8196
|
else:
|
|
8204
8197
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
8205
|
-
h=conv.ft2m(Hp_i),
|
|
8198
|
+
h=conv.ft2m(Hp_i), deltaTemp=deltaTemp
|
|
8206
8199
|
)
|
|
8207
8200
|
temp_const = (theta * const.temp_0) / (
|
|
8208
|
-
theta * const.temp_0 -
|
|
8201
|
+
theta * const.temp_0 - deltaTemp
|
|
8209
8202
|
)
|
|
8210
8203
|
if AC.BADAFamily.BADAE:
|
|
8211
8204
|
gamma_i = degrees(
|
|
@@ -8457,7 +8450,7 @@ def accDec_time(
|
|
|
8457
8450
|
phase,
|
|
8458
8451
|
Hp_init,
|
|
8459
8452
|
m_init,
|
|
8460
|
-
|
|
8453
|
+
deltaTemp,
|
|
8461
8454
|
wS=0.0,
|
|
8462
8455
|
turnMetrics={"rateOfTurn": 0.0, "bankAngle": 0.0, "directionOfTurn": None},
|
|
8463
8456
|
control=None,
|
|
@@ -8500,7 +8493,7 @@ def accDec_time(
|
|
|
8500
8493
|
- ESFtarget: Energy Share Factor to be followed [-].
|
|
8501
8494
|
:param Hp_init: Initial pressure altitude [ft].
|
|
8502
8495
|
:param m_init: Initial aircraft mass [kg].
|
|
8503
|
-
:param
|
|
8496
|
+
:param deltaTemp: Deviation from the standard ISA temperature [K].
|
|
8504
8497
|
:param wS: Wind speed component along the longitudinal axis (affects ground speed) [kt]. Default is 0.0.
|
|
8505
8498
|
:param turnMetrics: A dictionary defining turn parameters:
|
|
8506
8499
|
|
|
@@ -8779,7 +8772,7 @@ def accDec_time(
|
|
|
8779
8772
|
else:
|
|
8780
8773
|
maxRating = "MCMB"
|
|
8781
8774
|
else:
|
|
8782
|
-
maxRating = checkArgument("maxRating", **kwargs)
|
|
8775
|
+
maxRating = utils.checkArgument("maxRating", **kwargs)
|
|
8783
8776
|
|
|
8784
8777
|
# Determine engine rating
|
|
8785
8778
|
if (
|
|
@@ -8812,7 +8805,7 @@ def accDec_time(
|
|
|
8812
8805
|
|
|
8813
8806
|
# initialize output parameters
|
|
8814
8807
|
[theta_init, delta_init, sigma_init] = atm.atmosphereProperties(
|
|
8815
|
-
h=conv.ft2m(Hp_init),
|
|
8808
|
+
h=conv.ft2m(Hp_init), deltaTemp=deltaTemp
|
|
8816
8809
|
)
|
|
8817
8810
|
[M_init, CAS_init, TAS_init] = atm.convertSpeed(
|
|
8818
8811
|
v=v_init,
|
|
@@ -8903,10 +8896,10 @@ def accDec_time(
|
|
|
8903
8896
|
# atmosphere properties
|
|
8904
8897
|
H_m = conv.ft2m(Hp_i) # altitude [m]
|
|
8905
8898
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
8906
|
-
h=H_m,
|
|
8899
|
+
h=H_m, deltaTemp=deltaTemp
|
|
8907
8900
|
)
|
|
8908
8901
|
temp_const = (theta * const.temp_0) / (
|
|
8909
|
-
theta * const.temp_0 -
|
|
8902
|
+
theta * const.temp_0 - deltaTemp
|
|
8910
8903
|
)
|
|
8911
8904
|
|
|
8912
8905
|
step_time = length_loop - time[-1]
|
|
@@ -8994,7 +8987,7 @@ def accDec_time(
|
|
|
8994
8987
|
mass=mass_i,
|
|
8995
8988
|
ESF=ESFc,
|
|
8996
8989
|
theta=theta,
|
|
8997
|
-
|
|
8990
|
+
deltaTemp=deltaTemp,
|
|
8998
8991
|
)
|
|
8999
8992
|
)
|
|
9000
8993
|
* 60
|
|
@@ -9023,7 +9016,7 @@ def accDec_time(
|
|
|
9023
9016
|
mass=mass_i,
|
|
9024
9017
|
ESF=ESFc,
|
|
9025
9018
|
theta=theta,
|
|
9026
|
-
|
|
9019
|
+
deltaTemp=deltaTemp,
|
|
9027
9020
|
)
|
|
9028
9021
|
)
|
|
9029
9022
|
* 60
|
|
@@ -9095,7 +9088,7 @@ def accDec_time(
|
|
|
9095
9088
|
phase=phase,
|
|
9096
9089
|
v=CAS_i,
|
|
9097
9090
|
mass=mass_i,
|
|
9098
|
-
|
|
9091
|
+
deltaTemp=deltaTemp,
|
|
9099
9092
|
)
|
|
9100
9093
|
else:
|
|
9101
9094
|
config_i = config_default
|
|
@@ -9144,28 +9137,28 @@ def accDec_time(
|
|
|
9144
9137
|
delta=delta,
|
|
9145
9138
|
theta=theta,
|
|
9146
9139
|
M=M_i,
|
|
9147
|
-
|
|
9140
|
+
deltaTemp=deltaTemp,
|
|
9148
9141
|
) # IDLE Thrust
|
|
9149
9142
|
FUEL_min = AC.ff(
|
|
9150
9143
|
rating="LIDL",
|
|
9151
9144
|
delta=delta,
|
|
9152
9145
|
theta=theta,
|
|
9153
9146
|
M=M_i,
|
|
9154
|
-
|
|
9147
|
+
deltaTemp=deltaTemp,
|
|
9155
9148
|
) # IDLE Fuel Flow
|
|
9156
9149
|
THR_max = AC.Thrust(
|
|
9157
9150
|
rating="MCMB",
|
|
9158
9151
|
delta=delta,
|
|
9159
9152
|
theta=theta,
|
|
9160
9153
|
M=M_i,
|
|
9161
|
-
|
|
9154
|
+
deltaTemp=deltaTemp,
|
|
9162
9155
|
) # MCMB Thrust
|
|
9163
9156
|
FUEL_max = AC.ff(
|
|
9164
9157
|
rating="MCMB",
|
|
9165
9158
|
delta=delta,
|
|
9166
9159
|
theta=theta,
|
|
9167
9160
|
M=M_i,
|
|
9168
|
-
|
|
9161
|
+
deltaTemp=deltaTemp,
|
|
9169
9162
|
) # MCMB Fuel Flow
|
|
9170
9163
|
|
|
9171
9164
|
if THR_i < THR_min:
|
|
@@ -9181,7 +9174,7 @@ def accDec_time(
|
|
|
9181
9174
|
delta=delta,
|
|
9182
9175
|
theta=theta,
|
|
9183
9176
|
M=M_i,
|
|
9184
|
-
|
|
9177
|
+
deltaTemp=deltaTemp,
|
|
9185
9178
|
)
|
|
9186
9179
|
else:
|
|
9187
9180
|
THR_i = AC.Thrust(
|
|
@@ -9189,7 +9182,7 @@ def accDec_time(
|
|
|
9189
9182
|
delta=delta,
|
|
9190
9183
|
theta=theta,
|
|
9191
9184
|
M=M_i,
|
|
9192
|
-
|
|
9185
|
+
deltaTemp=deltaTemp,
|
|
9193
9186
|
) # [N]
|
|
9194
9187
|
CT = AC.CT(Thrust=THR_i, delta=delta)
|
|
9195
9188
|
FUEL_i = AC.ff(
|
|
@@ -9197,10 +9190,10 @@ def accDec_time(
|
|
|
9197
9190
|
delta=delta,
|
|
9198
9191
|
theta=theta,
|
|
9199
9192
|
M=M_i,
|
|
9200
|
-
|
|
9193
|
+
deltaTemp=deltaTemp,
|
|
9201
9194
|
)
|
|
9202
9195
|
# FUEL_i = AC.ff(
|
|
9203
|
-
# CT=CT, delta=delta, theta=theta, M=M_i,
|
|
9196
|
+
# CT=CT, delta=delta, theta=theta, M=M_i, deltaTemp=deltaTemp
|
|
9204
9197
|
# )
|
|
9205
9198
|
|
|
9206
9199
|
# compute excess power
|
|
@@ -9215,7 +9208,7 @@ def accDec_time(
|
|
|
9215
9208
|
phase=phase,
|
|
9216
9209
|
v=CAS_i,
|
|
9217
9210
|
mass=mass_i,
|
|
9218
|
-
|
|
9211
|
+
deltaTemp=deltaTemp,
|
|
9219
9212
|
)
|
|
9220
9213
|
else:
|
|
9221
9214
|
config_i = config_default
|
|
@@ -9259,7 +9252,7 @@ def accDec_time(
|
|
|
9259
9252
|
v=TAS_i,
|
|
9260
9253
|
h=H_m,
|
|
9261
9254
|
config="CR",
|
|
9262
|
-
|
|
9255
|
+
deltaTemp=deltaTemp,
|
|
9263
9256
|
) # IDLE Thrust
|
|
9264
9257
|
FUEL_min = AC.ff(
|
|
9265
9258
|
flightPhase="Descent",
|
|
@@ -9274,7 +9267,7 @@ def accDec_time(
|
|
|
9274
9267
|
v=TAS_i,
|
|
9275
9268
|
h=H_m,
|
|
9276
9269
|
config="CR",
|
|
9277
|
-
|
|
9270
|
+
deltaTemp=deltaTemp,
|
|
9278
9271
|
) # MCMB Thrust
|
|
9279
9272
|
FUEL_max = AC.ff(
|
|
9280
9273
|
flightPhase="Climb",
|
|
@@ -9305,7 +9298,7 @@ def accDec_time(
|
|
|
9305
9298
|
v=TAS_i,
|
|
9306
9299
|
h=H_m,
|
|
9307
9300
|
config=config_i,
|
|
9308
|
-
|
|
9301
|
+
deltaTemp=deltaTemp,
|
|
9309
9302
|
)
|
|
9310
9303
|
if rating == "MCMB" or rating == "MTKF":
|
|
9311
9304
|
FUEL_i = AC.ff(
|
|
@@ -9483,10 +9476,10 @@ def accDec_time(
|
|
|
9483
9476
|
gamma_i = 90 * np.sign(ROCD_i)
|
|
9484
9477
|
else:
|
|
9485
9478
|
[theta, delta, sigma] = atm.atmosphereProperties(
|
|
9486
|
-
h=conv.ft2m(Hp_i),
|
|
9479
|
+
h=conv.ft2m(Hp_i), deltaTemp=deltaTemp
|
|
9487
9480
|
)
|
|
9488
9481
|
temp_const = (theta * const.temp_0) / (
|
|
9489
|
-
theta * const.temp_0 -
|
|
9482
|
+
theta * const.temp_0 - deltaTemp
|
|
9490
9483
|
)
|
|
9491
9484
|
if AC.BADAFamily.BADAE:
|
|
9492
9485
|
gamma_i = degrees(
|