Skip to content

Commit

Permalink
Merge 8880a2a into ca40f65
Browse files Browse the repository at this point in the history
  • Loading branch information
RimorRes committed Nov 2, 2019
2 parents ca40f65 + 8880a2a commit 4c7b294
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions preflightpy/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,37 @@ def get_temp(self, z: float, h: float) -> float:
xi = (z - 120000) * (6356766 + 120000) / (6356766 + z)
return (1000 - 640 * math.exp(-0.00001875 * xi), 10)

def get_pressure(self, h: float, T: float, b: int)-> float:
def get_pressure(self, z: float, h: float, T: float, b: int)-> float:

def equ(a, b, c, d, e):
zeta = z/1000
return math.exp( a * zeta**4 + b * zeta**3 + c * zeta**2 + d * zeta + e)

if b <= 6:
if self.Lm[b] != 0:
return self.Pb[b] * ( self.Tb[b]/T )**(self.g*self.M_air/(self.R*self.Lm[b]))
else:
return self.Pb[b] * math.exp( -self.g * self.M_air * (h-self.hb[b]) / (self.R*self.Tb[b]) )

elif b == 7:
return equ(0.000000, 2.159582e-6, -4.836957e-4, -0.1425192, 13.47530)
elif b == 8:
return equ(0.000000, 3.304895e-5, -0.009062730, 0.6516698, -11.03037)
elif b == 9:
return equ(0.000000, 6.693926e-5, -0.01945388, 1.719080, -47.75030)
elif b == 10:
return equ(0.000000, -6.539316e-5, 0.02485568, -3.223620, 135.9355)
elif b == 11:
return equ(2.283506e-7, -1.343221e-4, 0.02999016, -3.055446, 113.5764)
elif b == 12:
return equ(1.209434e-8, -9.692458e-6, 0.003002041, -0.4523015, 19.19151)
elif b == 13:
return equ(8.113942e-10, -9.822568e-7, 4.687616e-4, -0.1231710, 3.067409)
elif b == 14:
return equ(9.814674e-11, -1.654439e-7, 1.148115e-4, -0.05431334, -2.011365)
elif b == 15:
return equ(-7.835161e-11, 1.964589e-7, -1.657213e-4, 0.04305869, -14.77132)
elif b == 16:
return equ(2.813255e-11, -1.120689e-7, 1.695568e-4, -0.1188941, 14.56718)

def get_density(self, P: float, T: float, b) -> float:
if b <= 6:
Expand All @@ -79,6 +103,6 @@ def get_c(self, T: float):
def get_status(self, z: float):
h = round(self.get_geopotential_altitude(6356766, z), 0)
self.T, b = self.get_temp(z, h)
self.P = self.get_pressure(h, self.T, b)
self.P = self.get_pressure(z, h, self.T, b)
self.Rho = self.get_density(self.P, self.T, b)
self.c = self.get_c(self.T)

0 comments on commit 4c7b294

Please sign in to comment.