- Méthode Physique de résolution
- Programme Python
On étudie l’influence des matériaux à changement de phase (MCP) sur l’isolation des batiments.
Illustration du problème. On pose un axe x horizontal, orienté de la gauche vers la droite
- Les transferts thermiques sont supposés unidimensionnels
- La température extérieure est variable dans le temps, elle est connue
- La température de la pièce ne varie pas au cours du temps, elle est connue
- Les échanges aux interfaces air/solide sont gérés par la loi de Newton
- Le mur est composite et peut comporter plusieurs MCP
- Les propriétés thermodynamiques du MCP sont supposées constantes dans sa phase solide ou dans sa phase liquide (la conductivité, la capacité calorifique volumique, la masse volumique ne dépendent que de l’état solide/liquide du MCP et non de sa température, pression, etc…)
Symbole | Signification | Unité |
---|---|---|
Enthalpie volumique | ||
Enthalpie sensible volumique | ||
Température | ||
Conductivité thermique | ||
Masse volumique | ||
Capacité calorifique massique | ||
Chaleur latente massique | ||
fraction fondue, liquide | SU | |
|
Coefficients de convection |
On scinde le transfert de chaleur en trois parties:
- à l’intérieur du MCP
- à l’interface Solide/MCP
- à l’interface Air/MCP
Un bilan d’énergie sur un volume de contrôle du mur permet d’écrire:
En décomposant l’enthalpie volumique totale
$f$ est la fraction liquide (fondue)
L’enthalpie sensible volumique a pour expression:
$k$ correspond à la phase du MCP$T_f$ correspond à la température de fusion (et solidification) du MCP- l’enthalpie étant définie à une constante près, ce choix de borne inférieur est arbitraire mais permet de simplifer les équations
En combinant (1), (2) et (3) on obtient:
$\alpha = \frac{\lambda}{\rho\cdot c}$
Que l’on discrétise selon:
Que l’on écrit (pour résoudre matriciellement) sous la forme:
$a_{i-1}=a_{i+1}=-\alpha R$ $Q=h_{i}^{t}+\rho_{L} L \cdot\left(f_{i}^{t}-f_{i}^{t+1}\right)$
- Les solides étant aussi des matériaux à changement de phase (simplements utilisés en phase constante) il est alors logique de s’intéresser à une interface généralle MCP/MCP
En traduisant la continuité du flux de chaleur et la continuité de la température à l’interface, on obtient:
Que l’on discrétise en:
$\overline{T_{1}}(N+1)$ et$\overline{T_{2}}(0)$ sont les noeuds fantômes (seul$\overline{T_{1}}(N+1)$ est représenté sur l’illustration)- Les noeuds fantômes permettent de considérer en
$N$ (resp. en$1$ ) que le$\text{MCP}_1$ (resp.$\text{MCP}_2$ ) est entouré de noeuds constitués uniquement de$\text{MCP}_1$ (resp.$\text{MCP}_2$ ) et ainsi pouvoir discrétiser les conditions sur les flux de chaleur et les conditions sur les températures (ces conditions nécessitent des propriétés thermodynamiques uniformes).- Ces noeuds n’existant pas, on les élimine des équations par la suite.
On résout pour les noeuds fantômes:
Que l’on notera (pour simplifier):
$\beta_{j / \mu}=\frac{\lambda_{\mu}-\lambda_{j}}{\lambda_{\mu}+\lambda_{j}}$
On fait apparaître l’enthalpie sensible volumique des noeuds fantômes:
- On s’est servi du fait que
$h(T)=\rho c \cdot (T-T_{f_m})$ où$T_{f_m}$ correspond à la température de fusion du matériau (noté$m$ ) du noeud
Que l’on notera (pour simplifier):
$p_{j / \mu}=\frac{\rho_{j} c_{j}}{\rho_{\mu} c_{\mu}}$
- Ces formules ne sont valables que si le mur contient un seul MCP « réel » (hors les solides constants comme le béton) et où pour tout matériau
$m$ présent dans le mur on a défini$h_m(T)$ comme$h_m(T)=\rho c \cdot (T-T_{f_{ref}})$ $T_{f_{ref}}$ correspondant à la température de fusion du seul MCP « réel » du mur.
On notera qu’en créeant une séparation artificielle sur un même matériau (i.e. en considérant les paramètres thermodynamiques 1 et 2 égaux dans les équations précédentes), on a cohérence des enthalpies fantômes:
On reprend l’équation (5) traduisant les transferts, et l’on réinjecte les noeuds fantômes:
$\gamma_{j}=\alpha_{j} R$
Soit en utilisant la forme de (6):
$a_{i-1}=-\gamma_{1}$ $a_{i}=1+\gamma_{1}\left(2-\beta_{2 / 1}\right)$ $a_{i+1}=-\gamma_{1} \cdot p_{1 / 2} \cdot\left(1-\beta_{2 / 1}\right)$ $Q = h_{i}^{t}+\gamma_{1}\cdot\left(1 - \beta_{2 / 1}\right)\cdot \left(\Delta T_{f}\right)_ {1}^{2} \cdot p_{1} c_{1}+\eta \cdot\left(f_i^{t}-f_i^{t+1}\right)$
Soit en utilisant la forme de (6):
$a_{i-1}=-\gamma_{2} \cdot p_{2 / 1} \cdot\left(1-\beta_{1 / 2}\right)$ $a_{i}=1+\gamma_{2}\left(2-\beta_{1 / 2}\right)$ $a_{i+1}=-\gamma_{2}$ $Q = h_{i}^{t}+\gamma_{2}\cdot\left(1 - \beta_{1 / 2}\right)\cdot \left(\Delta T_{f}\right)_ {2}^{1} \cdot p_{2} c_{2}+\eta \cdot \left(f_{i}^{t} - f_{i}^{t+1}\right)$
- Il y a ici deux interfaces différentes Air/MCP:
- Extérieur/Mur: La température exterieure est fixée
- Mur/Intérieur: La température de la pièce est inconnue
- Ces deux interfaces suivront chacune une loi de Newton de paramètres respectifs
$h_{ext}$ et$h_{int}$
En exprimant la continuité du flux de chaleur à l’interface (
$T(x)$ correspond exclusivement à la température dans le MCP
et en se servant de la méthode des noeuds fantômes (en considérant une cellule imaginaire de MCP à gauche de l’interface), tout en discrétisant, on obtient:
- où
$T_{interface}$ est la température à la surface du mur, soit la température entre le$0^{eme}$ (fantôme) et$1^{er}$ noeud: on considère ici la moyenne des deux noeuds comme étant la température de l’interface.
En isolant
Que l’on notera (pour simplifier):
$\nu = \frac{2 \lambda-h_{\text {ext }} d x}{2 \lambda+h_{e x t} d x}$
On fait ainsi apparaître l’enthalpie du noeud fantôme:
$T_{f}$ est la température de fusion du MCP- On rappelle que selon (3):
$h(T) = \rho c \cdot(T-T_{f})$
En réinjectant dans l’équation (5) traduisant les transferts:
Que l’on met sous la forme (pour résoudre matriciellement):
Soit en utilisant la forme de (6):
$a_{i-1}=0$ $a_{i}=1+\gamma \cdot(2-\nu)$ $a_{i+1}=-\gamma$ $Q = h_{1}^{t} + [\gamma \cdot (1 - \nu) \cdot \rho c \cdot (T_{ext} - T_{f})] + \eta \cdot \left(f^{t}-f^{t+1}\right)$ $\nu = \frac{2 \lambda-h_{\text {ext }} d x}{2 \lambda+h_{e x t} d x}$ En rappelant:$\gamma = \alpha R$ et$\eta = \rho_{L}L$
- On fixe la température intérieure à
$T_{room}$ - Cette température est valable loin du mur
En utilisant la même méthode que celle utilisée pour parvenir à (Int.1), on obtient en isolant
$\varphi=\frac{2\lambda-h_{\text {int}} \cdot dx}{2\lambda+h_{\text {int}}\cdot dx}$
En faisant apparaître l’enthalpie volumique du mur:
$\rho$ et$c$ sont les paramètres thermodynamiques du mur.$T_f$ est la température de fusion du mur
Finalement, en réinjectant dans l’équation (5), traduisant les transferts puis en y mettant sous la forme de (6) :
$a_{i-1}=-\gamma$ $a_{i}=1+\gamma \cdot(2-\varphi)$ $a_{i+1}=0$ $Q= h_i^{t} +\gamma \cdot(1-\varphi) \cdot \rho c \cdot \left(T_{room} - T_f\right)+\rho_{L} L \cdot\left(f^{t}-f^{t+1}\right)$
Le schéma numérique utilisé est ici implicite. Sa mise sous forme matricelle se fait en considérant un vecteur contenant les enthalpies volumiques de chaque noeud (de la gauche du mur jusqu’à sa droite) au temps
De même pour les fractions liquides:
$k$ est défini en détail ici
Pour passer à
$a_{i-1}^{j}$ ,$a_{i}^{j}$ et$a_{i+1}^{j}$ correspondent aux coefficients trouvés dans les parties précédentes pour un noeud$j$ - Les lignes correspondant à un noeud « solide constant » dans le vecteur des différences de fractions liquides seront nulles: étant donné que le matériau ne change pas de phase.
$E$ correspond aux termes supplémentaires relatifs aux bords/interfaces
Il convient donc de résoudre le système:
ou:
$B = H^{t} + \eta\cdot\left(\Delta F_k\right)_ {t+dt}^{t} + E$ $A$ est une matrice tridiagonale- Les solutions de ce système peuvent être obtenues grâce à l’algorithme de Thomas
- Le nouveau terme de fraction liquide étant aussi une inconnue, on ne peut résoudre ce système « d’un seul coup »: à chaque pas de temps, il conviendra donc de trouver le nouveau vecteur fraction liquide
En reprenant l’équation « de base », pour un pas de temps quelconque fixé (on n’affiche pas
$a_W \equiv a_{i-1}$ $a_P \equiv a_{i}$ $a_E \equiv a_{i+1}$
A chaque itération (dans un seul pas de temps), on applique un solveur TDMA à cette équation (où
Donc, après la
Si un changement de phase se passe au
On a donc :
L’équation étant utilisée pour la
Il vient alors :
Puis :
Que l’on peut modifier en :
Où
En pratique, après la
- Cette correction a deux avantages :
- Il n’y a pas besoin de vérifier où et quand appliquer la correction
- Il y a une totale et correcte prise en charge des situations quand le front passe d’un nœud à un autre.
- Le secret de cette méthode réside dans la mise à jour de la fraction liquide depuis le vecteur d’enthalpie sensible : (R.5) remplit ce rôle.
Ici, on introduit une modification qui permettra des calculs plus rapides.
En effet, on n’utilisait pas une information potentiellement importante : si la fraction liquide au nœud
Qui ne nécessite pas de coefficient de relaxation. Le nouveau critère de convergence sera :
${RES}_ P = a_Wh_w + a_P h_P + a_Eh_E − h_P^{old} −\rho Lf^{old} +\rho\ Lf_k$
- numpy
- pathlib
- matplotlib
- math
Cette partie se passe exclusivement dans le dossier Config
(et Weather_Data
si la température extérieure varie selon des données pré-enregistrées)
- Ajouter des matériaux dans le fichier
materials_config.csv
(ces matériaux n'ont pas besoin d'être utilisés par la suite) - Configurer le mur dans le fichier
wall_config.csv
:
- chaque ligne correspond à une épaisseur de matériau (la dernière ligne correspondra à la couche la plus à droite du mur)
- le nom du matériau d'une couche doit correspondre à un matériau dans
materials_config.csv
- l'épaisseur (en
$m$ ) doit être indiquée sur la colonne de droite pour chaque épaisseur de matériau
- Configurer certaines données de l'expérience dans le fichier
experiment_config.ini
(se référer aux commentaires présents) - Modifier la loi de température extérieure (sinon utiliser température pré-enregistrée) dans
temperature_config.py
, e.g. si la température extérieure doit être constante:
def update_outside_temperature(t: float) -> float:
pass
Dans le fichier main.py
, modifier l'appel de Experiment de sorte à ce qu'il n'y ait que les 3 arguments suivants (contrairement au cas d'une température pré-enregistrée):
E = Experiment(str((current_path / 'Config' / 'experiment_config.ini').resolve()),
str((current_path / 'Config' / 'wall_config.csv').resolve()),
str((current_path / 'Config' / 'materials_config.csv').resolve()))
- Pour utiliser des données de température externes: Utiliser un fichier CSV sous la forme:
datetime,temperature
YYYY-MM-DDTHH:MM:SS,14.1
YYYY-MM-DDTHH:MM:SS,14.5
YYYY-MM-DDTHH:MM:SS,15.0
Et le placer dans le dossier Weather_Data
Dans le fichier main.py
, modifier l'appel de Experiment:
E = Experiment(str((current_path / 'Config' / 'experiment_config.ini').resolve()),
str((current_path / 'Config' / 'wall_config.csv').resolve()),
str((current_path / 'Config' / 'materials_config.csv').resolve()),
str((current_path / 'Weather_Data' / 'NOM_DU_FICHIER_DATA.csv').resolve()))
Lancer main.py
, une barre de chargement indiquant l'avancée du calcul devrait apparaître dans la console. Une fois terminé, une fenêtre matplotlib affiche les résultats de l'expérience.
Pour supprimer le darkmode, accéder à Plot\standard_plot.py
puis supprimer la première ligne de la première fonction:
def plot_simulation(simulation: Simulation):
plt.style.use('dark_background')
La fenêtre matplotlib montre 3 graphes:
-
Température à l'extérieure et Température sur le dernier noeud du mur (en
$°C$ ) en fonction du temps (en secondes)
-
Flux surfacique de chaleur reçu algébriquement par la pièce (en
$W.m^{-2}$ ) par le mur en fonction du temps: un flux positif signifie qu'une climatisation a été utilisée pour maintenir la pièce à la même température, un flux négatif signifie qu'un radiateur a été utilisé.
- Évolution spatiale de(s) frontière(s) solide/liquide en fonction du temps (en secondes): en ordonnée correspond la distribution des matériaux avec leurs phases.