import numpy as np
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
#Option pour afficher les figures dans le notebook et eviter le plt.show():
%matplotlib inline
fs=16
plt.rc('xtick',labelsize=fs)
plt.rc('ytick',labelsize=fs)
# Constante célestes:
G=6.67408e-11 # Constante de gravitation
Pour être sûre d'avoir la dernière version:
#! rm *.pyc
#! wget https://hpp.education/Lessons/AER213/Files/SOLSTICE.pyc
# Importation de la classe capsule
from SOLSTICE import Capsule,Stage,Launcher
Le module SOLSTICE permet l'intégration de la trajectoire d'un module motorisé dans un champ gravitationnel composé d'un corp principal (body) et d'un corp secondaire (moon). Par défaut, c'est le système Terre-Lune qui est choisi
On présente rapidement dans ce TN commen changer de système gravitationnel:
dt=1
corp='Jupiter'
aster=Capsule(body=corp)
zs=0.5*aster.Rt
us=1.01*np.sqrt(G*aster.Mt/(aster.Rt+zs))
aster=Capsule(gi=0,z0=zs,u=us,body=corp,beta=1.8e-2) # cnap est le nom de notre capsule
aster.theta=np.pi/2
print(aster)
print(aster.moon,aster.Rl,aster.al,aster.thetaL*180/np.pi)
Si on veut regarder l'évolution de la capsule pendant une periode entière de révolution, on intégre la trajectoire sur une periode avec la méthode run(). Calculer cette periode et effectuer une orbite complète
# Periode de l'orbite à zs:
T1=np.sqrt((aster.Rt+zs)**3*4*np.pi**2/(G*aster.Mt))
aster.run(dt=dt,ntmax=T1/dt)
aster.plotraj('polar')
plt.ylim(0,1.7*aster.Rt/1000)
link='http://antoinelegay.free.fr/mecaniquespatiale/html_calculateur_trajectoire.html#Form2_Resultat_Titre_valeur_defaut=Passage_vers_'+corp+'&inputMselect=0&Form2inputParameterP1='+str(int(aster.Rt+zs)/1000)+'&Form2inputthetaA='+str(0)+'&Form2inputParameterP2='+str(0)+'&inputParameterP3='+str(us/1000)+'&inputVtype=1&Form2inputthetaB='+str(360)+'&inputEndtype=2&inputColorCercle1=FireBrick&inputR1select=0&inputColorOrbite=red&Form2inputmaxi='+str((aster.Rt+zs)/1000)+'&Form2inputVaffichage1=NaN&Form2inputVaffichage2=10&inputTypeCercle=2&Form2inputRM1='+str(aster.Rt/1000)+'&Form2inputM='+str(aster.Mt)+'&inputAffichageType=1&inputAffichageSolution=1&inputColorVitesse1=black&inputColorEngin1=black&inputColorBackground=Snow&inputColorAxesLegends=black'
print(link)
dt=1
corp='Saturne'
Pion=Capsule(body=corp)
zs=1e9
gammai=60
us=7563
thetaA=-60
Pion=Capsule(gi=gammai,z0=zs,u=us,body=corp,beta=1.8e-2)
Pion.theta=thetaA*np.pi/180
print(Pion)
Pion.run(dt=dt,ntmax=2.4*24*3600/dt)
Pion.plotraj('polar')
plt.ylim(0,zs/1000)
Pion.moon
thetaB=Pion.theta*180/np.pi
Ur=us*np.sin(-gammai*np.pi/180)
Utheta=us*np.cos(-gammai*np.pi/180)
link='http://antoinelegay.free.fr/mecaniquespatiale/html_calculateur_trajectoire.html#Form2_Resultat_Titre_valeur_defaut=Passage_vers_'+corp+'&inputMselect=0&Form2inputParameterP1='+str(int(Pion.Rt+zs)/1000)+'&Form2inputthetaA='+str(thetaA)+'&Form2inputParameterP2='+str(Ur/1000)+'&inputParameterP3='+str(Utheta/1000)+'&inputVtype=1&Form2inputthetaB='+str(thetaB)+'&inputEndtype=2&inputColorCercle1=FireBrick&inputR1select=0&inputColorOrbite=red&Form2inputmaxi='+str(1.01*(Pion.Rt+zs)/1000)+'&Form2inputVaffichage1=NaN&Form2inputVaffichage2=10&inputTypeCercle=2&Form2inputRM1='+str(Pion.Rt/1000)+'&Form2inputM='+str(Pion.Mt)+'&inputAffichageType=1&inputAffichageSolution=1&inputColorVitesse1=black&inputColorEngin1=black&inputColorBackground=Snow&inputColorAxesLegends=black'
print(link)
Les données de trajectoire de l'approche de Persévérance indiquent à 2000 km d'altitude: $U=4500~ m/s$, $\gamma_i=80°$. On prendra ici pour la capsule: $\beta=1.8~ 10^{-2}$ (similaire à celle de Mars Insight).
On peut donc partir de ce point pour entammer la rentrée Martienne:
dt=0.01
corp='Mars'
aster=Capsule(body=corp)
zs=2000e3
us=4500
aster=Capsule(gi=80,z0=zs,u=us,body=corp,beta=1.8e-2)
dt=0.1
aster.run(dt=dt,ntmax=T1/dt)
aster.plotraj('polar')
plt.ylim(0,1.6*aster.Rt/1000)
Num=aster.load()
Les données de la rentrée de Perseverance sont dans le fichier Perseverance_data.dat contenant 4 colonnes:
Alt($km$) - Mach - Speed ($m/s$) - Accélération ($m/s^2$)
Persev=np.loadtxt('Perseverance_data.dat')
plt.figure(figsize=(15,10))
plt.plot(Num[:,3],(Num[:,1]-aster.Rt)/1000,label='SOLSTICE')
plt.plot(Persev[:,2],Persev[:,0],'ok',label='Perseverance')
plt.ylim(0,250)
plt.xlabel('Vitesse (m/s)',fontsize=fs)
plt.ylabel('Altitude (km)',fontsize=fs)
plt.legend(fontsize=fs)
from IPython.core.display import HTML
style=open('notebooks.css', "r").read()
HTML(style)