# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import imageio as iio

#nombre de points
N=26
#champs de température au départ entre 80 et 120 °C

T=np.linspace(80.0,80.0,N)+40*np.random.rand(N)
T1=np.linspace(80.0,80.0,N)
#déclaration des constantes avec theta air=0°C dans tout le script
e=0.02
cp=390
lamda=390       #on ne paut pas utiliser lambda
mu=8900
h=10
a=e/(N-1)
D=lamda/mu/cp
Nimages=800 #nombre d'image du gif

#calcul des constantes de tamps
tauplaque=e*e/D    #temps typique d'évolution dans le métal
tauair=mu*cp*e/2/h   #temps typique d'évolution des échanges métal-air
taulim=a*a/2/D    #valeur maximale du pas temporel
pente=lamda/(h*a+lamda)
tau=taulim
rapport=tau/taulim
#affichage des constantes de temps
print('tauplaque=',tauplaque,'  s')
print('tauair= ',tauair/60,'  min')

print('taulim=',taulim*1000,'  ms')

print('debut de la construction des images')

t=0    #mise à 0 de l'instant initial
#construction des 600 images
for n in range(1,Nimages+1):
   
    for k in range (0,15):
        for p in range(N):
            T1[p]=T[p]
            
        for p in range(1,N-1):
            T[p]=???
        T[0]=???
        T[N-1]=???
        t=t+tau
    #choisir une des deux options ci dessous
    text='t= '+str(int(10*t*1000)/10)+' ms'
    #text='t= '+str(int(10*t/60)/10)+' min'

    #construction d'une image dans la boucle principale
    plt.plot(T,'o-',color='r')
    plt.xlim(0,N+1)
    plt.ylim(80,120)    #réglage de départ pour les ordonnées à modifier si necessaire
    plt.text(15,110,text,fontsize=20)
    filename=str(n)+'.png'
    plt.savefig(filename)
    plt.clf()


print('fin de la construction des images')
print (text)        #qu'est-ce ?
print('valeur maximale de la température ', max(T))
print('valeur minimale de la température ', min(T))
print('valeur moyenne de la température ', np.mean(T))
print('fabrication du gif')
#construction du gif
frames = np.stack([iio.imread(str(i+1)+".png") for i in range(Nimages)], axis = 0)
iio.mimwrite('nomdufichier.gif', frames) 

print ("C'est fini !")        
        

         
            
