Modélisation de systèmes physiques ou chimiques
Corrigé
CCP PC 2016
II. Modélisation des phénomènes
II.1. Cas où le solvant ne contient pas le réactif
Q1.1) bar et
Par analyse dimensionnelle, la loi de Henry s'écrit :
Q1.2) : conductance de transfert du polluant dans le solvant (en ) : aire interfaciale entre le liquide et le gaz par unité de volume de la phase liquide et : concentrations du polluant ( ) : volume de la phase liquide (en ) s'exprime en et est bien homogène à un débit molaire.
Q1.3) A , il n'y a pas de polluant dans la phase liquide.
La concentration en A augmente au cours du temps et à , le système constitué des deux phases est à l'équilibre quand la concentration en A dans la phase liquide et identique à la concentration en A à l'interface entre les deux phases.
Q1.4) Bilan de matière dans la phase gazeuse :
Terme d'entrée : débit molaire de A entrant dans le réacteur
Terme de sortie : débit molaire de A passant de la phase gazeuse à la phase liquide
Conclusion :
Q1.5) Bilan de matière dans la phase liquide :
Terme d'entrée : débit molaire de A passant de la phase gazeuse à la phase liquide
Pas de terme de sortie ou de réaction chimique donc :
Q1.6) Si le volume de la couche limite est négligeable alors .
Si le volume de la phase liquide reste constant au cours du temps alors .
Le bilan devient :
Q1.7) La résolution de l'équation différentielle précédente avec donne :
Q1.8) Expression de la concentration en A en fonction du temps? Je ne vois pas quelle expression est attendue par rapport à la résolution de l'équation différentielle demandée à la question précédente ...
A et à . On retrouve le résultat de la question Q1.3.
Q1.9) D'après le résultat de la question Q1.4, .
est homogène à un débit molaire (cf Q1.2). est une grandeur sans dimension. La relation est bien homogène.
Q1.10) Pour des temps longs, . tend alors (troisième fois qu'on le demande en 10 questions, après les questions Q1.3 et Q1.8, au cas où on ne soit toujours pas sûr de notre réponse ...)
II.2. Cas où le réactif est présent dans le solvant
Q2.1) A est toujours la seule espèce présente en phase gazeuse, il n'y a pas de réaction dans cette phase. La pression est toujours maintenu à une valeur constante. Le flux dépend uniquement de la concentration en A dans la phase liquide, pas de celle de B.Le bilan de matière de la phase gazeuse n'est pas modifié, la relation obtenue à la question Q1.4 est toujours vraie.
Q2.2) Une vitesse de réaction chimique a la dimension d'une concentration divisée par un temps. Dans le système S.I., elle s'exprime en .
Q2.3) Bilan de matière dans la phase liquide :
Terme d'entrée : débit molaire de A passant de la phase gazeuse à la phase liquide
Terme de disparition de A dû à la réaction chimique :
Conclusion :
Q2.4) Avec le même raisonnement qu'à la question Q1.6:
Q2.5) D'après l'énoncé, la réaction est d'ordre 1 par rapport à A et par rapport à B . Les deux réactifs disparaissent donc à la même vitesse lors de la réaction chimique.
Pas de terme d'entrée : la totalité du réactif B est initialement présent dans le solvant et sa concentration ne fait que diminuer au cours du temps
Terme de disparition de dû à la réaction chimique :
é
Conclusion :
é
Q2.6) Avec le même raisonnement qu'à la question Q1.6 (et Q2.4) :
Q2.7) Question cadeau: on réécrit le résultat des questions Q2.4 et Q2.6.
III. Traitement numérique des données expérimentales
III.1. Détermination de la valeur du produit
Q3.1.a)
import numpy as np
t_exp = np.loadtxt('data.txt',delimiter=' ',usecols=[0])
Fa_expl = np.loadtxt('data.txt',delimiter=' ',usecols=[1])
Fa_exp2 = np.loadtxt('data.txt',delimiter=' ',usecols=[2])
n = len(t_exp)
Q3.1.b) Il faut tracer le graphe
import matplotlib.pyplot as plt
plt.plot(t_exp,Fa_expl)
plt.xlabel("Temps (en s)")
plt.ylabel("Débit molaire de A (en mol/s)")
plt.show()
Q3.2)
Ca_interface = 38.5 # en mol.m-3
V_liq = 1.0e-3 # en m-3
def smc(kla,t_exp,Fa_expl):
somme = 0
cste = kla * Ca_interface * V_liq
for i in range(len(t_exp)):
somme += (Fa_expl[i] - cste * np.exp(-kla * t_exp[i]))**2
return somme
Q3.3.a)
if (f(xm) > f(xn)):
(xm,xn) = (xn,xm)
Q3.3.b)
#Introduction du point R:
xr = xm + (xm - xn)
if (f(xr)<f(xm)):
#Cas de l'étirement du segment:
xe = xm + 2*(xm-xn)
#Evolution du point N:
if (f(xr)<f(xe)):
xn = xr
else:
xn = xe
else:
#Cas de la contraction du segment:
xcl = xn + 0.5 * (xm-xn)
#Evolution du point N:
if (f(xcl)<f(xm)):
xn = xcl
else:
xn = xm + 0.5 * (xm-xn)
Q3.3.c) Je ne sais pas ce qui est exactement demandé aux candidats à cette question. Puisque l'énoncé a interdit d'utiliser des fonctions quand cela n'était pas demandé, est-ce que l'on attend d'eux qu'ils réécrivent les deux codes précédents? Est-ce qu'un code du type de celui ci-dessous serait accepté?
xm = 1.0
xn = 1.0e-5
compteur = 0
while (abs ((xm-xn)/xm) > 1.0e-4 and compteur < 1000):
#[bloc d'instructions de la question Q3.3.a]
#[bloc d'instructions de la question Q3.3.b]
compteur += 1
Q3.4)
Fa_thl = []
kla_opt = 5.0e-3
for i in range(n):
Fa_thl.append(kla_opt*Ca_interface*V_liq*np.exp(-kla_opt*t_exp[i]))
Q3.5)
plt.plot(t_exp,Fa_expl)
plt.plot(t_exp,Fa_th1)
plt.xlabel("Temps (en s)")
plt.ylabel("Débit molaire de A (en mol/s)")
plt.show()
Ce tracé permet de valider ou non le modèle. Le modèle peut être validé si les points expérimentaux sont répartis aléatoirement de part et d'autre de la courbe théorique. Par exemple, les deux modèles ci-dessous (exponentiel à gauche et linéaire à droite) ont le même écart quadratique avec les points expérimentaux :
Q3.6)
Z_X = []
for xi in X:
Z_X.append(z(xi))
for i in range(len(Z_X)-1):
i_min = i
for j in range(i+1,len(Z_X)):
if (Z_X[j]<Z_X[i_min]):
i_min = j
(Z_X[i_min],Z_X[i])=(Z_X[i],Z_X[i_min])
(X[i_min],X[i])=(X[i],X[i_min])
III.2. Détermination des valeurs de et
Q3.7)
Dak = 1.83e-9*0.1 #Produit Da*k
def G(t,CA,CB,A,kla):
return -kla*CA + Ca_interface*(kla-A*np.sqrt(Dak*CB))
def H(t,CA,CB,A):
return - Ca_interface * A * np.sqrt(Dak*CB)
Q3.8.a) Question mal posée : Je ne comprends pas l'intérêt de ne pas faire commencer les indices et à la même valeur. De plus, si le premier et le dernier élément du vecteur sont respectivement et , les expressions de et devraient être :
Dt = Dt_exp / 100
m = int((tf-t0)/Dt)
Q3.8.b)
La méthode d'Euler devrait pouvoir être appliquée à partir de cette question, sans avoir besoin des questions Q3.8.c et Q3.8.d
Q3.8.c)
Q3.8.d)
Q3.8.e)
Q3.8.f)
def Euler (G,H,t0,tf,CA0,CB0,Dt,m,a,kla):
t = [t0]
CA = [CA0]
CB = [CB0]
for j in range (m):
CA.append(CA[j] + Dt*G(t[j],CA[j],CB[j],a,kla))
CB.append(CB[j] + Dt*H(t[j],CA[j],CB[j],a))
t.append(t[j]+Dt)
return (np.array(t),np.array(CA))
Q3.9) Même problème d'indice qu'à la question Q3.8.a.
CA_th2 = Euler(G,H,t0,tf,0.0,1000.0,Dt,m,a,kla)[1]
Fa_th2 = []
for i in range(0,len(CA_th2),100):
Fa_th2.append(kla *(CA_interface - CA_th2[i]) * V_liq)
Q3.10) Question identique à la question Q3.2.
def smc2(a,t_exp,Fa_exp2):
#[bloc d'instructions de la question Q3.9]
somme = 0
for i in range(len(Fa_exp2)):
somme += (Fa_exp2[i] - Fa_th2[i])**2
return somme
III.3. Utilisation du modèle pour réaliser des simulations
Q3.12) Plus la concentration dans la phase liquide est élevée et plus la vitesse de la réaction chimique qui transforme A en un autre produit est rapide. Si A disparaît plus rapidement par la réaction chimique alors sera plus important (car il est proportionnel à ) donc devrait être plus grand.
Q3.13) Cf question précédente, la réaction chimique accélère le transfert de A de la phase gazeuse vers la phase liquide.
Q3.14)
CB0 = float(input("Entrez CB0 : "))
CA_th2 = Euler(G,H,0,1000,0.0,CB0,Dt,m,a_opt,kla_opt)[1]
Fa_th2 = []
for i in range(0,len(CA_th2),100):
Fa_th2.append(kla_opt * (CA_interface - CA_th2[i]) * V_liq)
Q3.15)
na = 0
for i in range(len(t_exp)-1):
na += (t_exp [i +1] - t_exp [i]) * (Fa_th2[i +1] + Fa_th2[i])/2
CCINP Modélisation PT 2016 - Version Web LaTeX | WikiPrépa | WikiPrépa