Aide programmation Fortran 90

Fermé
Littletwist - 9 déc. 2007 à 18:01
moudjahed sam Messages postés 1 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013 - 13 févr. 2013 à 20:54
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

4 réponses

mathematique
12 mai 2008 à 11:55
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
abdoss Messages postés 3 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
28 mai 2008 à 21:41
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
moudjahed sam Messages postés 1 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013
13 févr. 2013 à 20:54
while t<lengthe(x2)+1
0