# On cherche à simuler l'évolution de la pression pour un Gaz Parfait :
# p1 : dans le cas d'une atmosphère isotherme T = T0
# p2 : dans le cas d'une atmosphère non isotherme de modèle T = T0-lam*z

import numpy as np
import matplotlib.pyplot as plt

plt.close('all')

g = 9.8 # accélération de la pesanteur (m.s-2)
R = 8.3 # constante des gaz parfaits (J.K-1.mol-1)
M = 29e-3 # masse molaire de l'air (kg.mol-1)
T0 = 293 # température au sol (K)
lam = 5e-3 # coefficient de température (K.m-1)

# Définition de l'intervalle de temps étudié (zimn,zmax)
# Découpage de cet intervalle en N segments
# Calcul du pas dz

zmin = 0
zmax = 20e3
N = 100

z = np.linspace(zmin, zmax, N)

dz = (zmax-zmin)/N

print("dz = ",dz, "m")
print("L'intervalle est découpé en ", N, "segments")

# Construction du tableau des pressions

p1 = np.zeros_like(z)   # modele isotherme

p1[0] = 1.013     # pression atmospherique a z = 0
for n in range(z.size-1):
    p1[n+1] = p1[n]*(1-(M*g*dz)/(R*T0))

p2 = np.zeros_like(z)   # modele non isotherme

p2[0] = 1.013     # pression atmospherique a z = 0

for n in range(z.size-1):
    p2[n+1] = p2[n]*(1-(M*g*dz)/(R*(T0-lam*z[n])))

plt.plot(z,p1,'b')
plt.plot(z,p2,'r')
plt.title("Pression Gaz Parfait / Modélisation par la méthode d'Euler") # titre du graphique
plt.xlabel("z(m)") # Grandeur et unité des abscisses
plt.ylabel("Pression(bar), isotherme / non isotherme") # Grandeur et unité des ordonnées
plt.show()










