import numpy as np
import matplotlib.pyplot as plt

#paramètres physiques
rho=8960
C=380
K=400
R=0.02
L=0.3
Tgauche=380
Tdroit=320
T0=293
Text=293

#paramètres de simulation
Nx=30 #discrétisation de la variable d'espace
deltax=L/Nx #pas d'espace
tFin=2000 
Nt=10000 #discrétisation de la variable de temps
deltat=tFin/Nt #pas de temps
tRemarquables=[0,Nt//500,Nt//200,Nt//50,Nt//10,Nt//3,2*Nt//3,4*Nt//5,Nt-1]
# choix d'indices temporels pertinents pour l'illustration graphique

def chaleur1D(h):
    D=K/rho/C
    coeff = D*deltat/deltax**2
    coeff2= 2*h*deltat/R/rho/C
    u=np.zeros((Nx+1,Nt+1))
    #CODE A COMPLETER
    return u
    
def profils(h,evol):
    X=np.linspace(0,L,Nx+1)
    plt.figure("Quelques profils de températures")
    plt.title("h="+str(h)+", L="+str(L)+", R="+str(R))
    for j in tRemarquables:
        #plt.plot()
        # à compléter ; prévoir une légende
    plt.legend()
    
def carteTemp(h,evol):
    tFin2=tFin/10
    Ntbis=Nt//10 #suivi moins long pour la carte de couleurs
    pasdet=Nt//500 #pas plus longs
    plt.figure("Evolution des températures")
    plt.title("h="+str(h)+", L="+str(L)+", R="+str(R))
    valeurs=evol-Text
    selectionValeurs=valeurs[:,:Ntbis:pasdet]
    plt.xticks([0,Ntbis//pasdet-1],[0,tFin2])
    plt.imshow(selectionValeurs)
    
def simulation(h):
    evol=chaleur1D(h)
    profils(h,evol)
    carteTemp(h,evol)
    plt.show()

