Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
junzis
GitHub Repository: junzis/openap
Path: blob/master/test/test_bada.py
532 views
1
# %%
2
import matplotlib.pyplot as plt
3
4
import numpy as np
5
import openap
6
import pandas as pd
7
from openap.addon import bada3, bada4
8
9
bada3_path = "../../../../data/bada_312"
10
bada4_path = "../../../../data/bada_4.2/tables"
11
12
# %%
13
drag = bada3.Drag("A320", bada3_path)
14
print("bada 3 drag", drag.clean(60000, 300, 12_000))
15
16
drag = bada4.Drag("A320-231", bada4_path)
17
print("bada 4 drag", drag.clean(60000, 300, 12_000))
18
19
drag = openap.Drag("A320")
20
print("openap drag", drag.clean(60000, 300, 12_000))
21
22
# %%
23
24
fuel_bada3 = bada3.FuelFlow("A320", bada3_path)
25
print("bada 3 fuel", fuel_bada3.enroute(mass=60000, tas=350, alt=35_000))
26
27
fuel_bada4 = bada4.FuelFlow("A320-231", bada4_path)
28
print("bada 4 fuel", fuel_bada4.enroute(mass=60000, tas=350, alt=35_000))
29
30
fuel_openap = openap.FuelFlow("A320")
31
print("openap fuel", fuel_openap.enroute(mass=60000, tas=350, alt=35_000))
32
33
# %%
34
35
36
fuel_bada3 = bada3.FuelFlow("A320", bada3_path)
37
fuel_bada4 = bada4.FuelFlow("A320-231", bada4_path)
38
fuel_openap = openap.FuelFlow("A320")
39
40
drag_bada3 = bada3.Drag("A320", bada3_path)
41
drag_bada4 = bada4.Drag("A320-231", bada4_path)
42
drag_openap = openap.Drag("A320")
43
44
45
flight = pd.read_csv("../examples/data/flight_a320_qar.csv").query("ALTI_STD_FT>100")
46
47
48
drag_estimate_bada3 = drag_bada3.clean(
49
flight["MASS_KG"],
50
flight["TRUE_AIR_SPD_KT"],
51
flight["ALTI_STD_FT"],
52
)
53
54
drag_estimate_bada4 = drag_bada4.clean(
55
flight["MASS_KG"],
56
flight["TRUE_AIR_SPD_KT"],
57
flight["ALTI_STD_FT"],
58
)
59
60
drag_estimate_openap = drag_openap.clean(
61
flight["MASS_KG"],
62
flight["TRUE_AIR_SPD_KT"],
63
flight["ALTI_STD_FT"],
64
)
65
66
fuel_estimate_bada3 = fuel_bada3.enroute(
67
flight["MASS_KG"],
68
flight["TRUE_AIR_SPD_KT"],
69
flight["ALTI_STD_FT"],
70
flight["VERT_SPD_FTMN"],
71
)
72
73
fuel_estimate_bada4 = fuel_bada4.enroute(
74
flight["MASS_KG"],
75
flight["TRUE_AIR_SPD_KT"],
76
flight["ALTI_STD_FT"],
77
flight["VERT_SPD_FTMN"],
78
)
79
80
fuel_estimate_openap = fuel_openap.enroute(
81
flight["MASS_KG"],
82
flight["TRUE_AIR_SPD_KT"],
83
flight["ALTI_STD_FT"],
84
flight["VERT_SPD_FTMN"],
85
)
86
87
88
# %%
89
90
plt.plot(flight["FLIGHT_TIME"], drag_estimate_openap, label="OpenAP drag")
91
plt.plot(flight["FLIGHT_TIME"], drag_estimate_bada3, label="BADA3 drag")
92
plt.plot(flight["FLIGHT_TIME"], drag_estimate_bada4, label="BADA4 drag")
93
plt.legend()
94
plt.ylim(0)
95
plt.show()
96
97
98
plt.plot(flight["FLIGHT_TIME"], fuel_estimate_openap * 3600, label="OpenAP fuel", lw=1)
99
plt.plot(flight["FLIGHT_TIME"], fuel_estimate_bada3 * 3600, label="BADA3 fuel", lw=1)
100
plt.plot(flight["FLIGHT_TIME"], fuel_estimate_bada4 * 3600, label="BADA4 fuel", lw=1)
101
plt.plot(flight["FLIGHT_TIME"], flight["FUEL_FLOW_KGH"] * 2, label="QAR fuel", lw=1)
102
plt.ylim(0)
103
# plt.ylim(2000, 4000)
104
105
plt.legend()
106
plt.show()
107
108
# %%
109
110
# %%
111
112