#capacité numérique mouvement fixe glisse
import numpy as np
import matplotlib.pyplot as plt
from math import *

v0=0.1#vitesse de déplacement de la plaque
mus=0.35#%coefficient de frottement solide
mu=0.25#coefficient de frottement dynamique
g=9.8
m=0.1#masse du pavé
k=0.8#raideur du ressort

#algorithme de calcul de la position du pavé,l'équation différentielle est résolue avec la méthode d'euler, on appelle h le pas de discrétisation temporel
def integration(tmax,h):
    t=0.0
    x=0.0#origine choisie au départ, la longueur du ressort est égale à la longueur à vide
    v=v0 #initielement le pavé est fixe par rapport à la plaque
    vg=0.0#pas de glissement à l'instant initial
    glissement=False
    liste_t=np.array([t])
    liste_x=np.array([x])
    liste_vg=np.array([vg])
    liste_v=np.array([v])
    while t<tmax:


        t+=h
        if glissement==False:
            v=v0
            vg=0.0
            x+=v0*h
            if k*x >= mus*m*g:
                glissement=True
        else:
            frottement=mu*m*g
            acceleration=(frottement-k*x)/m
            v+=acceleration*h
            vg=v-v0
            x+=v*h
            if vg>0:
                glissement=False

        liste_t=np.append(liste_t,t)
        liste_x=np.append(liste_x,x)
        liste_vg=np.append(liste_vg,vg)
        liste_v=np.append(liste_v,v)
    return ( liste_t,liste_x,liste_vg,liste_v)

tmax=20.0
(t,x,vg,v)=integration(tmax,1e-3)
plt.subplot(3,1,1)
plt.plot(t,x)
plt.xlabel("t(s)")
plt.ylabel("x(m)")
plt.title("mouvement fixe glisse")
plt.grid()
plt.show()
plt.subplot(3,1,2)
plt.plot(t,vg)
plt.xlabel("t(s)")
plt.ylabel("vg(m/s)")
plt.grid()
plt.show()
plt.subplot(3,1,3)
plt.plot(t,v)
plt.xlabel("t(s)")
plt.ylabel("v(m/s)")
plt.grid()
plt.show()




