-- AER 213 - Fondamentaux de conception spatiale --

TN n°10

Utilisation du Module Orbiter en Projets

Changement de système gravitationnel

simon.marie@lecnam.net
In [1]:
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)
In [2]:
# Constante célestes:                        
G=6.67408e-11 # Constante de gravitation 

Pour être sûre d'avoir la dernière version:

In [3]:
#! rm *.pyc
#! wget https://hpp.education/Lessons/AER213/Files/Orbiter.pyc
In [4]:
# Importation de la classe capsule
from Orbiter import Capsule,Stage,Launcher

Le module Orbiter 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:

1 - Changement du système gravitationnel

In [5]:
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)
----   25, May 2022 | 10:50   ----
time= 0.0
----Position--(/Jupiter/)-------
u=34841.494252855635
z=35520000.0
theta=90.0
Assiette=0.0 deg 
Incidence=0.0deg 
--------Parametres-----------
beta=0.018
finesse=0.0

In [6]:
print(aster.moon,aster.Rl,aster.al,aster.thetaL*180/np.pi)
Ganymede 2631200.0 1070400000 90.0

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

In [7]:
# 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)
----   25, May 2022 | 16:14   ----
time= 19409.0
----Position--(/Jupiter/)-------
u=34831.33976729952
z=35551405.79380852
theta=438.7616343289735
Assiette=0.220657417806125 deg 
Incidence=0.0deg 
--------Parametres-----------
beta=0.018
finesse=0.0

In [8]:
aster.plotraj('polar')
plt.ylim(0,1.7*aster.Rt/1000)
0-time | 1-r | 2-theta | 3-U | 4-Gamma | 5-Pdyn | 6-phi | 7-acc | 8-Fl | 9-Alpha | 10-ref
Out[8]:
(0.0, 120768.0)
In [9]:
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)
http://antoinelegay.free.fr/mecaniquespatiale/html_calculateur_trajectoire.html#Form2_Resultat_Titre_valeur_defaut=Passage_vers_Jupiter&inputMselect=0&Form2inputParameterP1=106560.0&Form2inputthetaA=0&Form2inputParameterP2=0&inputParameterP3=34.84149425285563&inputVtype=1&Form2inputthetaB=360&inputEndtype=2&inputColorCercle1=FireBrick&inputR1select=0&inputColorOrbite=red&Form2inputmaxi=106560.0&Form2inputVaffichage1=NaN&Form2inputVaffichage2=10&inputTypeCercle=2&Form2inputRM1=71040.0&Form2inputM=1.9e+27&inputAffichageType=1&inputAffichageSolution=1&inputColorVitesse1=black&inputColorEngin1=black&inputColorBackground=Snow&inputColorAxesLegends=black

2 - Passage autour de Saturne

In [10]:
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)
----   25, May 2022 | 10:50   ----
time= 0.0
----Position--(/Saturne/)-------
u=7563
z=1000000000.0
theta=-59.99999999999999
Assiette=59.99999999999999 deg 
Incidence=0.0deg 
--------Parametres-----------
beta=0.018
finesse=0.0

In [11]:
Pion.run(dt=dt,ntmax=2.4*24*3600/dt)
Ref: Sun
Ref: Saturne
Ref: Sun
----   27, May 2022 | 20:26   ----
time= 207360.0
----Position--(/sun/)-------
u=8336.722271572253
z=844939338.155719
theta=196.41256076453772
Assiette=-57.91195060510325 deg 
Incidence=0.0deg 
--------Parametres-----------
beta=0.018
finesse=0.0

In [12]:
Pion.plotraj('polar')
plt.ylim(0,zs/1000)
0-time | 1-r | 2-theta | 3-U | 4-Gamma | 5-Pdyn | 6-phi | 7-acc | 8-Fl | 9-Alpha | 10-ref
Out[12]:
(0.0, 1000000.0)
In [13]:
Pion.moon
Out[13]:
'Titan'

Comparaison avec la branche de conique:

In [14]:
thetaB=Pion.theta*180/np.pi
Ur=us*np.sin(-gammai*np.pi/180)
Utheta=us*np.cos(-gammai*np.pi/180)
In [15]:
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'
In [17]:
print(link)
http://antoinelegay.free.fr/mecaniquespatiale/html_calculateur_trajectoire.html#Form2_Resultat_Titre_valeur_defaut=Passage_vers_Saturne&inputMselect=0&Form2inputParameterP1=1060268.0&Form2inputthetaA=-60&Form2inputParameterP2=-6.549750128821709&inputParameterP3=3.7815000000000007&inputVtype=1&Form2inputthetaB=196.41256076453772&inputEndtype=2&inputColorCercle1=FireBrick&inputR1select=0&inputColorOrbite=red&Form2inputmaxi=1070870.68&Form2inputVaffichage1=NaN&Form2inputVaffichage2=10&inputTypeCercle=2&Form2inputRM1=60268.0&Form2inputM=5.6846e+26&inputAffichageType=1&inputAffichageSolution=1&inputColorVitesse1=black&inputColorEngin1=black&inputColorBackground=Snow&inputColorAxesLegends=black

3 - Rentrée Martienne et comparaison avec Perseverance

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:

In [18]:
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) 
In [19]:
dt=0.1
aster.run(dt=dt,ntmax=T1/dt)
----   25, May 2022 | 11:01   ----
time= 515.2000000000486
----Position--(/Mars/)-------
u=65.88159563407567
z=-4.194563383367313
theta=5.404853483442847
Assiette=89.63874940850029 deg 
Incidence=0.0deg 
--------Parametres-----------
beta=0.018
finesse=0.0

In [20]:
aster.plotraj('polar')
plt.ylim(0,1.6*aster.Rt/1000)
0-time | 1-r | 2-theta | 3-U | 4-Gamma | 5-Pdyn | 6-phi | 7-acc | 8-Fl | 9-Alpha | 10-ref
Out[20]:
(0.0, 5435.2)
In [21]:
Num=aster.load()
0-time | 1-r | 2-theta | 3-U | 4-Gamma | 5-Pdyn | 6-phi | 7-acc | 8-Fl | 9-Alpha | 10-ref

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$)

In [22]:
Persev=np.loadtxt('Perseverance_data.dat')
In [23]:
plt.figure(figsize=(15,10))
plt.plot(Num[:,3],(Num[:,1]-aster.Rt)/1000,label='Orbiter')
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)
Out[23]:
<matplotlib.legend.Legend at 0x7f8b759455b0>
In [24]:
from IPython.core.display import HTML
style=open('notebooks.css', "r").read()
HTML(style)
Out[24]: