Aide programmation Fortran 90

Littletwist -  
moudjahed sam Messages postés 3 Statut Membre -
Bonjour,

J'aimerai réaliser un programme en fortran 90 me calculant le température qu'il fait à chaque instant dans une pièce en fonction des conditions aux limites imposées par la température des mur et des chauffages.

Je suis sensé utiliser la méthode Gauss-Seidel pour y arriver.

La formule de la chaleur est un Laplacien de la forme :

dT²/dx² + dT²/dy² = 0

en discrétisant cette équation en 5 points, cela donne :

T(i+1,j) + T(i-1,j) + B² T(i,j+1) + B² T(i,j-1) - C T(i,j) =0

avec, B= DELTAx/DELTAy
et, C= 2( 1+B²)

La pièce est rectangulaire de dimensions 15m en x et 20 m en y. La température des mur est de 5°C et celle des chauffage est de 45°C.

Le 1er chauffage est situé en x=0m et 5m<y<10m
Le second en x=20m et 5m<y<10m
Le 3ème en y=0m et 7m<x<12m
Le 4ème en y=15m et 7m<x<12m

Si qqn pourrait me programmer la méthode, ce serai très sympa.

Merci pour votre aide !

Littletwist
Configuration: Windows Vista
Firefox 2.0.0.11

4 réponses

  1. mathematique
     
    slt mes proffs, je suis un etudiant en algerie.J'etude les maths, je cherche une aide pour les controles, je veux des exercices avec ses solutions pour une effective revision et merci pour votre aides.
    1
  2. abdoss Messages postés 3 Statut Membre 1
     
    tu peux s'inspirer de ce petit programme consernant la resolution de l'equation de la chaleur en premiere ordre dT/dt=diff.d2T/dx2 à toi de jangler pour resoudre ton probleme:

    programme de calcule de chaleur 1D implicite
    parameter n=40
    dimension a(n),b(n),c(n),aa(n),gg(n),T(n),Ts(n)
    c données
    diff=0.0001
    x1=0.5
    dt=0.1
    dx=x1/float(n-1)
    T(1)=100
    T(n)=0
    Ta=25
    r=diff*dt/dx**2
    c initialisation
    T(1)=T1
    T(n)=Tn
    Ts(i)=T1
    Ts(n)=Tn
    do i=2,n-1
    Ts(i)=Ta
    enddo
    do i=2,n-1
    T(i)=Ts(i)
    enddo
    1 k=0
    k=k+1
    c remplissage de matrice
    do i=2,n-1
    a(i)=1+2*r
    b(i)=-r
    c(i)=-r
    d(i)=T(i)
    end do
    d(2)=T(2)+r*T1
    d(n-1)=T(n-1)+r*Tn
    do i=3,n-2
    aa(i)=a(i)-b(i)*c(i-1)/aa(i-1)
    gg(i)=d(i)-a(i)*gg(i-1)/aa(i-1)
    end do
    Ts(n-1)=gg(n-1)/aa(n-1)
    do i=n-1,2,-1
    Ts(i)=(gg(i)-c(i)*Ts(i+1))/aa(i)
    enddo
    ez=0
    do i=2,n-1
    ez=ez+abs(Ts(i)-T(i))/Ts(i)
    enddo
    if(ez.gt.0.001) go to 1
    do i=1,n
    write(*,*) i,Ts(i)
    enddo
    end
    1
  3. moudjahed sam Messages postés 3 Statut Membre
     
    while t<lengthe(x2)+1
    0