WikiPrépaLivrets

CCINP Modélisation PC 2022Sujet, corrigé et rapport du jury

Pas encore noté

Téléchargements

L'épreuve en chiffres

Moyenne 11,32 / 20 · écart-type 3,46 · 4 382 présents · où vous situez-vous ?
Afficher ou masquer la section
Moyenne
11,32/ 20
Écart-type
3,46
Présents
4 382
Coefficient
8
Durée
4 h
moyenne 11,3205101520
Deux tiers des copies environ (moyenne ± écart-type)

Votre note sur 20 à ce sujet, en conditions de concours.

Source : document officiel du concours, épreuve du 11 mai 2022. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.

Ces sujets peuvent vous intéresser

Lecture du sujet en ligne

L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Afficher ou masquer la section

ÉPREUVE MUTUALISÉE AVEC E3A-POLYTECH ÉPREUVE SPÉCIFIQUE - FILIÈRE PC

MODÉLISATION DE SYSTÈMES PHYSIQUES OU CHIMIQUES

Durée : 4 heures

N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.

RAPPEL DES CONSIGNES

  • Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
  • Ne pas utiliser de correcteur.
  • Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont autorisées.
Le sujet est composé de trois parties et d'une Annexe en fin d'énoncé.

Étude d'une réaction à solide consommable

Présentation du problème

