Résolution de l'équation de la chaleur

Description

C'est un programme pour résoudre l'équation de la chaleur en 2D avec la méthode des différences finies.
On discrétise le temps et l'espace pour utiliser une résolution numérique.

Comment utiliser le programme ?
Ouvrir Paint et créer une image de 50 pixels par 50 pixels

Placer les conditions aux limites de manière graphique.
Voici le code de couleurs :
- Nuance de rouge = température allant de Tmin à Tmax
par exemple, Tmin=0°C et Tmax=100°C
donc le NOIR correspond à 0°C, le ROUGE à 100°C et la couleur personnalisée R=128 V=0 B=0 à 50°C
- Jaune = température fixée, mais qui change au cours du temps
- Bleu pur = adiabatique (c'est à dire parfaitement isolant)
- Blanc = pas de condition aux limites. La chaleur se propage.

Enregistrer l'image au format bmp

Créer une image de même taille contenant les conditions initiales, avec des nuances de rouge (idem ci dessus..)
Enregistrer l'image.

Dans le programme, charger les conditions initiales et les conditions aux limites.
Définir les paramètres physiques : pas spatial = largeur d'un pixel (en mètres), pas temporel = temps entre 2 itérations (en secondes) et K = diffusivité (dépend du matériau)
Modifier au besoin les valeurs de Tmin et Tmax (qui correspondent au noir et au rouge dans les fichiers bmp)
Lancer le calcul

Si c'est pas clair, il y a 3 exemples :

1er exemple :
Plaque rectangulaire dont la périphérie est maintenue à 0°C et le centre est constamment chauffé à 100°C. La température initiale est 0°C partout.
Lancez la simulation. On voit la chaleur se propager du centre vers l'extérieur.

2ème exemple :
Plaque rectangulaire, dont les bords sont isolés.
Au début, une partie est chaude et l'autre est froide. La température de la plaque va s'uniformiser, mais aucune énergie n'est échangée avec l'extérieur.

3ème exemple :
Une plaque rectangulaire, les bords sont isolés, mais le bord gauche a une température imposée qui varie dans le temps. Cela permet de simuler l'"effet de cave", c'est à dire la propagation de la chaleur dans le sol au cours des saisons. C'est une onde évanescente. A une certaine profondeur, on est en opposition de phase par rapport à la température du sol...

Vous pouvez afficher les courbes des résultats, j'utilise l'excellent composant ZedGraph.
On peut visualiser la température d'un point donné en fonction du temps, ou une coupe à un instant donné.
On peut également animer l'affichage, pour voir l'évolution des températures de cette coupe.
Bref, essayez....

EDIT :
J'ai ajouté un assistant pour générer les bitmaps. La température initiale est nécessairement uniforme et les conditions aux limites sont obligatoirement sur les bords, mais c'est plus rapide et plus facile quand on veut tester le programme.

Attention : ne créez pas des images trop grosses (100 pixels max) et ne calculez pas trop d'itérations (5000 pas maxi) sinon vous risquez de saturer la RAM : toutes les itérations intermédiaires sont conservées en mémoire !

Conclusion :


Le programme est maintenant achevé. Il est entièrement basé sur la classe SimulationDiffusionThermique2D. C'est cette classe qui permet de résoudre l'équation de la chaleur.

Le PDF joint explique le principe de la méthode des différences finies, et contient toutes les indications pour utiliser la classe dans un autre programme. Il fournit également des exemples.


Ce programme montre comment utiliser des classes pour faire un programme bien découpé.
J'ai créé la classe SimulationDiffusionThermique entièrement autonome, et permet l'encapsulation complète des méthodes de résolution. Le reste du programme ne fait qu'utiliser cette classe, sans se soucier du code qu'elle contient et de son fonctionnement.
Le programme est ainsi bien plus facile à faire évoluer.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.