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 : 16/11/2008 00:12:15 Vu / téléchargé: 2 873 / 254

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
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
- 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 2 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.

En revanche, pour afficher les courbes des résultats, j'utilise le noyau de Mathematica(c)
Il faut donc avoir Mathematica installé sur son PC pour visualiser les courbes. Mais le programme marche quand même sans ça !


Je ferai prochainement un PDF illustré pour expliquer tout ça...


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 presque achevé.
Il reste à remplacer le composant GraphiqueBox par un autre utilisant uniquement du code .NET et pas Mathematica pour tracer les courbes.

Pour ceux qui explorent le code, il y a la classe SimulationDiffusionThermique qui est entièrement autonome et qui permet la résolution.
Je ne peux pas expliquer ici toutes les fonctions.. (PDF à venir)
J'espère que c'est assez intuitif et suffisamment commenté pour que vous puissiez l'utiliser dans un de vos programmes si besoin.

   ********************************************************************

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.

C'est le principe et la force de la programmation orientée objet !!

 

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

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.

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

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,452 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é.