RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 aide svp en fortran

Forum : FORTRAN
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ FORTRAN

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM FORTRAN

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
dikite
Nouveau membre
Avatar de dikite
Inscrit : 23/02/2009
Messages : 1
Message
#160959
Posté le 23/02/09 à 13:59
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

!---------------------------------------------------------------

implicit none

integer ::i,j,n,imax,jmax,nmax,T,L,ok
real ::k,ks,d,ds,dx,dt,f1,f2,f3,f,e
real,dimension(:),allocatable ::s,v,p2,z2,u2,l2,x,xs,xc,a
real,dimension(:,:),allocatable ::c,p1,z1,u1,l1,b


!------------- programme ----------------------------------------
!################################################################


!-----------allocation de la memoire-------------------------------------

allocate(c(0:imax,0:jmax+1),s(0:jmax+1),v(0:jmax+1))
allocate(p1(0:imax,0:jmax+1),z1(0:imax,0:jmax+1),u1(0:imax,0:jmax+1),l1(0:imax,0:jmax+1))
allocate(p2(0:jmax+1),z2(0:jmax+1),u2(0:jmax+1),l2(0:jmax+1))
allocate(b(0:imax,jmax+1),a(0:jmax+1))

!--- coordonnees des conditions initiale---------------------------------
allocate(x(0:jmax+1))
do j=0,jmax+1
x(j)=j*L/T
enddo

allocate(xc(0:jmax+1),xs(0:jmax+1))
do j=0,jmax+1
xc(j)=x(j)
xs(j)=x(j)
enddo
!--------------conditions initiales--------------------------------------
c(1:imax,1:jmax)=2
s(1:jmax)=1

!--------------conditions aux limites-------------------------------------
c(0,:)=0
c(1,0)=1
c(2:imax,0)=0
c(1:imax,jmax+1)=c(1:imax,jmax)
s(0)=0
s(jmax+1)=s(jmax)
v(0)=0
s(jmax+1)=s(jmax)


!------------------------------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

contains

function somme(c,k,dx)
implicit none

real,dimension(:,:),intent(in),allocatable ::c
integer :: i,j,imax,jmax
real,intent(in) :: dx,k
real :: somme
somme=0.

do i=1,imax
do j=1,jmax
somme=somme+k*c(i,j)*dx;
enddo
enddo

end function somme

end module mod_somme

-----------------------------------------------
__________________________
merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Yann Pingot et l'équipe MPWG avec www.evolvia-web.com :.