begin process at 2012 02 16 09:45:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > RÉSOLUTION DE L'ÉQUATION DE LA CHALEUR

RÉSOLUTION DE L'ÉQUATION DE LA CHALEUR


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :12 668 / 918

Auteur : Arnal88

Ecrire un message privé
Commentaire sur cette source (10)
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

Les Membres Club peuvent 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

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) MODIFIER L'OPACITÉ D'UN FORMULAIRE AU PASSAGE DE LA SOURIS
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPOSANT GRAPHE
Source avec Zip Source avec une capture Source .NET (Dotnet) CHIMIE : SIMULATION DE RÉACTION

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE AFFINE par Tigrou66
Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip EQUATIONSECONDDEGRÉ,MATH,DEGRÉ par shadkitenge
Source avec Zip Source .NET (Dotnet) SOMME DE CHIFFRES CONTENUE DANS UN NOMBRE par alpha5

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) RÉSOLUTION DU MASTERMIND par alpha5
Source avec Zip RÉSOLUTION ÉQUATION DU SECOND DEGRÉ DANS LE CORPS DES COMPLE... par betamu
Source avec Zip Source avec une capture Source .NET (Dotnet) APPRENDRE À RÉSOUDRE UN SUDOKU par kbalist
Source avec Zip Source avec une capture SIMULATEUR DE VITESSE. par artgile
Source avec Zip Source avec une capture Source .NET (Dotnet) RÉSOLUTION EXPLIQUÉE DE SUDOKU par al1brn

Commentaires et avis

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.

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)

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.

Commentaire de arkaye le 18/11/2008 21:53:59

je vx un px d'explication svp sur ce project

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.

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.

Commentaire de klaudia le 20/03/2009 09:50:47

tres interessant programme
  merci

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

Commentaire de Pierre Ernest le 25/07/2010 17:37:50

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

Commentaire de CORBnet le 07/01/2012 16:57:13

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.

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

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales