import numpy as np
import matplotlib.pyplot as plt
from math import *

## grandeurs liées au problème étudié
n0 = 1 #mol
m_eau = 1000 #g

Delta_rH = -94.6e3 # J/mol
R = 8.314 # J/K/mol
c_eau = 4.18 # J/g/K
C_cal = 100 # 

E_a = 72.4e3 # J/mol
A = 1.3e11 #min−1

#Initialisation des grandeurs
T_i = 298   # température initale (K)
t_i = 0     # instant initial (s)       


#Expression de la capacité thermique totale
C = m_eau*c_eau+C_cal
#----------------------------------------------------------
#|||||||||||  Fonctions à compléter   |||||||||||||||||||||
#----------------------------------------------------------

def k(T) :
    '''constante de vitesse en fonction
        de la température'''
    return 

def d_xi(T,xi,dt) :
    '''avancement élémentaire en fonctio
    de la température T
    de l'avancement xi
    de la durée élémentaire dt'''
    return 
#----------------------------------------------------------
#||||||||   Résolution sans pertes thermiques  ||||||||||||
#----------------------------------------------------------

def d_T(dxi) :
    ''' évolution élémentaire de la température
    en fonction de l'avancement dxi'''
    return 



def resol_sans_perte() :
    #Initialisation des listes
    L_tps=[t_i]
    L_T=[T_i]
    L_xi=[0]
    #Initialisation du temps, de l'avancement et de dt
    t=t_i
    xi=0
    t_f = 60
    dt = (t_f-t_i)/500
    while t<t_f :
        #ajout des termes aux listes L_tps, L_T, L_xi

        L_xi.append()
        L_T.append()
        L_tps.append()      
    return L_tps,L_T,L_xi

#||||||||||||||||||||||||||||||||||||||||||||||||||||||
#|| Définition d'une fonction pour effectuer le tracé||
#||||||||||||||| à ne pas modifier  |||||||||||||||||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||
def trace(f) :
    '''affiche le tracé de la température en fonction
    du temps pour l'appel de la fonction f renvoyant
    les listes L_tps,L_T,L_xi'''
    t,T,xi=f()
    T_f = T_i-n0*Delta_rH/C
    plt.axhline(y=T_f,color='b', label="T_f")
    plt.xlabel('Instant $t$ (min)',fontsize=10)
    plt.ylabel('Température $T$ (K)',fontsize=10)
    plt.title('Évolution temporelle de la température')
    plt.plot(t,T,color='r',label="T=f(t)")
    plt.legend()
    plt.show()

#----------------------------------------------------------
#||||||||   Résolution sans pertes thermiques  ||||||||||||
#----------------------------------------------------------

T_ext = 300
K = 10
def d_Tperte(dxi,dt,T) :
    ''' évolution élémentaire de la température
    en fonction de l'avancement dxi, dt et T
    avec prise en compte des pertes thermiques'''
    return 

def resol_perte() :
    #Initialisation des listes
    L_tps=[t_i]
    L_T=[T_i]
    L_xi=[0]
    #Initialisation du temps, de l'avancement et de dt
    t=t_i
    xi=0
    t_f=600
    dt = (t_f-t_i)/500
    while t<t_f :
        #ajout des termes aux listes L_tps, L_T, L_xi
        pass
    return L_tps,L_T,L_xi
