Documentation du Module Orbiter

Contents:

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 (r,\theta).

https://hpp.education/Lessons/MecaSpace/RepereLanceur.jpg

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 \theta_L=\pi/2 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:

m(\ddot{r}-r\dot{\theta}^2) = -P+(F_d-F_t)\sin(\gamma_e)+F_l\cos(\gamma_e)\\
m(r\ddot{\theta}+2\dot{r}\dot{\theta}) = (F_t-F_d)\cos(\gamma_e)+F_l\sin(\gamma_e)

Notations: F_t: Poussée (N)

F_d: Trainée (N).

F_l: Portance (N). P: Poid (N). \gamma_e: Angle entre la trajectoire et l’horizontal local. \omega Angle de manouvre. \Delta U 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