Skip to content

Commit

Permalink
Added temperature formulas for 86 - 1000 km ✨
Browse files Browse the repository at this point in the history
  • Loading branch information
RimorRes committed Nov 2, 2019
1 parent b8002e0 commit ca40f65
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .coverage
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!coverage.py: This is a private format, don't read it directly!{"lines":{"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\__init__.py":[1,2,3],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\env.py":[20,22,23,25,33,36,52,59,65,68,27,28,29,30,31,69,34,70,71,37,38,72,73,53,54,74,75,60,61,62,63,76,66,39,40,56,41,43,45,47,48,42,46,49,50,44],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\system.py":[20,22,23,24,26,27,60,159,164,168,173,178,182,185,190,193,197,201,217,229],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\params.py":[20,22,23,25,55,56,57,58,59,27,28,30,32,33,35,37,42,43,38,39,52,53,46,47,49,50]}}
!coverage.py: This is a private format, don't read it directly!{"lines":{"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\__init__.py":[1,2,3],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\env.py":[20,22,23,25,33,36,61,69,76,79,27,28,29,30,31,80,34,81,37,38,82,62,63,64,83,70,71,72,73,74,84,77,39,40,66,41,43,45,47,48,42,44,49,51,52,53,54,55,56,57,58,59],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\system.py":[20,22,23,24,26,27,60,159,164,168,173,178,182,185,190,193,197,201,217,229],"C:\\Users\\maxim\\Documents\\Preflight\\preflightpy\\params.py":[20,22,23,25,55,56,57,58,59,27,28,30,32,33,35,37,42,43,38,39,52,53,46,47,49,50]}}
42 changes: 25 additions & 17 deletions preflightpy/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(self, vars):
def get_geopotential_altitude(self, r: float, z: float) -> float:
return r*z / (r+z)

def get_temp(self, h: float) -> float:
def get_temp(self, z: float, h: float) -> float:
if 0 <= h <= 11000:
return (288.15 + (self.Lm[0]*(h-0)), 0)
elif 11000 < h <= 20000:
Expand All @@ -46,31 +46,39 @@ def get_temp(self, h: float) -> float:
return (270.65 + (self.Lm[4]*(h-47000)), 4)
elif 51000 < h <= 71000:
return (270.65 + (self.Lm[5]*(h-51000)), 5)
elif 71000 < h:
elif 71000 < h <= 84856:
return (214.65 + (self.Lm[6]*(h-71000)), 6)
elif 86000 < z <= 91000:
return (186.67, 7)
elif 91000 < z <= 110000:
return (263.1905 - 76.3232 * math.sqrt(1 - ((z - 91000) / -19942.9)**2), 8)
elif 110000 < z <= 120000:
return (240 + 0.012 * (z - 110000), 9)
elif 120000 < z <= 1000000:
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:
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]) )
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]) )


def get_density(self, P: float, T: float) -> float:
V = 1
n = (P*V)/(self.R*T)
m = self.M_air * n
return (P * m )/(n * self.R * T)
def get_density(self, P: float, T: float, b) -> float:
if b <= 6:
V = 1
n = (P*V)/(self.R*T)
m = self.M_air * n
return (P * m )/(n * self.R * T)

def get_c(self, T: float):
return math.sqrt((self.gamma * self.R * T) / self.M_air)

def get_status(self, z: float):
h = round(self.get_geopotential_altitude(6378137, z),0)
print(h)
self.T, b = self.get_temp(h)
print(self.T, b)
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)
print(self.P)
self.Rho = self.get_density(self.P, self.T)
self.Rho = self.get_density(self.P, self.T, b)
self.c = self.get_c(self.T)
20 changes: 19 additions & 1 deletion tests/env_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,25 @@ def test_temperature(self):
environment.get_status(47350)
assert round(environment.T, 2) == 270.65
environment.get_status(71802)
assert round(environment.T, 2) == 214.64
assert round(environment.T, 2) == 214.65
environment.get_status(87000)
assert round(environment.T, 2) == 186.67
environment.get_status(100000)
assert round(environment.T, 2) == 195.08
environment.get_status(115000)
assert round(environment.T, 2) == 300.00
environment.get_status(125000)
assert round(environment.T, 2) == 417.23
environment.get_status(160000)
assert round(environment.T, 2) == 696.29
environment.get_status(330000)
assert round(environment.T, 2) == 985.88
environment.get_status(500000)
assert round(environment.T, 2) == 999.24
environment.get_status(750000)
assert round(environment.T, 2) == 999.99
environment.get_status(1000000)
assert round(environment.T, 2) == 1000.00

def test_density(self):
environment = pre.Environment( [113, 0.01, 9.80665, 0.02896968, 8.314462618, 1.4, 101325] )
Expand Down

0 comments on commit ca40f65

Please sign in to comment.