Aide programmation Fortran 90
Littletwist
-
moudjahed sam Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
moudjahed sam Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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
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
Si tu as pas de réponses essaye le forum Fortran : https://www.developpez.net/forums/f157/general-developpement/algorithme-mathematiques/programmation-parallele-calcul-scientifique-haute-performance-hpc/fortran/
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.
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
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