Les réactions à solide consommable sont courantes dans les procédés de transformation de la matière. On peut citer la réaction du dioxyde d'uranium ( UO_2 ) avec l'acide fluorhydrique ( HF ) pour produire le tétrafluorure d'uranium ( UF_4 ) selon la stœchiométrie suivante :
UO_(2(s)) + 4HF_((g))⇄UF_(4(s)) + 2H_2 O_((g))
Cette réaction est impliquée dans la conversion du dioxyde d'uranium en hexafluorure d'uranium ( UF_6 ) qui est utilisé dans les deux principaux procédés d'enrichissement de l'uranium (la diffusion gazeuse et l'ultracentrifugation) en raison de son point triple à 64^∘C (à 150 kPa ).
Un autre exemple est la réaction d'oxydation du sulfure de zinc en présence d'air pour former l'oxyde de zinc, un matériau semi-conducteur qui pourrait remplacer le dioxyde de titane dans les cellules photovoltaïques. La réaction s'écrit :
2ZnS_((s)) + 3O_(2(g))⇄2ZnO_((s)) + 2SO_(2(g))
Dans les deux cas, la réaction met en jeu une phase fluide et une phase solide. Une particularité de ce type de réactions est la formation d'un produit solide poreux qui remplace progressivement le réactif initial. Dans le cas de particules sphériques, on observe un déplacement du front de réaction (l'interface entre le réactif solide non consommé et le produit solide) de l'extérieur de la particule vers le centre en fonction du temps (figure 1).
Figure 1 - Représentation schématique de l'évolution du front de réaction en fonction du temps
Les phénomènes physiques et chimiques mis en jeu lors de la réaction sont :
  • le transport du fluide réactif à travers la couche limite externe des particules (généralement par convection),
  • le transport du fluide réactif à travers la couche de produit solide poreux par diffusion dans les pores,
  • la réaction chimique qui est localisée au niveau du front de réaction,
  • le transport du produit fluide (s'il existe) dans les pores, puis à travers la couche limite externe.
Le modèle qui permet de représenter ces phénomènes porte le nom de modèle à cœur rétrécissant. Dans une version simple de ce modèle, on suppose que le produit poreux a une densité similaire à celle du réactif et que par conséquent le volume final de la particule qui a totalement réagi est le même que celui de la particule initiale. Dans le cas général, la consommation des particules est contrôlée par les trois premiers phénomènes cités précédemment. Cependant, dans certains cas limites, il se peut que l'un des trois phénomènes soit beaucoup plus lent que les deux autres et c'est lui qui va imposer la vitesse de consommation des particules. On parle alors de phénomène limitant. Par exemple, si la réaction chimique est très lente par rapport aux phénomènes de transport, ce sera le phénomène limitant; la vitesse de consommation des particules sera contrôlée par la réaction chimique et on parlera de régime chimique.
Dans la suite, pour généraliser, la réaction entre les particules solides (B) et la phase fluide (A) sera écrite de la manière formelle suivante où v est le coefficient stœchiométrique devant le solide :
A (fluide) + v B (solide) ⇄ produits
Le but de cette épreuve est de mettre en équation le modèle à cœur rétrécissant permettant de prédire la consommation des particules en fonction du temps.
La première partie consiste, dans un premier temps, à établir l'équation aux dérivées partielles régissant l'évolution de la concentration du fluide A dans la couche de solide poreux B; puis, dans un second temps, une version simplifiée du modèle, permettant d'obtenir des résultats facilement sans avoir recours à la résolution de l'équation aux dérivées partielles, sera déterminée à l'aide d'hypothèses sur le fonctionnement du système physico-chimique.
La deuxième partie est relative à la résolution numérique de l'équation aux dérivées partielles dans le cas général (sans hypothèses simplificatrices).
La dernière partie traite de la comparaison des résultats obtenus par les deux méthodes de résolution du problème.

Partie I - Mise en équation du modèle à cœur rétrécissant

L'objectif de cette première partie est d'établir l'équation différentielle qui régit l'évolution de la concentration du fluide A dans la couche de solide poreux B en fonction du temps et de l'espace. Une première version simplifiée du modèle à cœur rétrécissant sera alors déterminée.

1.1 - Étude de la diffusion du fluide dans la couche de produit poreux

Le transport du fluide dans la couche de produit de la réaction a lieu par diffusion dans les pores de ce matériau poreux. La porosité d'un matériau est définie comme le volume des pores divisé par le volume total de matériau poreux. Le volume de matériau poreux inclut le volume de solide (appelé volume structurel) et le volume des pores. La porosité est donc la fraction volumique de vide dans le matériau.
Une étude au laboratoire a permis de déterminer les masses volumiques structurelle (sans la porosité), ρ_s, et apparente (prenant en compte la porosité), ρ_(app), du produit poreux formé au cours de la réaction. Les valeurs obtenues sont ρ_s = 2500 kg ⋅ m^(− 3) et ρ_(app) = 1250 kg ⋅ m^(− 3).
Q1. Justifier que ρ_s > ρ_(app).
Donner les valeurs théoriques minimale et maximale de la porosité.
Calculer la porosité, ε, du produit à partir des valeurs des masses volumiques structurelle et apparente mesurées au laboratoire.
Pour simplifier, on considère que la particule est un parallélépipède rectangle comme représenté sur le schéma de la figure 2. L'épaisseur de la particule est de 2e et on suppose que la longueur L et la largeur l sont très grandes devant l'épaisseur.
On note S la section latérale correspondant au produit L × l et on considère que la particule réagit avec le fluide uniquement par les deux faces latérales de surface S comme représenté sur le schéma de la figure 2.
Figure 2 - Schéma de la particule de solide d'épaisseur 2e
En représentation cartésienne, on note J_N^(→−)(x, y, z, t) le vecteur densité de flux de particules associé aux phénomènes de diffusion que l'on étudie.
Q2. Indiquer les conséquences de l'hypothèse L et l≫2e sur la direction du déplacement du front de réaction et sur les invariances du système.
Expliquer pourquoi on peut restreindre cette étude à l'intervalle [0, e].

1.2 - Établissement de l'équation de la diffusion de A dans la couche de produit poreux B

Les phénomènes de diffusion qui nous intéressent sont régis par les équations suivantes :
J_N^(→−)(x, t) = − Dgrad^(→−)(n(x, t)) (loi de Fick) et (δN)/(dt) = ∬J_N^(→−)dS⃗ (flux de J_N^(→−))
Q3. Rappeler la signification physique de la loi de Fick. Préciser le nom et les unités des grandeurs qui la constitue.
On considère un volume élémentaire de la couche de produit poreux de section S et d'épaisseur dx (figure 3a). La figure 3b est une vue de profil de la figure 3a. La figure 3c est également une vue de profil sur laquelle le volume structurel et le volume des pores ont été séparés de manière fictive.
Figure 3 - Volume élémentaire de la couche de produit poreux de section S et d'épaisseur dx(a) Vue en 3 dimensions, (b) Vue de profil
Q4. Reproduire sur votre copie le schéma du volume élémentaire de la figure 3c en y faisant figurer les flux de matière aux abscisses x et x + dx.
Q5. Réaliser un bilan de matière sur ce volume élémentaire traduisant la conservation du nombre de molécules et en déduire l'équation de la diffusion dans la couche de produit poreux :
ε(∂n)/(∂t) = D_e(∂^2 n)/(∂x^2)
où D_e est un coefficient de diffusion effectif qui prend en compte le caractère poreux du matériau.
On utilise plus généralement l'équation de la diffusion de A dans la couche de produit poreux en considérant la concentration molaire C plutôt que le nombre de molécules par unité de volume :
ε(∂C)/(∂t) = D_e(∂^2 C)/(∂x^2)
Cette équation s'accompagne des deux conditions aux limites suivantes:
  • en x = 0, D_e(∂C)/(∂x)|_(x = 0) = k_D(C_e − C_s)
  • en x = x_f, D_e(∂C)/(∂x)|_(x = x_f) = k_C C_f
    avec:
  • k_D la conductance de transfert du fluide dans la couche limite (en m ⋅ s^(− 1) ) ;
  • C_e la concentration molaire du fluide dans la phase gazeuse en dehors de la couche limite du fluide ;
  • C_s la concentration en surface de la particule, en x = 0 (donc C_s = C(x = 0) );
  • C_f la concentration au niveau du front de réaction, en x = x_f (donc C_f = C(x = x_f) );
  • k_C la constante cinétique de la réaction de consommation du solide B par le fluide A (en m ⋅ s^(− 1) ) (figure 4).
Figure 4 - Schéma de la particule de solide (sur l'intervalle [0, e] ) partiellement consommée avec la représentation de la couche limite du fluide et du front de réaction
Q6. Vérifier à l'aide d'une analyse dimensionnelle que les conditions aux limites (équations (3) et (4)) sont bien homogènes.
Expliquer comment les deux conditions aux limites ont été obtenues (on pourra faire une analogie avec la loi des transferts thermiques de Newton : J_(th)^(→−) = h(T_s − T_f)n⃗ avec J_(th)^(→−) la densité de courant thermique reçu par un fluide en mouvement à la température T_f au voisinage d'un solide de température de surface T_s et h le coefficient de transfert thermique).

1.3 - Modèle simplifié : hypothèse du régime stationnaire pour la phase fluide

Pour simplifier la résolution de l'équation aux dérivées partielles (équation (2)), nous supposons que la phase fluide évolue en régime stationnaire. La validité de cette hypothèse sera développée dans la partie numérique.
Q7. Simplifier l'équation (2) de la diffusion de A dans le cas du régime stationnaire pour la phase fluide.
Montrer que F_A = − D_e(∂C)/(∂x)S, où F_A est le flux molaire de A, c'est-à-dire le flux du vecteur densité de flux de particules molaire à travers une section S de particule solide.
Indiquer comment varie F_A dans la couche de produit poreux.
Q8. On rappelle que C_s = C(x = 0) et on note C_x la concentration du fluide A pour une abscisse x comprise dans l'intervalle [0, x_f].
Démontrer l'expression suivante de F_A en s'appuyant sur la question Q7 et en précisant les différentes étapes de la démonstration :
F_A = (D_e S)/x(C_s − C_x)
L'hypothèse du régime stationnaire pour la phase fluide entraine l'égalité des trois flux molaires de A : celui qui traverse la couche limite externe, celui qui diffuse dans la couche de produit poreux et celui consommé par la réaction.
L'égalité des flux molaires de A conduit à l'expression suivante:
F_A = k_D S(C_e − C_s) = (D_e S)/x(C_s − C_x) = kSC_x
dans le cas particulier où x est la position du front de réaction.
Cette situation est formellement analogue à un montage électrique constitué de 3 résistances placées en série traversées par un même courant. La figure 5 représente cette analogie.
Dans notre cas, ces trois résistances en série sont dans l'ordre:
  • la résistance au transfert externe (notée R_(te) ) dans la couche limite externe ;
  • la résistance au transfert interne (notée R_(ti) ) par la diffusion dans la porosité ;
  • la résistance par la réaction chimique (notée R_(rc) ) localisée au niveau du front de réaction.
Figure 5 - Représentation schématique du problème en termes de résistances en série
Q9. Indiquer quel type de grandeurs du problème étudié correspond aux potentiels U_A, U_B, U_C et U_D de la figure 5.
Transformer l'équation (6) pour faire apparaître ces résistances en se basant sur l'analogie "électrique".
Montrer que l'on peut écrire F_A = (C_e)/(R_(éq)), où R_(éq) est une résistance équivalente dont l'expression est à préciser en fonction des paramètres D_e, k, k_D, x et S.
On note N_B la quantité de matière du solide B. L'évolution de N_B en fonction du temps est régie par l'équation différentielle suivante:
F_A = − 1/v(dN_B)/(dt)
où v est le coefficient stœchiométrique défini dans la présentation.
Q10. Expliquer comment a été obtenue l'équation différentielle précédente (équation (7)). Indiquer comment N_B évolue en fonction du temps.
Q11. Soit N_B(x) la quantité de matière de B comprise entre les abscisses x et e.
Pour tout x compris entre x_f et e, exprimer N_B(x) en fonction de ρ_B, M_B, S, x et de e, avec ρ_B la masse volumique de B et M_B sa masse molaire.
Mettre l'équation (7) sous la forme F_A = Q(∂x)/(∂t) avec Q une constante qui dépend de v, ρ_B, M_B et de S et dont l'expression est à préciser.
La combinaison de l'expression de F_A obtenue à la Q9 et de celle obtenue à la question précédente permet d'obtenir l'équation à variables séparées suivante :
dt = K(1/(k_D) + x/(D_e) + 1/k)dx, avec K = (ρ_B)/(vC_e M_B)
Q12. Montrer que l'intégration de l'équation (8) entre la date t = 0 (pour laquelle le front de réaction est en x = 0 ) et la date courante t = t_f (front de réaction en x_f ) permet d'obtenir la relation :
t_f = t_(0e)(x_f)/e + t_(0i)((x_f)/e)^2 + t_(0c)(x_f)/e
avec:
  • t_(0e) = Ke/(k_D), le temps caractéristique de transport dans la couche limite externe ;
  • t_(0i) = K1/(D_e)(e^2)/2, le temps caractéristique de transport interne par diffusion dans la porosité ;
  • t_(0c) = Ke/(k_C), le temps caractéristique de consommation par la réaction chimique.
On introduit le taux de conversion de B, X_B, défini par le rapport entre la quantité de B consommée et la quantité initiale de B , notée N_(B0).
Q13. Rappeler la relation entre X_B, N_(B0) et N_B, la quantité de B restante.
Q14. Donner la relation entre X_B et x_f, puis exprimer t_f en fonction des trois temps caractéristiques et de X_B.
Q15. Donner la relation entre le temps total de consommation des particules, t_0, et les trois temps caractéristiques.
Q16. Une expérience en laboratoire sur des particules d'épaisseur 2e a conduit aux valeurs suivantes : t_(0e) = 60 s, t_(0i) = 300 s et t_(0c) = 120 s.
Calculer le facteur par lequel est multiplié le temps total de consommation des particules si l'épaisseur des particules est multipliée par un facteur 2.
L'analyse des valeurs des trois temps caractéristiques permet de mettre en évidence le poids de chaque phénomène dans la résistance au transfert de matière. Dans certains cas extrêmes, l'un de ces trois phénomènes peut prendre le dessus sur les autres. On va alors parler de régime limitant. Dans le cas de cette étude, le régime limitant peut donc être le transport externe, la diffusion dans le produit poreux ou la réaction chimique. D'un point de vue pratique, on considère qu'un régime est limitant lorsque le temps caractéristique associé est supérieur d'un ordre de grandeur aux temps caractéristiques associés aux deux autres phénomènes (par exemple, si le transport de matière externe était le phénomène limitant, on aurait t_(0e)≫t_(0i) et t_(0e)≫t_(0c) ).
Q17. Donner les conditions sur k_D, k_C et D_e dans le cas où le régime limitant est le régime de diffusion interne.

Partie II - Résolution numérique du problème

Note : les codes numériques demandés au candidat devront être réalisés dans le langage Python. On supposera la bibliothèque « numpy » chargée. Une annexe présentant les fonctions usuelles de la bibliothèque numpy de Python est disponible page 16. Les commentaires suffisants à la compréhension du programme devront être apportés et des noms de variables explicites devront être utilisés lorsque ceux-ci ne sont pas imposés.
On souhaite vérifier que l'hypothèse du régime stationnaire pour le fluide A est valable et on propose de résoudre numériquement l'équation de la diffusion de A (équation 2). On s'intéresse au cas particulier où l'un des trois phénomènes est limitant (il sera à déterminer au préalable dans une des questions qui suit). L'épaisseur totale de la plaque ( 2e ) est de 2, 0 mm. Le fluide est de l'air synthétique constitué de dioxygène (fraction molaire de 0,21 ) et de diazote (fraction molaire de 0,79 ). Le solide réagit uniquement avec le dioxygène. La réaction est menée à une pression de 2,5 bars et à une température de 900^∘C. On suppose que la concentration de fluide ne varie pas au cours de l'avancement de la réaction (large excès). La masse molaire du solide est égale à 97, 5 g ⋅ mol^(− 1) et sa masse volumique est de 4130, 0 kg ⋅ m^(− 3). La porosité du produit solide formé est de 0,5 . Le coefficient de diffusion du fluide dans le produit poreux, D_e, est égal à 1, 25 ⋅ 10^(− 6) m^2 ⋅ s^(− 1). La conductance de transfert et la constante cinétique de la réaction sont toutes les deux égales à 100 m ⋅ s^(− 1). Le coefficient stœchiométrique v vaut 1 .
Le tableau 1 contient une partie des grandeurs mathématiques et des objets Python utilisés par la suite. Certaines grandeurs, moins importantes ou faisant l'objet d'une question spécifique, ne figurent volontairement pas dans ce tableau.
Symbole mathématique Objet Python Signification
C(x, t) vect_C vect_Cprec vect_R
concentration du fluide A
vecteur des concentrations
copie du vecteur des concentrations vecteur des indices du front de réaction
x N
abscisse
vecteur des abscisses
moitié de l'épaisseur d'une particule
nombre d'intervalles
Δt Dt
date
vecteur des dates
indice temporel
pas de temps
ItMax ItMax nombre maximum d'itérations
Tableau 1 - Tableau de correspondance entre grandeurs mathématiques et objets Python
On suppose que le transport interne du fluide (par diffusion dans les pores du solide) est le régime limitant.
Q18. Calculer la concentration du fluide A dans la phase gazeuse, C_e(mol ⋅ m^(− 3)), à l'aide des données de l'énoncé sachant que le solide réagit uniquement avec le dioxygène contenu dans le flux gazeux. On pourra supposer que le fluide A se comporte comme un gaz parfait à la pression de l'étude. Pour la constante des gaz parfaits on prendra R = 8, 314 J ⋅ mol^(− 1) ⋅ K^(− 1).
Q19. Calculer le temps total de consommation des particules dans le cas où l'on ferait l'hypothèse du régime stationnaire pour le fluide à l'aide de l'équation (9).
Q20. Ecrire une fonction Cgaz(x, P, T) qui prend en arguments la fraction molaire x, la pression totale P et la température T d'un gaz supposé parfait et qui renvoie sa concentration molaire C (en utilisant les unités SI ).
La méthode utilisée pour la résolution numérique de l'équation aux dérivées partielles représentant la diffusion dans le produit poreux est la méthode des différences finies avec un schéma explicite. La première étape est la transformation de l'équation (2) pour la discrétiser dans l'espace et dans le temps.
Pour discrétiser l'espace, on choisit de découper l'intervalle [0, e] en 30 parties de même longueur (figure 6). On utilise l'indice i pour identifier le i^(ème) point de l'intervalle ( i varie de 0 à N ).
Figure 6 - Discrétisation spatiale dans la direction x
Q21. Préciser la valeur de N.
Donner le code permettant de calculer le pas d'espace Δx (variable Python : Dx).
Donner le code permettant de construire le vecteur vect_x qui contiendra les abscisses x.
Pour obtenir l'évolution de la concentration en chaque point de l'espace en fonction du temps, on discrétise le temps en intervalles de durée Δt, appelé le pas de temps (variable Python : Dt ). On utilise l'indice k pour identifier la date particulière t_k tel que t_k = kΔt. L'indice k commence à 0 et peut prendre ItMax valeurs (variable Python : ItMax). ItMax est fixée par l'utilisateur et représente le nombre maximum d'itérations.
La discrétisation de l'équation aux dérivées partielles est obtenue en écrivant des développements limités. Dans la suite, on note C_(i, k) la concentration au point d'abscisse x_i à l'instant t_k. Ainsi:
  • C_(i, k + 1) représente la concentration au point d'abscisse x_i à la date t_(k + 1) = t_k + Δt;
  • C_(i + 1, k) représente la concentration au point d'abscisse x_(i + 1) = x_i + Δx à la date t_k.
Q22. À l'aide d'un développement limité, donner l'expression de C(x, t + Δt) à l'ordre 1 en fonction de C(x, t) et de (∂C)/(∂t)|_(x, t), la dérivée de C par rapport au temps évaluée en x à l'instant t.
Q23. Donner alors l'expression de (∂C)/(∂t)|_(x_i, t_k), la dérivée partielle de C par rapport au temps évaluée à l'abscisse x_i à l'instant t_k, en fonction de C_(i, k), C_(i, k + 1) et Δt.
L'utilisation de deux développements limités a conduit à l'expression discrétisée (admise) suivante pour l'approximation de la dérivée seconde de C par rapport à x :
(∂^2 C)/(∂x^2)|_(x_i, t_k) ≈ (C_(i + 1, k) − 2C_(i, k) + C_(i − 1, k))/((Δx)^2)
Q24. Préciser l'ordre auquel ont été faits les développements limités qui ont permis d'obtenir l'expression approchée donnée par l'équation (10).
Q25. Montrer que l'équation aux dérivées partielles de diffusion (équation (2)) peut se mettre sous la forme suivante :
C_(i, k + 1) = C_(i, k) + r(C_(i + 1, k) − 2C_(i, k) + C_(i − 1, k))
et donner l'expression de la variable r en fonction du coefficient de diffusion D_e, de la porosité ε, du pas de temps Δt et du pas d'espace Δx.
Pour des raisons de convergence numérique, on admet que la quantité (D_e)/ε(Δt)/(Δx^2) doit être inférieure à 1/2.
Q26. Donner la gamme de valeurs de Δt satisfaisant à la condition ci-dessus en admettant que Δx = 3, 33 ⋅ 10^(− 5) m.
Par la suite, on choisit un pas de temps suffisamment petit, Δt = 1, 00 ⋅ 10^(− 4) s, pour satisfaire à la condition (D_e)/ε(Δt)/(Δx^2) < 1/2.
Q27. Avec ce pas de temps et en supposant une durée totale de consommation t_0 ≈ 3, 15 ⋅ 10^3 s, donner une estimation du nombre d'itérations nécessaires pour réaliser la simulation.
Au fur et à mesure de l'avancement de la réaction, le front de réaction se déplace de x = 0 à x = e. Lors du déplacement du front de réaction, la particule est constituée :
  • pour 0 ≤ x < x_f, d'une partie qui a réagi dans laquelle diffuse le réactif ;
  • pour x_f ≤ x < e, d'une partie qui n'a pas encore réagi et dans laquelle la concentration en réactif fluide est nulle.
    L'indice spatial correspondant à la position du front de réaction sera noté i_(fr) (variable Python : ifr).
    L'équation (11) est valable uniquement pour les indices i de 1 à i_(fr) − 1.
    Pour les indices i = 0 et i = i_(fr), il est nécessaire d'utiliser les conditions aux limites (équations (3) et (4)) pour calculer les valeurs particulières de C_(0, k) et C_(i_(fr), k). La discrétisation des conditions aux limites conduit aux deux relations de récurrence suivantes:
  • en x = 0, C_(0, k) = (C_e + sC_(1, k))/(1 + s)
  • en x = x_f, C_(i_(fr), k) = u/(1 + u)C_(i_(fr) − 1, k)
Q28. Donner les expressions des paramètres s et u qui interviennent dans les relations de récurrence permettant de calculer les concentrations aux limites.
Pour résoudre numériquement l'équation (2), on utilise l'algorithme décrit par le code Python 1 dont les étapes principales sont les suivantes:
  • initialisation des variables;
  • boucle d'intégration :
  • calcul de l'indice i_(fr) correspondant au front de réaction;
  • calcul des concentrations à chaque pas d'espace à l'aide des relations de récurrence ;
  • stockage des concentrations dans une matrice.
Certaines portions du code Python 1 sont volontairement absentes car elles seront à compléter. Elles sont signalées par " _ _ _".
Q29. Compléter le code Python 1. La variable utilisée pour définir le compteur sera appelée «compteur». Les seules variables à considérer pour l'initialisation sont celles relatives au compteur de la boucle.
#Boucle itérative
#Initialisation des variables
_ _ _ #valeur ItMax
_ _ #valeur initiale pour la variable compteur
#Début de la boucle
_ _ _ compteur < _ _ _ :
    #Calcul de l'indice ifr (code non demandé ici)
    #Calcul des concentrations à chaque pas d'espace (code non demandé ici)
    #stockage des concentrations dans une matrice (code non demandé ici)
    #Incrémentation du compteur
    - - -
Code Python 1 - Structure de la portion du code correspondant à la boucle itérative
Le code Python 2 permet de calculer les concentrations en tout point de l'espace à la date t_(k + 1) à partir des concentrations en tout point de l'espace à la date t_k. Les concentrations seront stockées dans les vecteurs nommés vect_C et vect_Cprec qui ont la même dimension que le vecteur qui contient les abscisses (vect_x). On suppose que les valeurs des paramètres r, s et u ont déjà été définies ainsi que celles du vecteur vect_x. Initialement les concentrations sont nulles en tout point de l'espace ( C_(i, 0) = 0 pour tout i ).
#Initialisation de vect_C et de vect_Cprec
vect_C = np.zeros(len(vect_x))
vect_Cprec = np.zeros(len(vect_x))
#Calcul des concentrations
#Pour i = 0
vect_C[0] = (Ce + s * vect_C[_]) / (1 + s)
#Pour i de 1 à ifr - 1
for i in range (_,_):
    vect_C[i] = r * vect_Cprec[_] + (1-2*r)*vect_Cprec[_] + r * vect_Cprec[_]
#Pour i = ifr
vect_C[ifr] = u / (1 + u) * vect_C[_]
#Stockage des valeurs de C à l'instant k pour le calcul à l'instant k+1
- - -
Code Python 2 - Code de calcul de la concentration du fluide
Q30. Préciser les indices des vecteurs manquant dans le code Python 2 aux lignes 7, 11 et 14 (ils sont indiqués comme suit : [_]).
Indiquer les indices de début et de fin de la boucle for à la ligne 10.
Expliquer le rôle du vecteur vect_Cprec et compléter le code de la ligne 17.
L'indice du front de réaction, i_(fr), correspond à la partie entière du rapport entre l'épaisseur de la couche de produits poreux, notée R, et du pas d'espace, Δx. Pour l'obtenir, il faut calculer R à chaque itération. Pour cela, on utilise l'expression discrétisée du bilan de matière en régime transitoire sur le réactif solide, qui s'écrit :
(R_(k + 1) − R_k)/(Δt) = − (D_e)/(V_(molB))(C_(i_(fr), k + 1) − C_(i_(fr) − 1, k + 1))/(Δx)
avec R_k l'épaisseur de la couche de produit poreux à la date t_k (c'est aussi la position du front de réaction) et V_(molB) le volume molaire de B (variable Python : VmolB).
Q31. Donner le code permettant de calculer la valeur de R_(k + 1), la valeur de R à l'instant t_(k + 1). Indiquer avec précision où il sera inséré dans le code Python 1.
Q32. Donner le code permettant de calculer la valeur de l'indice du front de réaction i_(fr) à partir de la valeur de R_k.
Le nombre d'itérations étant très grand, on ne souhaite pas enregistrer les valeurs de concentrations à toutes les dates, mais seulement toutes les 100000 itérations. Pour ces itérations, on enregistre :
  • la valeur des concentrations dans la matrice mat_C ;
  • la date dans le vecteur vect_t ;
  • l'abscisse du front de réaction dans le vecteur vect_R.
Q33. Justifier les dimensions de la matrice mat_C, du vecteur vect_t et du vecteur vect_R.
Q34. Compléter le code Python 3 correspondant à l'enregistrement des concentrations et de la date aux instants souhaités (les portions de code à compléter sont identifiées par " _ _ _").
#Boucle itérative
#Initialisation des variables
mat_C = _ _ _ #matrice des concentrations
vect_t = _ _ _ #vecteur des temps
#Début de la boucle
    #Calcul de l'indice ifr (code non demandé ici)
    #Calcul des concentrations à chaque pas d'espace (code non demandé ici)
    #stockage des concentrations dans la matrice mat_C et des dates dans vect_t
    if j * 100000 _ _ _ _ _ _ :
        mat_C[ _ _ _ , _ _ _ ] = vect_C
        vect_t [j] = j * _ _ _ * Dt
        _ _ _ _ _ _
    #Incrémentation du compteur (code non demandé ici)
Code Python 3 - Stockage des concentrations calculées et de la date.

Partie III - Comparaison entre les deux modèles

Les taux de conversion du solide (défini à la question (13)) obtenus par les deux méthodes de calcul sont représentés en fonction du temps sur le graphe de la figure 7. La résolution de l'équation aux dérivées partielles prédit une consommation totale du solide après 30417663 itérations.
Figure 7 - Comparaison des taux de conversion obtenus par les deux modèles
Q35. Indiquer les deux erreurs qui se sont glissées dans les lignes 5 et 12 du code Python 4 dont le but est de:
  • tracer la conversion du solide en fonction du temps sur un premier graphe ;
  • tracer l'évolution de la concentration de fluide réactif en fonction de l'abscisse pour le temps final d'intégration sur un second graphe.
import matplotlib.pyplot as pl
#Premier graphe
fig = pl.figure(1)
pl.plot(vect_t[:],vect_R[:])
pl.xlabel('temps')
pl.ylabel('conversion du solide')
pl.show()
#Deuxième graphe
fig = pl.figure(2)
pl.plot(vect_x,mat_C[:,ItMax])
pl.xlabel('abscisse')
pl.ylabel('concentration')
pl.show()
Code Python 4 - Code pour le tracé des graphes
Q36. Calculer le temps total de consommation correspondant (arrondi à la seconde près) à partir du nombre d'itérations nécessaires pour atteindre la consommation totale du solide. Comparer cette valeur avec celle obtenue en faisant l'hypothèse du régime stationnaire pour le fluide. Conclure quant à l'accord des deux modèles.
Q37. En considérant que l'hypothèse du régime stationnaire pour le gaz est acceptable et que le phénomène limitant est la diffusion du réactif fluide dans la couche de produit poreux, dessiner sur un même graphe l'allure des profils de concentration du réactif fluide entre x = 0 et x = e pour trois configurations différentes :
  • une particule qui n'a pas réagi ;
  • une particule qui a totalement réagi ;
  • une particule qui a partiellement réagi.
On fera figurer les valeurs de concentrations et les abscisses caractéristiques sur le graphe.

ANNEXE

Bibliothèque numpy de Python

Import de la bibliothèque numpy :
>>> import numpy as np
Création d'un tableau numpy à 2 lignes et 3 colonnes,appelé M :
>>> M = np.array([[1.5, 2, 3], [4, 5, 6]])
>>> print(m)
[[1.5 2. 3.]
    [4. 5. 6. ]]
Accès à un élément de M :
>>> M = np.array([[1.5, 2, 3], [4, 5, 6]])
>>> print(M[0, 0])
1.5
>>> M[1, 2] = -7
>>> print(M)
[[\begin{array}{lll}{1.5 2. 3.]}&{}\end{array}]
    [4. 5. -7. ]]
Sélection d'une ligne ou d'une colonne de M :
>>> M = np.array([[1.5, 2, 3], [4, 5, 6]])
>>> print(M[:, 1]) #Sélection de la colonne 1
[2. 5.]
>>> print(M[1, :]) #Sélection de La Ligne 1
[4. 5. 6.]
Création d'un vecteur nul ou d'une matrice nulle :
>>> vec = np.zeros(5)
>>> print(vec)
[0. 0. 0. 0. 0.]
>>> mat = np.zeros((3,2))
>>> print(mat)
[[0. 0.]
    [0. 0.]
    [0. 0.]]

Pas de description pour le moment