Bonjour je débute en fortran et je voudrais comprendre comment ca fonctionne. J'ai récupéré un programme. Es-ce que quelqu'un peut me dire comment ca marche et ce que ca fait, pour m'éclairer dans mon apprentissage.
Voici le programme :
PROGRAM RELAXATION
real,parameter::deltax=0.05,de ltay=0.05
INTEGER,PARAMETER::Uini=0,J=50 0,L=500
REAL::ro,epsilon,x,y,Fun,Fua,A u,eps
REAL,DIMENSION(-(L+1)L+1)*(J+1))::U,S,un,ua
! Initialisation des constantes
DO IJ=0,J+1
DO IL=0,L+1
I=(IJ-1)*L+IL
U(I)=0
ua(i)=0
un(i)=0
ENDDO
ENDDO
DO IJ=0,J+1
x=-2.5+deltax*IJ
DO IL=0,L+1
I=(IJ-1)*L+IL
y=-2.5+deltay*IL
IF ((x*x+y*y)<=1) THEN
S(I)=1*deltax*deltax
ELSE
S(I)=0
ENDIF
ENDDO
ENDDO
ua=s
! Calcul par relaxation
DO IT=1,100000
epsilon=0.0
DO IJ=1,J
DO IL=1,L
I=(IJ-1)*L+IL
Fun=(-ua(I+L)-ua(I-L)-ua(I+1)-ua(I-1))
un(I)=-0.25*(S(I)+Fun)
enddo
enddo
DO IJ=1,J
DO IL=1,L
I=(IJ-1)*L+IL
Fua=un(I+L)+un(I-L)+un(I+1)+un(I-1)
Au=-4*un(I)+Fua
eps=(abs(Au-S(I)))
IF (eps>epsilon) THEN
epsilon=eps
ENDIF
ENDDO
ENDDO
ua=un
write(6,*)'epsilon', epsilon
ENDDO
! Affichage
DO IJ=1,J
DO IL=1,L
I=(IJ-1)*L+IL
write(21,*) ij,il,s(i)
write(23,*) ij,il,un(i)
ENDDO
write(21,*)
write(21,*)
write(23,*)
write(23,*)
ENDDO
END PROGRAM RELAXATION
-----