0% ont trouvé ce document utile (0 vote)
10 vues3 pages

Programme de résolution de Thomas en Fortran

Le programme Thomas résout un système d'équations linéaires tridiagonales en utilisant la méthode de Thomas. Il calcule les valeurs de B, C et phi pour un maillage de 10 000 points, puis écrit les résultats dans deux fichiers de données. Enfin, il calcule et écrit les valeurs d'E, représentant une dérivée approximative de phi.

Transféré par

Théo Hennequin
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
10 vues3 pages

Programme de résolution de Thomas en Fortran

Le programme Thomas résout un système d'équations linéaires tridiagonales en utilisant la méthode de Thomas. Il calcule les valeurs de B, C et phi pour un maillage de 10 000 points, puis écrit les résultats dans deux fichiers de données. Enfin, il calcule et écrit les valeurs d'E, représentant une dérivée approximative de phi.

Transféré par

Théo Hennequin
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

program thomas

implicit none

!déclaration
real(kind=8) :: delta, R,x, ai, bi, ci
integer :: i,n,j
real(kind=8), dimension (1:10000) :: phi, B, C, D

!valeurs
R=10.0
n=10000
delta=R/n
B(1)=-2/(delta**2)
D(1:9999)=0
D(10000)=10
x=0.0
ai=1.0/(delta**2)
bi=(-2.0)/(delta**2)
ci=1.0/(delta**2)

!Calcul de B
B(1)=bi
do i = 2,n
​ B(i) =bi-(ai*ci)/B(i-1)
end do

print*, B(9999)

!Calul de C
C(1)=D(1)/bi
do i=2,n
​ C(i)=(D(i)-ai*C(i-1))/B(i)
end do

print*, C(1)
print*, C(9999)

!Calcul de phi
phi(10000)=C(10000)
do i= 1,9999
​ j=10000-i
​ phi(j)=C(j)-(ci*phi(j+1))/B(j)
end do
! écriture
open (unit=10,file='[Link]')
do i=1,10000
​ x=(i-1)*delta
​ write(10,*) phi(i),x
end do
close(10)

!Calcul de E
E(1)=-phi(2)/(2*delta)
E(1000)= phi(9999)/(2*delta)
do i=1,10000
​ E(i)=(-1.0/2*delta)*(-phi(i-1)+phi(i+1))
end do

!écriture de E
open (unit=9,file='[Link]')
do i=1,10000
​ x=(i-1)*delta
​ write(9,*) x, E(i)*1.0e15
end do
close(9)

end program thomas

Vous aimerez peut-être aussi