Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉSOLUTION DE L'ÉQUATION DE LA CHALEUR


Information sur la source

Catégorie :Maths Source .NET ( DotNet ) Classé sous : Physique, Equation différentielle, Chaleur, Diffusion, Résolution Niveau : Initié Date de création : 15/11/2008 Date de mise à jour : 27/05/2009 18:22:58 Vu / téléchargé: 5 744 / 458

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

15 novembre 2008 23:36:39 :
Suite aux commentaires rapportant des problèmes avec la DLL Mathematica, je mets une version sans l'analyse de courbes
15 novembre 2008 23:45:00 :
Suppression de la référence à la DLL
16 novembre 2008 00:12:15 :
Rajout de l'affichage des courbes (pour ceux qui possèdent Mathematica...)
17 avril 2009 16:44:15 :
Nouvelle version : plus besoin de Mathematica pour afficher les courbes
17 avril 2009 16:51:49 :
Nouvelle version : plus besoin de Mathematica pour afficher les courbes
19 avril 2009 16:58:00 :
Modification mineure du grapheur
23 mai 2009 00:36:37 :
Ajout de l'assistant et du PDF explicatif.
27 mai 2009 18:23:01 :
Mise à jour du PDF : ajout de nouveaux exemples

Commentaires et avis

signaler à un administrateur
Commentaire de us_30 le 15/11/2008 23:17:26

Bonsoir,

J'ai 3 pb sur VB2008 express... Tous en rapport avec Wolfram.NETLink... Cela fait penser au calcul math... Peut-on s'en passer ?

Amicalement,
Us.

signaler à un administrateur
Commentaire de Arnal88 le 16/11/2008 00:23:24

J'ai mis à jour la référence à la DLL.
Ca devrait marcher maintenant...
Merci de m'indiquer si c'est le cas pour vous.

Je sais bien que peu d'entre vous possèdent Mathematica, mais je veux poster mon code en entier (je ne veux pas passer mon temps à jongler entre le vrai code et la version sans l'analyse de courbes)

signaler à un administrateur
Commentaire de us_30 le 18/11/2008 17:27:37 10/10

Bonjour Arnal88,

Il reste qlq erreurs dû à la référence à Mathematica me semble-t-il, dû au fait que je ne le possède pas. Donc on ne peut pas obtenir la courbe en cloche comme présenté dans l'image ci-dessus. Mais le reste fonctionne.
L'emploi d'images pour définir les conditions initiales et limites, sont assez spéciales à utiliser, mais le résultat de la simulation est esthétiquement pas mal du tout.

Maintenant, perso, je recherche plutôt une possibilité de ressortir des valeurs; mais bon, ton programme est une bonne source d'inspiration.

Amicalement,
Us.

signaler à un administrateur
Commentaire de arkaye le 18/11/2008 21:53:59

je vx un px d'explication svp sur ce project

signaler à un administrateur
Commentaire de Arnal88 le 18/11/2008 23:14:21

Salut,

@ Arkaye :
"je vx un px d'explication svp sur ce project" ?? Faudra être un peu plus précis....

De toute façon j'ajouterai un PDF :
- qui explique la méthode de résolution par les éléments finis
- qui montre comment utiliser le programme
- et qui fournit les explications pour utiliser le composant SimulationDifusionThermique

@ us_30 :
Merci pour la note, ça fait plaisir !

L'emploi d'images pour définir les conditions initiales et limites permet surtout de se simplifier grandement la vie ! Une simple image contient toutes les informations.
Toi ton programme ne permet de mettre des conditions aux limites que sur les bords. Avec une image, on fait ce que l'on veut !
Je ferai à terme un équivalent à Paint uniquement pour entrer les conditions, comme ça pas besoin de se soucier du code de couleurs, on ne verra plus qu'on passe par une image. Mais bon, c'est long à faire et ça marche très bien avec Paint.

Si tu veux ressortir des valeurs, tu n'a qu'à modifier l'interface utilisateur. Tu as toutes les méthodes dans le composant pour avoir des valeurs : température d'un point à un instant donné (ObtenirTemperature), tableau complet à un instant donné (ObtenirTableau) ou historique de la température d'un point (ObtenirHistoriqueTemperature).
Libre à toi de faire ce que tu veux avec les résultats de la simulation. Si tu es motivé pour faire un GraphiqueBox (c'est à dire le composant qui affiche les courbes) en .NET, vas-y !

Normalement tu n'as pas à modifier le composant SimulationDifusionThermique. Mais l'interface utilisateur n'est pas au point. Elle permet juste d'exploiter correctement le composant, mais ne permet pas d'exploiter correctement les résultats.

Appuye-toi sur le composant SimulationDifusionThermique et construit carrément un nouveau programme autour si tu en as besoin. Cela ne devrait pas être trop long, toutes les méthodes de calcul et d'obtention des résultats sont dans le composant.


Bref, le coeur du programme, le morceau de code que je voulais poster ici, c'est juste le composant. Le reste du programme ne sert qu'à le faire tourner. (j'avais même pensé à compiler le composant dans une DLL, mais on n'aurait plus eu accès au code)

J'espère en tout cas que mon programme pourra t'inspirer !

Amicalement,
Arnal88.

signaler à un administrateur
Commentaire de us_30 le 19/11/2008 13:34:55

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.

signaler à un administrateur
Commentaire de klaudia le 20/03/2009 09:50:47

tres interessant programme
  merci

signaler à un administrateur
Commentaire de Arnal88 le 20/03/2009 19:13:23

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...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Résolution d'écran ( Urgent !!! ) [ par Ronald ] Bonjour,Je voudrais savoir comment faire pour que mes programmes fonctionnent dans toutes les résolutions d'écran sans avoir à une fenêtre trop grande Résolution d'écran ( Urgent !!! ) [ par Ronald ] Bonjour,Je voudrais savoir comment faire pour que mes programmes fonctionnent dans toutes les résolutions d'écran sans avoir à une fenêtre trop grande URGENT!! je recherche un moyen pour changer la résolution de windows!! [ par alex ] URGENT!! je recherche un moyen pour changer la résolution de windows!!il y a une source sur ce site! mais elle ne marche pas!! ou alors je ne sais pas esolution de systeme lineaire [ par debill ] BonjourJe suis actuellement confronté à un problème de résolution de système linéaire à 17 équations et 17 inconnues. Si quelqu'un pouvait me donner u résolution affichage en cours? [ par Nico ] Je souhaite récupérer la résolution de l'affichage en cours WinNT4.0.par le biais d'une fonction de l'API?C'est pour une application en Access97, donc Changer la résolution du bureau... [ par Akhilleus ] Hello !J'aimerais savoir comment faire pour changer les paramêtres du bureau et notamment la définition...Je veux créer une routine qui permettrait à résolution de l'affichage [ par fred ] Je souhaite récupérer la résolution de l'affichage en cours par le biais d'une fonction de l'API?C'est pour une application en Access97, donc en VBA.M changer la résolution d'une image [ par FredericPinchon ] bonsoir,comment changer la resolution d'une image (la passer à 150 dpi par exemple), la mettre en niveau de gris, etc, puis la sauver.merci pour votre Capacité mémoire physique [ par nvigogne ] Bonjour,Je cherche à obtenir la capacité RAM d'une machine ainsi que le nb de slots disponibles.L'objet Win32_PhysicalMemory de WMI échoue...Connaisse


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.