0% ont trouvé ce document utile (0 vote)
47 vues18 pages

MNP Projet 4

Le projet vise à simuler la propagation de la chaleur dans une pièce de 3 × 3 m en utilisant l'équation de la chaleur en 2D et une méthode de discrétisation par différences finies explicites. L'implémentation en Python inclut la mise à jour de la température dans la pièce et le calcul des flux de chaleur à partir des gradients de température. Les résultats de la simulation permettent d'analyser l'évolution de la température et des flux thermiques dans la pièce.

Transféré par

kevin.bart.4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues18 pages

MNP Projet 4

Le projet vise à simuler la propagation de la chaleur dans une pièce de 3 × 3 m en utilisant l'équation de la chaleur en 2D et une méthode de discrétisation par différences finies explicites. L'implémentation en Python inclut la mise à jour de la température dans la pièce et le calcul des flux de chaleur à partir des gradients de température. Les résultats de la simulation permettent d'analyser l'évolution de la température et des flux thermiques dans la pièce.

Transféré par

kevin.bart.4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Projet 4 : Simulation numérique de l’équation de la

chaleur en 2D

Bart Kevin
University of Fribourg
January 29, 2025
Introduction au projet

▶ Objectif : Simuler la propagation de la chaleur dans une pièce de


3 × 3 m.
▶ Fenêtre ouverte à 0◦ C
▶ Radiateur à 70◦ C
▶ Équation de la chaleur en 2D :
!
∂T ∂2T ∂2T
=κ +
∂t ∂x 2 ∂y 2

▶ Méthode : Discrétisation par différences finies explicites.


Configuration de la pièce

m2
• kappa = 2 · 10−5 s
• Lx = 3.0 m
• Nx = 74
• dx = Lx /Nx (m)
• Text = 0.0 ◦ C
• Trad = 70.0 ◦ C
• tfinal = 20 ∗ 24 ∗ 3600 s

• dt = F ∗ dx 2 /kappa (s)
• Nt = int(tfinal /dt)
Discrétisation par différences finies explicites

(n)
On pose : Ti,j = T (n∆t, i∆x , j∆y ). En utilisant un développement de
Taylor, on peut écrire :

∂T (t0 , i∆x , j∆y ) T (t0 + ∆t, i∆x , j∆y ) − T (t0 , i∆x , j∆y )
= + O(∆t)
∂t ∆t
Approximations pour la dérivée temporelle

Dérivée temporelle :

∂T (t0 , i∆x , j∆y ) T (t0 + ∆t, i∆x , j∆y ) − T (t0 , i∆x , j∆y )

∂t ∆t
(n) (n+1) (n)
∂Ti,j Ti,j − Ti,j
⇔ ≈
∂t ∆t
En négligeant les termes d’ordre supérieur.
Approximations pour les dérivées spatiales

Dérivées premières :
(n) (n) (n)
∂Ti,j Ti+1,j − Ti,j
≈ ,
∂x ∆x
(n) (n) (n)
∂Ti,j Ti,j+1 − Ti,j
≈ .
∂y ∆y
Dérivées secondes :
(n) (n) (n) (n)
∂ 2 Ti,j Ti+1,j − 2Ti,j + Ti−1,j
2
≈ ,
∂x ∆x 2
(n) (n) (n) (n)
∂ 2 Ti,j Ti,j+1 − 2Ti,j + Ti,j−1
≈ .
∂y 2 ∆y 2
Substitution dans l’équation de la chaleur

Équation de la chaleur :
 
(n+1) (n) (n) (n) (n) (n) (n) (n)
Ti,j − Ti,j Ti+1,j − 2Ti,j + Ti−1,j Ti,j+1 − 2Ti,j + Ti,j−1
= κ 2
+ .
∆t ∆x ∆y 2

En réarrangeant :

(n+1) (n) ∆t  (n) (n) (n) (n) (n)



Ti,j = Ti,j + κ T i+1,j + T i−1,j + T i,j+1 + T i,j−1 − 4T i,j .
∆x 2
Résultat final

Relation discrétisée :
 
(n+1) (n) (n) (n) (n) (n) (n)
Ti,j = Ti,j + F Ti+1,j + Ti−1,j + Ti,j+1 + Ti,j−1 − 4Ti,j ,
∆t
où F = κ.
∆x 2
Cette relation est utilisée pour résoudre numériquement l’équation de la
chaleur.
Implémentation en Python : evolve_temperature

def evolve_temperature(T, kappa, dx, dt, Nt, snapshot_interval):


T_new = [Link]()
snapshots = []
steps_per_snapshot = int(snapshot_interval / dt)

for n in range(Nt):
T_old = T_new.copy()
T_new[1:-1, 1:-1] = T_old[1:-1, 1:-1] + F * (
T_old[2:, 1:-1] + T_old[:-2, 1:-1] +
T_old[1:-1, 2:] + T_old[1:-1, :-2] - 4 * T_old[1:-1, 1:-1]
)

...
Implémentation en Python : evolve_temperature

...

# Conditions de Neumann (flux nul sur les bords)


T_new[0, :] = T_new[1, :] # Bord gauche
T_new[-1, :] = T_new[-2, :] # Bord droit
T_new[:, 0] = T_new[:, 1] # Bord bas
T_new[:, -1] = T_new[:, -2] # Bord haut

T_new[5:19, 9:13] = 70.0 # Température du radiateur


T_new[31:61, 1] = 0.0 # Température de la fenêtre froide

# Enregistrement de l'instantané à intervalle régulier


if n % steps_per_snapshot == 0:
[Link](T_new.copy())

return T_new, snapshots


Résultats de la simulation
Calcul de la densité de courant de chaleur

1. Gradients de température (∇T ) :

∂T Ti+1,j − Ti−1,j ∂T Ti,j+1 − Ti,j−1


≈ , ≈
∂x 2 · ∆x ∂y 2 · ∆x

2. Densité de courant de chaleur (⃗j = −λ∇T ) :

∂T ∂T
jx = −λair · , jy = −λair ·
∂x ∂y
3. Intégration des flux :
▶ Radiateur : Fluxradiateur =
P P
jxP+ jy
▶ Fenêtre : Fluxfenêtre =
P
jx + jy
Implémentation en Python : calculate_heat_flux

def calculate_heat_flux(snapshots, dx, lambda_air, radiateur_coords, fenetre_coords):


flux_radiateur = []
flux_fenetre = []

for T in snapshots: # Parcours des instantanés

grad_Tx = (T[2:, 1:-1] - T[:-2, 1:-1]) / (2 * dx) # dT/dx


grad_Ty = (T[1:-1, 2:] - T[1:-1, :-2]) / (2 * dx) # dT/dy

# Flux thermique = -lambda_air * gradient de température


jx = -lambda_air * grad_Tx
jy = -lambda_air * grad_Ty

# --- Calcul pour le radiateur ---


x_min, x_max, y_min, y_max = radiateur_coords
flux_radiateur_t = [Link](jx[x_min:x_max, y_min:y_max]) + [Link](jy[x_min:x_max, y_min:y_max])
flux_radiateur.append(flux_radiateur_t)

# --- Calcul pour la fenêtre ---


x_min, x_max, y_min, y_max = fenetre_coords
flux_fenetre_t = [Link](jx[x_min:x_max, y_min:y_max]) + [Link](jy[x_min:x_max, y_min:y_max])
flux_fenetre.append(-flux_fenetre_t)

return flux_radiateur, flux_fenetre


Évolution temporelle des flux de chaleur
Merci pour votre attention !
Évolution de la température
Évolution de la température
Évolution de la température

Vous aimerez peut-être aussi