﻿import matplotlib.pyplot as plt

    #Les fonctions------------------------------------------------------

def courbes(a,b,c,d,n_Ai,n_Bi,n_Ci,n_Di,A,B,C,D):
        x=0
        n_A, n_B, n_C, n_D = n_Ai, n_Bi, n_Ci, n_Di
        dx=(min(n_A,n_B)/100)
        plt.ion()
        x_max=min(n_Ai/a,n_Bi/b)
        plt.xlim(0,1.2*x_max)
        plt.ylim(0,1.2*max(n_A,n_B))
        plt.xlabel('Avancement x (mol)')
        plt.ylabel('n (en mol)')
        plt.grid()
        plt.plot(x,n_A,'b.',label=A)
        plt.plot(x,n_B,'b+',label=B)
        plt.plot(x,n_C,'r.',label=C)
        plt.plot(x,n_D,'r+',label=D)
        plt.legend()
        while (n_A>0) and (n_B>0):
            plt.plot(x,n_A,'b.')
            plt.plot(x,n_B,'b+')
            plt.plot(x,n_C,'r.')
            plt.plot(x,n_D,'r+')
            plt.pause(0.01)
            x=x+dx
            n_A=n_Ai-a*x
            n_B=n_Bi-b*x
            n_C=n_Ci+c*x
            n_D=n_Di+d*x


    #Le programme principal---------------------------------------------

    #Equation du type aA + bB -> cC +  dD

a, b, c, d = 0, 0, 0, 0
n_Ai, n_Bi, n_Ci, n_Di= 0, 0, 0, 0
A, B, C, D = "Mg", "H+", "Mg2+", "H2"

courbes(a,b,c,d,n_Ai,n_Bi,n_Ci,n_Di,A,B,C,D)

plt.ioff()
plt.show()
