bonjour tout le monde,
j'ai ecrit un code en fortran, il compile mais il ne s'execute pas:le message d'erreur est"fortran runtime:allocate:out of memory"
je ne vois pas du tout ce qui ne va pas;
voici le code:
program systeme
program systeme
!----------- sous programmes ------------------------------------
use mod_somme !calcul
!------------------------------evolution du temps----------------------------------
!print*,'entrer le nombre iteration en temps a effectuer:',nmax
!print*,'entrer le nombre de cellules ci',imax
nmax=5
imax=3
!----------------------declaration des constantes au problčme----------------------
d = 0.1
ds=0.01
T=5
dx=0.1
!dx= 1./(jmax-1)
f=d*dt/(dx*dx)
e=ds*dt/(dx*dx)
open(UNIT=9, FILE='donnees.txt', STATUS='unknown')
!==========================================================================
!==================Calcul de la vitesse et du second membre================
do n=1,nmax
do i=1,imax
do j=1,jmax
!schema explicite pour la vitesse
v(j+1)=v(j)+somme(c,k,dx)+ks*dt*s(j)
!-------coordonnées du second terme pour ci:une matrice
b(i,j)=k*dt*c(i-1,j)+c(i,j)-dt/(2*dx)*(c(i,j+1)*v(j+1)-c(i,j-1)*v(j-1))
!-------second terme pour s------------------------------------------
a(j)=s(j)-dt/(2*dt)*(s(j+1)*v(j+1)-s(j-1)*v(j-1))
!=======================================================================
!=======================================================================
!debut de la methode A=LU pour resoudre AX=B
p1(i,1)=f1 !pour chaque c_i
z1(i,1)=b(i,1)/p1(i,1)
u1(i,1)=-f1/p1(i,1)
p2(1)=f2 !pour s
z2(1)=a(1)/p2(1)
u2(1)=-f2/p2(1)
enddo
enddo
!factorisation de la descente
do i=1,imax !
do j=2,jmax !
!descende pour chaque
l1(i,j-1) = -f !ci
p1(i,j) = f1-u1(i,j-1)*l1(i,j-1) !
u1(i,j) = -f1/p1(i,j) !
z1(i,j) = (b(i,j)-l1(i,j-1)*z1(i,j-1))/p1(i,j)
l2(j-1) = -e !factorisation de descente
p2(j) = f2-u2(j-1)*l2(j-1) !pour s
u2(j) = -f2/p2(j) !
z2(j) = (a(j)-l2(j-1)*z2(j-1))/p2(j) !
enddo
enddo
!initialisation de la remontee
do i=1,imax
do j=1,jmax !initialisation de la remontee pour
c(i,jmax)=z1(i,jmax) !chaque c_i
s(jmax)=z2(jmax) !initialisation de la remontee pour s
enddo
enddo
!boucle de remontee
do i=1,imax !remontee
do j=jmax-1,2,-1 ! pour chaque
c(i,j)=z1(i,j)-u1(i,j)*c(i,j+1) ! c_i
s(j)=z2(j)-u2(j)*s(j+1) !remontee pour s
enddo
enddo
do j=0,jmax
write(9,*) v(j)
end do
do j=0,jmax
write(9,*) s(j)
end do
do i=1,imax
do j=1,jmax
write(9,*) c(i,j)
end do
end do
close(9)
end do
end program systeme
---------------------------------------------------------------------------
module mod_somme