import numpy as np
from scipy.optimize import bisect
from matplotlib import pyplot as plt

R=8.314 #seule vraie constante

#choix de discrétisation de T pour toute la suite
Tmin=200
Tmax=600
T=np.linspace(200,600,2000)

#fonction d'affichage
def fenetre(texte):
    plt.figure(texte)
    plt.grid(which='both')
    plt.xlabel("$T$ (en K)")
    plt.ylabel("$X_A$")
    plt.title(texte)
    
#fonctions de calcul    
def XaCin(T,tau,Ea,k0):
    pass
   
def XaTh(T,gamma,Te):
    pass
    
#étude cinétique pure
def cinetique(Ea,k0,val_tau):
    fenetre("Cinétique pour différents tau")
    pass

#étude thermodynamique
def thermodyn(Ea,tau,val_Te,val_gamma,titre):
    fenetre(titre)
    plt.ylim(0,1)
    pass

# recherche des points de fonctionnement
def resolution(gamma,Te,k0,Ea,tau):
    val="gamma="+str(gamma)+",Te="+str(Te)+",Ea="+str(Ea)+",tau="+str(tau)
    fenetre("Solution pour "+val)
    #---------------code à insérer : tracer XaTh-XaCin-----------------------
    plt.axhline(0)
    print("Solutions pour "+val)
    #---------------chercher les points de fonctionnement--------------------
    #----les afficher par print ET sur le graphe (pointillé vertical)--------
    pass

#tracés avec valeurs numériques

#Question 1
Ea=8e4
k0=1e10
val_tau=[1,10,1000]
cinetique(Ea,k0,val_tau)

#Question2a
titre="Cas endothermique"
tau=10
val_gamma=[-0.03]
val_Te=(400,550)
thermodyn(Ea,tau,val_Te,val_gamma,titre)

#Question2b-i
titre="Cas exothermique - fig 1"
tau=1
k0=2e8
Ea=7e4
val_gamma=[0.005]
val_Te=[314,340,375]
thermodyn(Ea,tau,val_Te,val_gamma,titre)

#Question2b-ii
titre="Cas exothermique, influence gamma"
val_Te=[314]
val_gamma=[0.005,0.01,0.0035]
thermodyn(Ea,tau,val_Te,val_gamma,titre)

#recherches de points de fonctionnement 

#Question3a
gamma=-0.03
Te=450
tau=10
Ea=70e3
k0=2e8 
resolution(gamma,Te,k0,Ea,tau)

#Question3b
gamma=0.005
Te=340
tau=1
Ea=70e3
k0=2e8 
resolution(gamma,Te,k0,Ea,tau)