-- Mécanique du Vol --

TP n°2

Equilibre longitudinal et vol en palier

simon.marie@lecnam.net

L'objectif de cette séance est d'étudier l'équilibre du vol en palier d'un avion léger, en appliquant les notions vues en cours et en TD. Pour cela nous allons utiliser un "Simulateur de Vol" python qui contient déjà un intégrateur de trajectoire. Ainsi, nous allons pouvoir simuler différentes phases charactéristiques du vol et observer l'évolution des grandeurs pendant ces phases de vol.

1 - Le module CNAMVol

Le simulateur CNAMVol permet l'intégration de la trajectoire d'un avion en fonction des forces qui lui sont soumises. On se reportera au TP précédent pour une revue des méthodes d'intégration temporelles. Par défaut CNAMVol utilise un schéma de Runge-Kutta d'ordre 2. Les coefficients aérodynamique utilisés sont ceux de l'avion complet et se décomposent comme suit:

$$ C_x=C_{d0}+C_{d\alpha}\color{blue}{\alpha}+0.02\color{#D45E09}{\delta_{vc}}+k_i C_z^2 \\ C_y=C_{y\beta}\color{blue}{\beta} \\ C_z=C_{l0}+C_{l\alpha}\color{blue}{\alpha}+0.5\color{#D45E09}{\delta_{vc}}+C_{l\delta}\color{green}{\delta_m} $$ et pour les moments: $$ C_L=C_{l\beta}\color{blue}{\beta}+C_{l\delta}\color{purple}{\delta_l} \\ C_M=C_{m0}+C_{m\alpha}\color{blue}{\alpha}+C_{m\delta}\color{green}{\delta_m} \\ C_N=C_{n\beta}\color{blue}{\beta}+C_{n\delta}\color{#AEA500}{\delta_n} \\ $$

Les grandeurs de commandes: $\color{purple}{\delta_l},\color{green}{\delta_m},\color{#AEA500}{\delta_n}$ représentent respectivement les commandes d'aileron, de profondeur et de direction et $\color{#D45E09}{\delta_{vc}}$ la commande des volets.

Par défaut, les valeurs des coefficients sont ceux du Cessna 182.

Ce TP étant destiné à l'étude de l'équilibre longitudinal, nous utiliserons donc les relations:

$$ C_x=C_{d0}+C_{d\alpha}\color{blue}{\alpha}+k_i C_z^2 \\ C_z=C_{l0}+C_{l\alpha}\color{blue}{\alpha}+C_{l\delta}\color{green}{\delta_m} \\ C_M=C_{m0}+C_{m\alpha}\color{blue}{\alpha}+C_{m\delta}\color{green}{\delta_m} $$

Pour importer le module il faut d'abord télécharger le fichier si vous ne l'avez pas déjà fait. Si vous faites ce TP pour la première fois, décommenter la ligne suivante et exécutez la:

In [ ]:
#! wget https://hpp.education/Lessons/MecaVol/Files/CNAMVol.pyc

Puis on importe le module comme les autres modules python:

In [ ]:
import CNAMVol as vol
import numpy as np
import matplotlib.pyplot as plt
fs=16
plt.rc('xtick',labelsize=fs)
plt.rc('ytick',labelsize=fs)
#plt.rc('text',usetex='True')

On peut alors utiliser le module et ses fonctions. Pour ce TP seules quelques fonctionalités simples seront utilisées. Pour créer une "instance" du simulateur, on initialise en créant un objet Avion comme suit:

In [ ]:
#Initialisation de l'instance
avion=vol.Avion()

La variable avion représente donc un objet Avion qui possède toutes les charactéristiques physique d'un avion virtuel (Ici un Cessna 182) et dont on va simuler le comportement en palier.

Par exemple on pourra utiliser le point pour consulter certains attributs de l'objet avion comme:

  • sa masse: avion.m
  • La masse volumique de l'air à l'altitude courante: avion.rho()
  • La surface de référence: avimon.Sref
  • Les coefficients aerodynamique: avion.Cx, avion/Cz
  • La traction max du moteur: avion.Pmot

On peut également aficher l'état courant de l'avion en utilisant la fonction print:

In [ ]:
print(avion)

Attention pour des raisons d'orientation, l'axe des z est dirigé vers le bas. Ainsi une vitesse $U_z$ négative correspond à une augmentation d'altitude !

On remarque que dans son état initial, l'avion est posé sur le sol.

1. Calculer la masse de l'avion à partir de la réaction du sol

In [ ]:
 

--- Commentaire ---

...


2 - Vol en palier

2.1 Définitions

On souhaite maintenant placer l'avion en palier équilibré à incidence nulle.

2. Donner l'expression de la vitesse en palier en fonction du poid, de la masse volumique et du coefficient de portance $C_z$

--- Commentaire ---

...


3. Donner l'expression de la poussée nécessaire pour maintenir l'avion en palier et montrer que l'expression pour la position de la manette des gaz (D'après la formule vue en cours) est de la forme $\delta_g=\frac{\rho_0 P}{\rho P_{mot}}$ ou $P_{mot}$ représente la poussée max du moteur.

--- Commentaire ---

...


4. En utilisant ces expressions, définir une fonction permettant le calcul de la vitesse de palier et de la position de la manette des gaz à partir de l'objet avion

In [ ]:
# On defini une fonction générique prenant pour argument le nom d'un objet avion générique ici avn.
# On pourra donc utiliser dans la fonction tous les attributs comme avn.m, avn.rho()...

def eq(avn):
    ...
    ...
    return ueq,gaz_eq

5. Comparer les vitesses d'équilibre au sol et à 5000 pieds. (1 pied = 0.3048 m)

In [ ]:
avion=vol.Avion()
...
In [ ]:
avion=vol.Avion(z0=...)
print(eq(avion))
In [ ]:
print(avion)

--- Commentaire ---

...


2.2 Equilibrage des moments

En utilisant la valeur de avion.Cm que pouvez vous dire sur l'équilibre en tangage ?

In [ ]:
print(avion.Cm)

--- Commentaire ---

...


Ainsi, il est nécessaire d'ajuster les commandes de l'avion pour compenser ce coefficient. Pour cela on dispose de la fonction momeq() qui fait cette correction pour nous.

6. Calculer la valeur a donner à $dm$ pour équilibrer l'avion en moment et la comparer à celle de la fonction momeq()

On pourra utiliser les valuer avion.Cm0 et avion.Cmd

--- Commentaire ---

...


In [ ]:
dm=...
In [ ]:
avion.momeq()
print(avion)

7. Calculer les nouvelles valeurs de $U$ et $\delta_g$ pour l'avion compensé

In [ ]:
print(eq(avion))
Ueq,gaz_eq=eq(avion)

--- Commentaire ---

...


2.3 Mise en palier

8. Placer l'avion en palier à 5000 pieds et le compenser pour obtenir un équilibre complet.

In [ ]:
avion=vol.Avion(u0=...,z0=...)
avion.gaz=...
print(avion)

9. Effectuer 1 minute de vol en palier et commentez les résultats obtenus (vitesses, angles...)

In [ ]:
avion.run(dt=0.1,ntmax=...) # dt c'est le pas de temps et ntmax c'est le nombre
# d'itération max (donc ntmax=temps/dt)
In [ ]:
### On peut visualiser la trajectoire avec la fonction plotraj():
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')
plt.ylim(0,2000)
In [ ]:
#### On peut également afficher l'évolution temporelle des grandeurs principal avec la command monit():
avion.monit(plt.figure(figsize=(16,7)))

--- Commentaire ---

...


3 Variation de la vitesse

Suposons maintenant que la vitesse avion varie arbitrairement. La puissance propulsive reste constante mais la vitesse varie pour une raison arbitraire (vents, turbulences...)

3.1 - Augmentation de la vitesse

10. Augmentez la vitesse de l'avion à 70 m/s et observez l'évolution de la trajectoire au bout d'1h de vol. Justifiez ce que vous observez en utilisant les résultats du cours et des TD.

In [ ]:
avion.Uavion[0]=...
In [ ]:
avion.run(dt=0.1,ntmax=...)
In [ ]:
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')
#plt.ylim(1520,1530)
In [ ]:
avion.monit(plt.figure(figsize=(16,7)))

Discussions :


3.2 - Diminution de la vitesse

11. Maintenant, diminuez la vitesse à 60m/s et observez le comportement de l'avion au bout d'1 h de vol

In [ ]:
avion.Uavion[0]=...
In [ ]:
avion.run(dt=0.1,ntmax=...)
In [ ]:
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')
#plt.ylim(1520,1530)
In [ ]:
avion.monit(plt.figure(figsize=(16,7)))

Discussions:


4 - Action sur la manette des gaz.

Maintenant, regardons l'effet d'une modification de la puissance propulsive. On choisi ici de changer le régime moteur en agissant sur la manette des gaz.

4.1 - Augmentation du régime moteur

12. Replacer un avion en palier à l'équilibre puis positionner la manette des gaz à 100% et effectuer un vol de 10 minutes. Que se passe-t'il ?

In [ ]:
avion=vol.Avion(u0=...,z0=...)
avion.momeq()
avion.gaz=...
avion.run(dt=0.1,ntmax=...) 
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')

13. D'après les calculs de l'équilibre longitudinal vus en cours, calculer la pente $\gamma$ attendu pour une poussée maximale.

In [ ]:
avion.monit(plt.figure(figsize=(16,7)))

Discussion :


4.2 - Diminution du régime moteur

14. Refaire les mêmes étapes qu'au 4.1 mais en diminuant la manette des gaz à 40%.

In [ ]:
avion=vol.Avion(u0=...,z0=...)
avion.momeq()
avion.gaz=...
avion.run(dt=0.1,ntmax=...) 
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')
In [ ]:
avion.monit(plt.figure(figsize=(16,7)))

Discussion :


5. Le second régime

15. A partir de l'expression de la trainée et de la poussée en fonction de la vitesse vue dans le cours, tracer l'évolution de ces deux grandeurs en fonction de la vitesse.

On rappelle ici: $$ F_x=\dfrac{1}{2}\rho U^2 S_{ref}C_{x0}+ k_i \dfrac{2m^2g^2}{\rho U^2 S_{ref}} $$

In [ ]:
# Avion équilibré
avion=vol.Avion(z0=...)
avion.momeq()

# On fait varier U
U=np.arange(20,100,0.1)

# Calcul de la Trainée:
ki=...
Fx=...

#Calcul de la Poussée:
T0=...
T=T0*np.ones(len(U))

fig=plt.figure(figsize=(16,4))
plt.plot(U,Fx,'r',label='Total Drag')
plt.plot(U,T,label='Thrust')
plt.ylim(800,2500)
plt.xlabel('Vitesse (m/s)',fontsize=fs)
plt.ylabel('Force (N)',fontsize=fs)
plt.grid()
plt.legend(fontsize=fs)

16. Montrer que la deuxième solution d'équilibre peut s'écrire sous la forme: $$ U_{2nd}^2=\dfrac{-mg}{\rho S_{ref}C_z}\left(-1-\sqrt{1-C_{d0}4k_if^2} \right) $$

17.Calculer cette vitesse à 5000 pieds.

In [ ]:
T0=...
Ueq2=...
print(Ueq2)

18. Ces deux vitesses sont appellées premier et second régime. Le premier régime correspond à la vitesse la plus grande.

  1. On dit que le premier régime est stable: Justifier ce point.
  2. Expliquer pourquoi le second régime est instable
  3. Que vaut l'incidence pour le second régime ?
  4. Utiliser le simulateur et placez-vous au second régime. </b>
In [ ]:
avion=...
avion.alpha=...
avion.momeq(...)
avion.gaz=gaz_eq
print(avion)
In [ ]:
avion.run(dt=0.1,ntmax=...)
In [ ]:
plt.figure(figsize=(16,7))
avion.plotraj('2dxz')
In [ ]:
avion.monit(plt.figure(figsize=(16,7)))

Conclusion

Rédiger une synthèse de ce que vous avez réalisé dans ce notebook.

In [1]:
from IPython.core.display import HTML
style=open('notebooks.css', "r").read()
HTML(style)
Out[1]: