Résolution de l'équation de la chaleur

Soyez le premier à donner votre avis sur cette source.

Vue 23 206 fois - Téléchargée 2 430 fois

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

Ajouter un commentaire

Commentaires

Messages postés
47
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
7 janvier 2012

Je suis moi même matheux, les intégrales triples sont présentes uniquement parce que l'auteur a voulu redémontrer l'équation de la chaleur dans le cas général. Après on passe en 2D. C'est en raisonnant comme ça qu'on simplifie beaucoup de problèmes physiques, on simplifie en aval et non en amont, au risque de faire de terribles erreurs de raisonnement.
Messages postés
1
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
25 juillet 2010

Je regrette que le programme ne mène qu'au résultat d'un régime transitoire, qui n'a pas beaucoup d'intérêt sur le plan pratique. Il aurait été préférable de montrer ce qui se passe en régime permanent.
Il aurait aussi été intéressant de pouvoir placer un milieu de conductivité différente, à la place d'un régime de températures sinusoïdal ne présentant pas beaucoup d'intérêt.
Beaucoup de langage ésotérique... c'est à dire incompréhensible pour les non initiés, mais aussi, curieusement, pour les initiés (je suis ingénieur thermicien).
Des intégrales triples dans un espace à 2 dimensions !!! (les matheux comprendront), pour finalement aboutir à une équation du... premier degré ! Je pense qu'elles sont surtout là pour faire joli.
Sur le plan VB proprement dit, la feuille principale du programme ne correspond pas au programme décrit (il manque un ou plusieurs boutons).
Cela dit, la description du programme semble très correcte et très "propre". Visual basic 2008 signale tout de même 24 avertissements.
Je ne mettrais pas de note, mais simplement la mention "à revoir".
Messages postés
96
Date d'inscription
samedi 21 octobre 2006
Statut
Membre
Dernière intervention
25 avril 2009

Mais de rien !!

Je n'ai pas eu le temps (le courage ?) de faire un grapheur, pour afficher la courbe en .NET au lieu de Mathematica.

Je n'ai pas fait non plus de PDF sur la méthode des différences finies et détaillant le composant SimulationDiffusionThermique.
Mais je pense que c'est suffisamment commenté pour pouvoir s'en sortir...
Messages postés
1
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
20 mars 2009

tres interessant programme
merci
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Salut,

On arrive à la même conclusion, à savoir que le plus difficile c'est de définir le ou les objets avec les conditions initiales et limites, dans une interface facile d'emploi.
Le calcul des différences finies n'étant pas très difficile ensuite.
L'autre point épineux, c'est la façon dont on peut récupérer les résultats utiles(et non pas toutes), de manière simple également.

Amicalement,
Us.
Afficher les 10 commentaires

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.