Présentation générale¶
Le module Orbiter basé sur le language Python, permet l’intégration numérique des trajectoires spatiales. * La class Launcher permet de modéliser un lanceur à partir de plusieurs éléments Stage. * La class Stage modélise un étage et son moteur grace à son ISP et son débit. * La class Capsule est une modélisation simple permettant de spécifier directement le delta_v d’une manoeuvre.
Ces trois class sont équivalente mais ne présente pas le même niveau de modélisation. Elles sont basées sur l’intégration des lois de Newton dans le repère géocentrique en coordonnées polaire .
Le système représenté est basé sur l’influence gravitationaelle d’un corps principal et d’un corps secondaire (généralement le satellite le plus massif). Le corp secondaire est placé initialement en et se déplace sur son orbite circulaire dans le sens anti-horaire. Le système peut être changé en utilisant la fonction planet(nom).
Les équations du mouvement intégrées dans la méthode integtraj() sont les suivantes:
Notations: : Poussée (N)
: Trainée (N).
: Portance (N). : Poid (N). : Angle entre la trajectoire et l’horizontal local. Angle de manouvre. Différentielle de vitesse de la manoeuvre.
La Class SpaceDevice¶
-
class
Orbiter.
Spacedevice
(Diameter=1.0, Heigh=5.0, z0=0.0, u0=0.0, gamma0=0.0, fin=0.0, body='Terre', name='Trajectoire_default.dat')¶ Bases :
object
Class Spacedevice
Cette Class est la plus generique, elle inclu les methodes d integration et les constantes universelles.
Pour changer de planete, il faut mettre a jour les donnee de l’instance. Exemple: cap=Capsule(….) cap.Rt => affiche le rayon de la terre cap.Rt=3390 => Rayon de Mars
-
G
= 6.67408e-11¶
-
Ms
= 1.9884e+30¶
-
RK2
()¶ Integration d’ordre 2 avec le schéma Runge-Kutta met a jour tp,rp,z et theta
-
RK4
()¶ Integration d’ordre 4 avec le schéma Runge-Kutta met a jour tp,rp,z et theta
-
__dict__
= mappingproxy({'__module__': 'Orbiter', '__doc__': "\n Class Spacedevice \n \n Cette Class est la plus generique, elle inclu les methodes d integration et\n les constantes universelles.\n\n Pour changer de planete, il faut mettre a jour les donnee de l'instance.\n Exemple:\n cap=Capsule(....)\n cap.Rt => affiche le rayon de la terre\n cap.Rt=3390 => Rayon de Mars\n\n ", 'G': 6.67408e-11, 'Ms': 1.9884e+30, 'thetaL': 1.5707963267948966, '__init__': <function Spacedevice.__init__>, 'planet': <function Spacedevice.planet>, 'e2m': <function Spacedevice.e2m>, '__repr__': <function Spacedevice.__repr__>, 'getgravity': <function Spacedevice.getgravity>, 'rhs': <function Spacedevice.rhs>, 'euler': <function Spacedevice.euler>, 'RK2': <function Spacedevice.RK2>, 'RK4': <function Spacedevice.RK4>, 'trajint': <function Spacedevice.trajint>, 'update_udyn': <function Spacedevice.update_udyn>, 'run': <function Spacedevice.run>, 'write': <function Spacedevice.write>, 'load': <function Spacedevice.load>, 'update_wind': <function Spacedevice.update_wind>, 'rho': <function Spacedevice.rho>, 'plotraj': <function Spacedevice.plotraj>, 'anim': <function Spacedevice.anim>, 'monit': <function Spacedevice.monit>, '__dict__': <attribute '__dict__' of 'Spacedevice' objects>, '__weakref__': <attribute '__weakref__' of 'Spacedevice' objects>})¶
-
__init__
(Diameter=1.0, Heigh=5.0, z0=0.0, u0=0.0, gamma0=0.0, fin=0.0, body='Terre', name='Trajectoire_default.dat')¶ Initialize self. See help(type(self)) for accurate signature.
-
__module__
= 'Orbiter'¶
-
__repr__
()¶ Affichage des parametres de positions
-
__weakref__
¶ list of weak references to the object (if defined)
-
anim
(kind='rect', skip=1)¶ Anim la trajectoire.
-
e2m
()¶ Converti les coordonees/terre en coodronne /lune
-
euler
()¶ Integration d’ordre 1 avec le schéma d’euler met a jour tp,rp,z et theta
-
getgravity
()¶ Calcul des zones d influences des differents astres locaux et met a jour la force de gravite en fonction.
-
load
()¶ Chargement des resultats:
-
monit
(fig)¶ Represente l evolution des donnees trajectoire. Cette methode necessite un objet matplolib (fig) en input. * 11 :U(t) 12 :Z(U) * 21 :G(Z) 22 :Phi(Z) * 31 :P(t) 32 :gamma(Z)
-
planet
(name='Terre')¶ - Change les caractéristiques du corps principal:
- self.Mt self.Rt self.rho0 self.Z0 self.Ml self.Rl self.al self.at self.TL self.earth_lim1 self.earth_lim2 self.moon_inf
Corps possibles: Soleil Venus Terre Mars Jupiter
-
plotraj
(kind='rect', impref='')¶ Represente la trajectoire a partir des resultat de l integration de la trajectoire. * kind=”rect” (default) => Dans le plan (x,z) * kind=”polar” => Dans le plan (r,theta)
-
rho
()¶ Modele d atmosphere
-
rhs
(u, t)¶ Terme de droite de la conservation qdm
-
run
(ntmax=1000000.0, dt=0.01, kind=1)¶ Avance la trajectoire de ntmax iterations ou jusqu a z=0 * kind=1: Schema d Euler (Ordre 1) * kind=2: Schema RK2 (Ordre 2) * kind=4: Schema RK4 (Ordre 4)
-
thetaL
= 1.5707963267948966¶
-
trajint
(kind)¶ Permet d integrer les equations du mouvement dans un repere geocentrique polaire 2D (er,etheta) * kind=1: Schema d Euler (Ordre 1) * kind=2: Schema RK2 (Ordre 2) * kind=4: Schema RK4 (Ordre 4)
-
update_udyn
()¶ Mise a jour de la vitesse relative de l’air Cela permet de prendre en compte la vitesse de rotation de la terre En considerant que l’atmosphere tourne avec.
-
update_wind
()¶ * Ajoute du vent et modifie l’incidence *
-
write
()¶ Ecriture de la trajectoire
« 0-time | 1-r | 2-theta | 3-U | 4-Gamma | 5-Pdyn | 6-phi | 7-Acc | 8-Fl | 9-Alpha | 10-ref | 11-thetaL | 12-Ft »
-
La Class Stage¶
-
class
Orbiter.
Stage
(ISP=350.0, IC=0.1, H=4, D=1, qm=10.0, mc=10.0, z0=0.0, u0=0, gamma0=-90, body='Terre', moteur='none', name='Trajectoire.dat')¶ Bases :
Orbiter.Spacedevice
Class Stage - CNAM IAS
Simon Marie - fev.2018
La Class Stage permet la creation d un objet Python modelisant un etage de Lanceur spatial. Differentes characteristiques peuvent etre saisies a l initialisation
- ISP : Impulsion specifique (default= 350.)
- IC : Indice constructif ms/me (default=0.1)
- z0 : altitude initiale (default=0 m)
- u : vitesse initiale (default=0 m/s)
- gi : angle gamma initial (default=-90)
- fin : finesse de la capsule (default=0)
- name : nom du fichier resultats (default=Launch.dat)
-
__add__
(other)¶
-
__init__
(ISP=350.0, IC=0.1, H=4, D=1, qm=10.0, mc=10.0, z0=0.0, u0=0, gamma0=-90, body='Terre', moteur='none', name='Trajectoire.dat')¶ Initialize self. See help(type(self)) for accurate signature.
-
__module__
= 'Orbiter'¶
-
__repr__
()¶ modu=Stage() Permet d afficher l instance en faisant print(modu)
-
boost
(tTime=1, dt=0.1, tangle=-90)¶ Allumage des moteurs pendant une durée tTime(s) avec un angle tAngle(deg)
-
check_thrust
()¶ Verification poussee necessaire
-
engine_start
()¶
-
engine_stop
()¶
-
get_thrust
()¶ Calcul de la pousse local au point courant
-
run
(ntmax=1000000.0, dt=0.01, kind=1)¶ Avance la trajectoire de ntmax iterations ou jusqu a z=0 * kind=1: Schema d Euler (Ordre 1) * kind=2: Schema RK2 (Ordre 2) * kind=4: Schema RK4 (Ordre 4)
-
update
()¶ Mise a jour des parametres propulsifs. Si un parametre de base est modifie, cette methode permet de mettre a jour les parametres qui en dependent.
-
update_atm
()¶
-
update_m
()¶ Mise a jour de la masse et des parametres d Inertie.
-
update_reserv
()¶ Mise a jour du volume carburant disponible
-
update_rot
()¶ Met a jour l’incidence de l etage due au moments lacet/tangage
La Class Launcher¶
-
class
Orbiter.
Launcher
(stages, name='Launch_base.dat')¶ Bases :
Orbiter.Stage
Class Launcher (somme de Stage) Un lanceur peut etrte obtenu en faisant:
A=Stage(ISP=420,IC=0.08) B=Stage(ISP=320,IC=0.12) Lanceur=A+B
-
__init__
(stages, name='Launch_base.dat')¶ Initialize self. See help(type(self)) for accurate signature.
-
__module__
= 'Orbiter'¶
-
__repr__
()¶ modu=Stage() Permet d afficher l instance en faisant print(modu) Pour desactiver l affichage il faut mettre la variable self.display false
-
drop
(ind=0)¶ Largage de l etage inferieur si vide
-
update_stages
()¶ Met a jour les donnees du lanceur en fonction de la forme de la liste stages
-
La Class Capsule¶
-
class
Orbiter.
Capsule
(beta=0.005, u=7910, z0=100000.0, gi=0.0, fin=0.0, body='Terre', name='Rentree.dat')¶ Bases :
Orbiter.Spacedevice
Class Capsule - CNAM IAS
Simon Marie - nov.2018
La Class Capsule permet la creation d un objet Python modelisant une capsule de rentree. Differentes characteristiques peuvent etre saisies a l initialisation
- beta : parametre balistique de la capsule (default= 5e-3)
- z0 : altitude initiale (default=1e5 m)
- u : vitesse initiale (default=7910 m/s)
- gi : angle gamma initial (default=0)
- fin : finesse de la capsule (default=0)
- name : nom du fichier resultats (default=Rentree.dat)
L instanciation se fait de la facon suivante:
exemple=Capsule()
On pourra modifier les parametres par defaut impose a l initialisation en passant des arguments lors de la creation:
exemple=Capsule(u=12000,z0=400e3)
-
__init__
(beta=0.005, u=7910, z0=100000.0, gi=0.0, fin=0.0, body='Terre', name='Rentree.dat')¶ Initialize self. See help(type(self)) for accurate signature.
-
__module__
= 'Orbiter'¶
-
__repr__
()¶ caps=Capsule() Permet d afficher l instance en faisant print(caps) Peut etre desactiver avec self.display=False
-
mvr
(dv, omega)¶ Effectue une manoeuvre en imposant:
- dv: differentielle de vitesse
- omega: angle du delta V