IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Equation de la chaleur


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Equation de la chaleur
    bonjour tous le monde!
    je dois resoudre l'equation de la chaleur 1D en fortran avec la methode analytique. je dois programmer l'equation suivante:

    T(x,t)= 1+(ti-1)*somme(pour n allant de 1 jusqu'a l'infini) {4/(n*pi)*sin(n*pi*x)*exp(-(n*pi)²t)

    avec n =1,3,5,7...
    je l'ai programmé, mais les resultats sont bizarres!

    je vous montre mon programme,et si quelqu'un trouve où ca ne va pas, s'il vous plait, dites le moi!

    double precision ts(20000)
    double precision dt,dx,absx,teta,teta1
    integer p
    parameter (eps=1e-8)

    open(1,file='analytik1.res',access='sequential',status='unknown')
    open(2,file='analytik2.res',access='sequential',status='unknown')
    open(3,file='analytik3.res',access='sequential',status='unknown')
    open(4,file='analytik4.res',access='sequential',status='unknown')
    write(*,*)'donner dt,m,itmax et p'
    read(*,*)dt,m,itmax,p

    dx=1./(m-1)
    pi=3.141592654

    itemp1=itmax/10
    itemp2=itmax/5
    itemp3=itmax/2
    itemp4=9*itmax/10

    WRITE(*,*)itemp1,itemp2,itemp3,itemp4

    icount=0
    t=0
    100 icount=icount+1


    c calcul de tpt à t+dt

    t=t+dt
    teta=0

    do 2 i=1,m
    do 3 n=1,p,(2)

    teta1=teta+((1/(n*pi))*4*sin(n*pi*i)*exp(-(n*n*pi*pi*t)) )

    if(abs (teta1-teta).lt.eps) goto 30

    teta=teta1

    3 continue

    30 ts(i)=1-teta1

    2 continue

    do 56 i=1,m

    absx=(i-1.)*dx

    if(icount.eq.itemp1)go to 266
    if(icount.eq.itemp2)go to 267
    if(icount.eq.itemp3)go to 368
    if(icount.eq.itemp4)go to 370
    go to 269
    266 write(1,*)absx,ts(i)
    write(*,*)absx,ts(i)

    go to 269
    267 write(2,*)absx,ts(i)
    go to 269
    368 write(3,*)absx,ts(i)
    go to 269
    370 write(4,*)absx,ts(i)
    269 continue

    56 continue

    if(t.gt.itmax)go to 53
    goto 100
    53 continue

    stop
    end

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il y a deux choses qui ne vont pas trop dans ton code :
    - tu veux résoudre de manière analytique une somme infinie -> problème...
    - tu utilises des goto dans tous les sens -> réécris ton code sans stp.

    Sinon, il y a la balise CODE (le #) qui te permet de mettre en forme ton code. Ca nous permettrait de mieux lire ce que tu fais.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Il y a deux choses qui ne vont pas trop dans ton code :
    - tu veux résoudre de manière analytique une somme infinie -> problème...
    - tu utilises des goto dans tous les sens -> réécris ton code sans stp.

    Sinon, il y a la balise CODE (le #) qui te permet de mettre en forme ton code. Ca nous permettrait de mieux lire ce que tu fais.
    Je seconde. Ou plutôt, j'en remets. Ce programme est écrit en style Fortran 66. Il n'y a même pas de if ... then introduit en Fortran 77 ! Avec des cycle, exit, if then, select case, ce programme peut certainement être plus lisible...

    En terminant, il n'y a pas de implicit none dans le programme, et personnellement, j'arrête toujours de collaborer quand je réalise qu'il n'y en a pas... Aide toi et le ciel t'aidera...

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    l'equation de la chaleur 1D
    Ton énoncé est incomplet:
    • Dois-tu prendre en considération des sources de chaleurs?
    • Quelles sont les conditions initiales?
    • Quelles sont les conditions aux limites?


    en fortran avec la methode analytique
    Le fortran est conçu pour appliquer des méthodes numériques, mais pas du tout adapté pour les méthodes analytiques. D'ailleurs, qu'est-ce que tu appelles une méthode analytique dans ce cas?

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    je ne te conseil pas du tout d utiliser les go to, comme ca ton programme deviet une spaghetti!, modifi ton program en enlevant les go to

  6. #6
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    en ce qui concerne ta somme à l'infini: c'est imposible à résoudre en fortran qui ne gère que des Nombres: il te faut un poteur de calcul formel c'est la seule solution

    de plus l'équation de la chaleur 1D instationnaire c'est:

    dT/dt+d/dx(kdT/dx)=f

    où T est la température, k la conductivité thermique et f le flux de chaleur

    avec toutes tes fonction de carré intégrable sur un ouvert BORNé !!! si tu n'a pas de limite, ton problème est mal posé!!!

    dans ton prog d'ailleur tu ne fait pas la somme jusqu'à l'infini puis que tu le borne à p...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    en ce qui concerne ta somme à l'infini: c'est imposible à résoudre en fortran qui ne gère que des Nombres: il te faut un poteur de calcul formel c'est la seule solution

    de plus l'équation de la chaleur 1D instationnaire c'est:

    dT/dt+d/dx(kdT/dx)=f

    où T est la température, k la conductivité thermique et f le flux de chaleur

    avec toutes tes fonction de carré intégrable sur un ouvert BORNé !!! si tu n'a pas de limite, ton problème est mal posé!!!

    dans ton prog d'ailleur tu ne fait pas la somme jusqu'à l'infini puis que tu le borne à p...

    Si on peut faire une somme infinie en fortran ! Il suffit de prendre pour la limite de la somme un nombre tres grand. Si la serie est convergente (et a priori c'est le cas !) plus on ajoute de termes, plus ces termes sont petits. On peut donc faire la sommation jusqu'a ce que 2 valeurs consecutives de T soient inferieures a une certaine tolerance epsilon pres. typiquement espilon =1.e-5

    L'equation que tu indiques Genteur slayer contient une petite erreur .
    La bonne equation de la chaleur en 1D instationnaire est:
    dT/dt = d/dx(kdT/dx) + f

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!

    Ton énoncé est incomplet:
    • Dois-tu prendre en considération des sources de chaleurs?
    • Quelles sont les conditions initiales?
    • Quelles sont les conditions aux limites?



    Le fortran est conçu pour appliquer des méthodes numériques, mais pas du tout adapté pour les méthodes analytiques. D'ailleurs, qu'est-ce que tu appelles une méthode analytique dans ce cas?

    Jean-Marc Blanc

    Je suppose que dans l'expression de la somme qui est la solution analytique de T(x,t) qu'utilise kawtar2 celle-i integre les conditions initiales et aux limites de son probleme.

    Le fortran peut tout faire !! et il est tout aussi bien adapte pour appliquer des methodes numeriques comme tu dis, que de calculer une solution analytique quand celle ci est disponible.
    On a demande a kawtar2 de programmer en fortran la solution analytique de ce probleme. Il y peut rien le pauvre c'est comme ca !!

  9. #9
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    calculer une solution analytique
    Pour moi, ça veut dire procéder en deux étapes:
    • Déterminer (papier-crayon ou un logiciel de calcul formel comme Mathematica) l'expression analytique de la température en fonction du temps et de la position.
    • Tabuler numériquement la température en divers endroits et à divers instants.

    Le fortran convient pour la seconde étape, mais pas pour la première.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    Entierement d'accord avec toi Jean-Marc !!
    Par "calculer une solution analytique" j'entendais calculer la valeur de cette solution en des points predefinis (tabulés).
    Il est evident que pour "produire" cette solution seuls ton cerveau , une feuille de papier et un stylo te seront utiles !!
    Ou alors il faut utiliser comme tu le dis un logiciel de calcul formel: Mapple, Mathematika,...
    Mais la kawtar2 dispose deja de la solution analytique, (fournie par le cerveau de son prof ) il a juste besoin de calculer des valeurs tabulees...et c'est en ca qu'il a besoin du fortran.

Discussions similaires

  1. Equation de la chaleur 1D avec MATLAB
    Par pubis2luxe dans le forum Mathématiques
    Réponses: 0
    Dernier message: 07/06/2014, 23h30
  2. [Débutant] Equation de la chaleur / Image 1D 2D
    Par bilou_12 dans le forum Images
    Réponses: 4
    Dernier message: 26/03/2012, 23h04
  3. l'equation de la chaleur
    Par djodjosami dans le forum Fortran
    Réponses: 9
    Dernier message: 07/02/2012, 17h03
  4. programme d'equation de la chaleur
    Par najoua01 dans le forum Débuter
    Réponses: 9
    Dernier message: 30/01/2011, 12h10
  5. equation de la chaleur
    Par mirinda dans le forum Mathématiques
    Réponses: 5
    Dernier message: 25/06/2008, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo