import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import bisect

# Données
R=8.314                         # Constante des GP en uSI
DH0= -112400                    # Noter la valeur de l'enthalpie standard de réaction à 298K en J/mol
DS0= -129.1                     # Entrer la valeur de l'entropie standard de réaction à 298K en J/K/mol

# Valeur de la constante d'équilibre à 298K
K298=np.exp(-(DH0-298*DS0)/R/298)
print("la valeur de la constante d'équilibre à 298K est : ",K298)

# T : vecteur contenant 100 valeurs de température entre 298 et 1000 K
T=np.linspace( 298,1000,100)

# Valeurs de la constante d'équilibre en fonction de T
def K_zero(t):
    return np.exp(-DH0/R/t+DS0/R)

# Valeur du taux d'avancement  pour T = 298 K et P = 1 bar
def Tau_298(x):
    return (K298-(x**4*(5-x)/16/(1-x)**5/1))
tau0=bisect(Tau_298,0.001,0.999)
print ("la valeur du taux d'avancement à 298K est : ",tau0)

# Valeurs du taux d'avancement en fonction de la température et graphe tau (T) à P = 1 bar
Y1=np.zeros(len(T))
def Tau_T(x,t):
    return (K_zero(t)-(x**4*(5-x)/16/(1-x)**5/1))
for i in range (len(T)):
    Y1[i]=bisect(Tau_T,0.001,0.999,args=T[i])

plt.figure(0)
plt.plot(T,Y1,'+g')
plt.grid()
plt.title("tau en fonction de la température T")
plt.xlabel("T(K)")
plt.ylabel("tau")
plt.show ()

#Influence de la pression
Y10=np.zeros(len(T))

# Valeurs du taux d'avancement en fonction de la température et graphe tau (T) à P = 10 bar
def Tau_T_10(x,t):
    return (K_zero(t)-(x**4*(5-x)/16/(1-x)**5/10))
for i in range (len(T)):
    Y10[i]=bisect(Tau_T_10,0.001,0.999,args=(T[i]))

plt.figure(1)
plt.plot(T,Y1,'+g',label='P = 1 bar')
plt.plot(T,Y10,'xb',label='P = 10 bars')
plt.grid()
plt.title("Influence de P sur l'évolution de tau avec T")
plt.xlabel("T(K)")
plt.ylabel("tau")
plt.legend()
plt.show ()



