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 quatre parties (pages 2 à 12)
et d'une annexe (page 13).
Modélisation de la fuite de matière d'un réservoir rempli de dioxyde de carbone gazeux
Présentation générale
Ce sujet porte sur l'étude théorique et numérique d'une fuite de matière au sein d'une cuve contenant du dioxyde de carbone ( ) gazeux. Il est constitué de quatre parties indépendantes.
Quelques précisions concernant les notations utilisées
Symbole
Nom
Unité
Capacité thermique molaire à pression constante
Capacité thermique massique à pression constante
Débit massique
Énergie cinétique massique
Enthalpie
J
Enthalpie massique
M
Masse molaire
Masse
kg
Pression
Pa
Puissance thermique
Constante des gaz parfaits
Section de fuite
Température
K
Température critique
K
Énergie interne
J
Énergie interne massique
Volume
Vitesse des courants de matière
Puissance utile
On prendra garde à bien distinguer les grandeurs molaires des grandeurs massiques. Certaines de ces grandeurs peuvent être évaluées en entrée ou en sortie du système, ce que l'on identifie par un indice en entrée ou en sortie.
Partie I - Modélisation de la fuite d'un réservoir : mise en équation
Généralités sur les bilans de matière et d'énergie en système ouvert
On s'intéresse au système ouvert décrit par la figure 1. Ce système possède une entrée et une sortie de matière où la température , la pression , la vitesse , le débit massique et l'enthalpie massique sont définis. Le système échange algébriquement, avec le milieu extérieur, la puissance thermique et la puissance utile . Les débits massiques et sont positifs. Il n'y a pas de travaux dérivant d'une énergie potentielle.
Figure 1 - Représentation schématique d'un système ouvert
Q1. Rappeler l'unité des grandeurs et mentionnées sur la figure 1 .
Q2. Par une méthode de votre choix (issue de la thermodynamique ou de la mécanique des fluides ou autres), établir l'équation locale de conservation de la matière :
Q3. À l'aide d'un bilan énergétique, établir l'expression du premier principe de la thermodynamique en régime stationnaire pour le système ouvert représenté sur la figure . On mettra le résultat sous la forme :
Donner la relation liant et et expliciter en fonction des données.
On admet dans la suite l'écriture du premier principe en système ouvert, étendue aux systèmes en régime transitoire :
où désigne la dérivée de l'énergie interne du système étudié par rapport au temps.
Q4. Proposer une interprétation qualitative du bilan d'énergie traduit par l'équation (3).
Écriture d'un modèle décrivant la fuite d'un réservoir adiabatique contenant du
On s'intéresse à présent à un réservoir contenant un gaz supposé parfait. Ce réservoir indéformable (donc de volume constant) est le siège d'une fuite vers le milieu environnant à la température et à la pression supposées constantes dans tout le problème. Il n'est pas agité mécaniquement. Toutefois, les propriétés du gaz dans le réservoir sont supposées uniformes à chaque instant. Ce réservoir est représenté sur la figure 2.
Réservoir adiabatique
Figure 2 - Réservoir adiabatique renfermant du gaz et sujet à une fuite de gaz vers le milieu environnant
Q5. On suppose que les grandeurs intensives du gaz dans le réservoir sont uniformes et que celles du gaz sortant sont identiques à celles du réservoir. On suppose négligeable l'énergie cinétique massique de la matière quittant le système. On s'intéresse au système {volume contenant le gaz à et dans le réservoir, paroi non comprise} représenté par des pointillés sur la figure 2. Justifier que l'application du bilan de matière et du premier principe (équations (1) et (3)) au système en pointillés, décrit par la figure 2, permet d'obtenir le système d'équations :
Q6. Le modèle gaz parfait
a) Dans quelle situation limite un gaz réel s'identifie-t-il exactement à un gaz parfait?
b) Donner la valeur du rapport pour un gaz parfait monoatomique.
c) On observe expérimentalement que pour le gaz parfait, le rapport dépend de la température. Donner un argument physique expliquant pourquoi.
d) On note l'énergie interne massique du gaz parfait, le nombre de moles de gaz, sa masse et sa masse molaire. Justifier la relation et en déduire l'équation :
dans laquelle .
Q7. À partir de la relation liant l'énergie interne massique , l'énergie interne et la masse du système étudié, montrer que le système d'équations (4) se ramène à l'équation :
Déduire alors de l'équation (5) la relation :
On cherche à présent à estimer le débit de gaz quittant le réservoir. Pour ce faire, on s'intéresse à la zone de l'espace dans laquelle se produit la fuite.
Figure 3 - Fuite de gazeux à travers l'orifice dans la paroi du réservoir
On considère le système {gaz dans la paroi du réservoir} (figure 3) et on suppose que :
l'écoulement de gaz à travers l'orifice est adiabatique et stationnaire;
la vitesse du gaz en entrée du système est nulle, elle est notée en sortie;
la température et la pression du gaz en entrée sont notées et (ce sont celles du gaz à l'intérieur du réservoir); en sortie, elles sont notées et .
Q8. Montrer que le débit massique de fluide à travers la section de l'orifice est donné par :
où désigne la section de passage du fluide à travers l'orifice.
Q9. On s'intéresse au système {gaz contenu dans la paroi du réservoir}. Justifier que l'équation (2) s'écrit alors et en déduire que la vitesse de sortie du a pour expression :
Q10. Méthode de calcul de
a) L'écoulement de fuite du gaz est supposé isentropique. Expliquer comment procéder expérimentalement pour rendre un écoulement pratiquement isentropique.
b) L'isentropicité permet d'obtenir l'équation admise .
En utilisant l'équation d'état des gaz parfaits, en déduire que est solution de l'équation :
Partie II - Modélisation de la fuite d'un réservoir : traitement numérique
On suppose que le code suivant (figure 4) est écrit en préambule de toute réponse s'appuyant sur l'écriture d'un code Python. Il est inutile de le recopier. Toutes les variables définies sont globales et accessibles dans toutes les fonctions, sans avoir à être passées en argument.
from math import log, sqrt # logarithme népérien, racine carrée
# constantes générales
M = 44.01e-3 # Masse molaire du CO2 (kg/mol)
Pext = 1.013e5 # Pression extérieure (Pa)
R = 8.314 # Constante des gaz parfaits (J/K/mol)
S = 1.000e-4 # Section de l'orifice de fuite (m^2)
Text = 293.0 # Température extérieure (K)
V = 1.000 # Volume de l'enceinte (m^3)
K = S * Pext * sqrt(2 * M / R) # constante présente dans les équations du
~ modèle
# constantes pour le modèle A de f(T)
A1 = 8.303
A2 = -2810
A3 = 485.6
# initialisation
m0 = 11.00 # Masse initiale du CO2 dans l'enceinte (kg)
T0 = 473.2 # Température initiale du CO2 dans l'enceinte (K)
Figure 4 - Préambule 1 Python
On s'intéresse ici à la fuite du gaz dans le réservoir et plus précisément à la température et la masse du gaz en sortie. Pour cela, on dispose des équations suivantes issues du modèle précédent :
et
On associe à ce modèle la fonction qui suit la loi du modèle :
Pour déterminer les paramètres du gaz en sortie de l'enceinte, il nous faut d'abord trouver la température de sortie , ce que nous allons faire grâce à l'équation (11), en 4 étapes:
définir la fonction ;
calculer l'intégrale par la méthode des rectangles;
définir la fonction ;
résoudre l'équation par la méthode de Newton pour obtenir .
Q11. Écrire le code Python de la fonction associée à l'équation (13), qui prend en argument la température T et renvoie la valeur à cette température.
Q12. On souhaite déterminer numériquement l'expression en utilisant la méthode des
rectangles sur un ensemble de sous-intervalles. rectangles sur un ensemble de sous-intervalles.
a) À l'aide d'une représentation graphique, justifier que l'expression correspond à l'aire d'un des rectangles dont un coin est commun à la courbe représentative de la fonction . Donner la valeur de pour un calcul sur 100 sous-intervalles.
b) En déduire le code de la fonction Python integ1(T1, T2) qui prend en argument 2 températures T1 et T2 correspondant aux bornes de l'intervalle d'intégration et renvoie la valeur numérique de l'intégrale de calculée par la méthode des rectangles, sur un ensemble de 100 sous-intervalles.
Q13. Donner le code Python de la fonction qui prend en argument les températures , Ts et la masse et renvoie la valeur de la fonction définie par l'équation (11). On pourra utiliser toutes les fonctions déjà définies.
Q14. Enfin, pour déterminer la valeur numérique de , on va résoudre l'équation (11) par la méthode de Newton. Les variables et sont constantes pour l'étude de la fonction , qui se comporte donc comme une fonction d'une seule variable, .
Pour implémenter la méthode de Newton, on utilise la suite , fabriquée à partir de la fonction et de sa dérivée , dont on admet qu'elle converge vers un zéro de la fonction qui est la valeur de recherchée.
a) À l'aide d'une représentation graphique la plus complète possible, illustrer quelques étapes du principe de convergence de la suite vers un zéro de la fonction .
b) La fonction chercheTs(T, m) partiellement fournie ci-dessous renvoie, pour des valeurs connues des variables T et m , la valeur correspondante de Ts obtenue par résolution de l'équation (11) selon la méthode de Newton.
def chercheTs(T, m):
"Résolution de l'équation g(T, Ts, m) = 0 par la méthode de
- Newton"
Ts = 300.0
[instruction1] # À modifier
while residu > 1e-10:
gn = [instruction2] # À modifier
gpn = f(Ts) / Ts
Tsold = Ts
Ts = [instruction3] # À modifier
residu = abs(Ts - Tsold)
return Ts
Indiquer par quelles instructions il convient de remplacer les séquences [instruction1], [instruction2] et [instruction3] présentes dans le code ci-dessus.
Ensuite, pour résoudre le système d'équations (12), il faut:
calculer l'intégrale qui intervient dans l'une d'elles;
déterminer les solutions des 2 équations différentielles par la méthode d'Euler.
Q15.
a) Déterminer l'expression littérale de .
b) Donner le code de la fonction integ2(T1, T2) retournant la valeur de en fonction des arguments d'entrée T1, T2 et des variables globales A1, A2 et A3.
Pour résoudre une équation différentielle mise sous la forme , on utilise le schéma d'Euler suivant :
Ce schéma est implémenté au sein de l'algorithme 1 présenté ci-dessous, que l'on souhaite appliquer pour résoudre le système d'équations (12) entre les dates et avec un pas de temps de :
- Initialisation des variables dt, N, T, m et P
- Début d'une boucle avec test d'un ou plusieurs critères d'arrêt
- calcul de Ts
- calcul de mp et Tp par le schéma d'Euler
- actualisation des variables
- Renvoie des grandeurs attendues
Algorithme 1 - Résolution du système d'équations (12) par la méthode d'Euler
Q16. Préciser la signification et les valeurs initiales des variables présentes dans la phase d'initialisation de l'algorithme 1 (on fera référence au préambule Python).
Q17. Préciser la signification des variables mp et Tp présentes dans la boucle de l'algorithme 1. Donner la syntaxe Python du calcul de mp et Tp respectant le schéma d'Euler proposé. On pourra faire appel à toute fonction précédemment définie, ainsi qu'au préambule Python.
Q18. Écrire le code Python de la fonction Euler() traduisant l'algorithme 1 proposé ci-dessus. On pourra faire appel à toute fonction précédemment définie.
Q19. Intuitivement, quand la fuite s'arrêtera-t-elle en pratique?
Partie III - Développement de corrélations pour la capacité thermique à pression constante molaire du dioxyde de carbone
On s'intéresse maintenant au modèle pour la fonction , dont on suppose qu'elle suit une loi polynomiale de la forme suivante :
dans laquelle est la température critique connue du . Pour déterminer les coefficients réels de ce polynôme de degré , on dispose de 6 données expérimentales de la valeur de en fonction de la température en kelvin (voir tableau 1).
Tableau 1 - Série de 6 données expérimentales pour le gazeux
Préambule
Q20. Les valeurs des capacités thermiques données dans le tableau 1 ont été mesurées par calorimétrie. Expliquer, à l'aide d'un schéma, comment réaliser expérimentalement cette mesure pour un liquide ou un gaz. Préciser comment la valeur de la capacité thermique est déduite de la mesure.
Q21. Montrer, par une analyse dimensionnelle, que le rapport est sans dimension.
Développement du modèle polynomial
On souhaite déterminer les coefficients d'un polynôme de degré donné par l'équation (15) dont la courbe représentative passe exactement par les 6 points expérimentaux.
Q22. Écrire l'expression littérale de l'équation que doivent vérifier les coefficients (pour ) du polynôme pour passer par le point expérimental ( ).
Q23. En déduire que l'on peut rassembler les données expérimentales sous la forme du produit matriciel :
Y = M B
où Y est le vecteur des mesures expérimentales de celui des coefficients (pour ) du polynôme et M une matrice carrée dont les coefficients ne dépendent que des valeurs expérimentales (pour ).
Donner l'expression d'une des lignes de la matrice M en fonction de et pour .
Q24. Quelle opération mathématique faut-il effectuer sur la matrice M pour accéder au vecteur ?
On suppose que le code suivant (figure 5) est écrit en préambule de toute réponse s'appuyant sur l'écriture d'un code Python. Il est inutile de le recopier. Toutes les variables définies sont globales et accessibles dans toutes les fonctions, sans avoir à être passées en argument.
import matplotlib.pyplot as plt # tracés
import numpy as np # travail matriciel
# Données expérimentales
T = np.array([100.0, 500.0, ...]) # température (K)
CpmR = np.array([3.513, 5.367, ...]) # Cpm/R
# modèle B
Tc = 304.2 # Température critique du CO2 (K)
Y = np.array(...) # Vecteur Y du modèle B
M = np.array(...) # Matrice M du modèle B
Figure 5 - Préambule 2 Python
Q25. On suppose que la matrice et le vecteur ont été entièrement saisis sous forme de tableaux numpy (voir figure 5). Donner le code Python permettant d'en déduire le vecteur B contenant les coefficients à l'aide d'une fonction du module numpy.
Les points expérimentaux ainsi que les deux courbes associées aux modèles et ont été représentés sur la figure 6.
Figure 6 - Confrontation des points expérimentaux et des deux modèles
Q26. Donner le code permettant de représenter le nuage des points expérimentaux ou le modèle ou le modèle , en précisant quel est le tracé choisi.
Q27. Commenter le graphe de la figure 6. Finalement, parmi les deux modèles proposés, lequel retiendriez-vous et pourquoi?
Partie IV - Traitement informatique des données expérimentales
On suppose que le code suivant (figure 7) est écrit en préambule de toute réponse s'appuyant sur l'écriture d'un code Python. Il est inutile de le recopier.
def tri(L):
"Trie la liste L"
n = len(L)
if n <= 1:
return L
a = L[-1]
L1 = []
L2 = []
for i in range(n - 1):
if L[i] <= a:
L1.append(L[i])
else:
L2.append(L[i])
return tri(L1) + ... + ... # À compléter
Figure 7 - Préambule 3 Python
Les données expérimentales doivent éventuellement être triées. Pour cela, on utilise la fonction tri (L) qui prend en argument la liste à trier (voir figure 7).
Q28. Préciser, sans justification, s'il s'agit du tri rapide, du tri par fusion ou du tri par insertion. Expliquer pourquoi ce tri est récursif. Donner sa complexité temporelle dans le meilleur cas.
Q29. Les variables a, L1 et L2 ont une signification bien précise que l'on ne retrouve pas dans leur nom. Donner le nom usuel de la variable a et expliquer ce qui différencie les listes L1 et L2. Proposer des noms plus pertinents pour ces 3 variables.
Q30. Compléter la dernière ligne de la fonction tri.
Après leur acquisition, les résultats expérimentaux sont stockés dans une base de données. Les molécules y sont identifiées par une clé primaire appelée idcas.
On s'intéresse aux 2 tables suivantes contenues dans la base de données :
la table general contenant des informations diverses sur les molécules;
la table capa contenant les données expérimentales de mesure du rapport en fonction de la température pour différentes molécules.
idcas
nom
symbole
Tc
Pc
7727-37-9
diazote
N2
126.19
33.978
124-38-9
dioxyde de carbone
C02
304.18
73.825
Table 1 - Extrait de la table general
idcas
CpmR
T
5.367
500.0
7.475
3000.0
3.499
500.0
3.513
100.0
Table 2 - Extrait de la table capa
Q31. Donner le code SQL permettant d'afficher le nom et le symbole de toutes les molécules.
Q32. Donner le code SQL permettant d'afficher toutes les informations de la table capa pour le dioxyde de carbone (repéré par son idcas).
Q33. Expliquer ce que renvoie la requête suivante :
SELECT g.symbole, count(*) AS nb
FROM general AS g
JOIN capa AS c ON g.idcas = c.idcas
GROUP BY c.idcas
Q34. Donner le code SQL permettant d'afficher, pour chaque molécule, son identifiant et la valeur moyenne de pour les températures inférieures ou égales à .
ANNEXE
Bibliothèque numpy de Python
La bibliothèque numpy est importée de la façon suivante :
>>> import numpy as np
La création d'un tableau numpy à 2 lignes et 3 colonnes, appelé M , est réalisée ainsi :
SELECT ... - sélection d'attributs
FROM ... - choix de tables
JOIN ... ON ... - jointure entre tables
WHERE ... - condition
GROUP BY ... - groupements
HAVING ... - condition sur les agrégations
ORDER BY ... - classement
AVG(...), MIN(...), MAX(...), SUM(...), COUNT(...) - commandes d'agrégation
AS - renommage
CCINP Modélisation TPC 2021 - Version Web LaTeX | WikiPrépa | WikiPrépa