# -*- coding: utf-8 -*-
"""
@author: Melzani M., www.mmelzani.fr
Résout l'équation différentielle pour une chute libre verticale avec 
frottements en -k*v^2.
(Utilise un schéma d'Euler explicite pour intégrer l'équation.)
"""

import matplotlib.pyplot as plt # pour les graphiques

g = 9.8         # pesanteur, m/s**2
vl = 193./3.6   # vitesse limite, m/s
m = 100.        # masse en kg
k = m*g/vl**2   # coefficient de frottement de la loi en k*v**2

v0 = 0.         # vitesse initiale
dt = 0.02       # pas d'integration en secondes
fin = 20.       # durée de la simulation (secondes)

liste_t = [0]
liste_z = [0]
liste_v = [v0]
t = 0.
z = 0.
v = v0

nb_iterations = int(fin/dt)
for i in range(nb_iterations):
    t, z, v = t + dt, z + v*dt, v + (g - k*v**2/m)*dt
    liste_t.append(t)
    liste_z.append(z)
    liste_v.append(v)


# --- Tracés ---
plt.figure(1)

plt.subplot(211)
plt.plot(liste_t, liste_z, color='r', label='distance z')
plt.xlabel('t (s)')
plt.ylabel('z (m)')
plt.legend(loc='best')
plt.grid()

plt.subplot(212)
plt.plot(liste_t, liste_v, '--', color='g', label='vitesse')
plt.xlabel('t (s)')
plt.ylabel('v (m/s)')
plt.legend(loc='best')
plt.grid()

plt.title('')
plt.show()
