Erreur dans Fortran

marwamel Messages postés 9 Statut Membre -  
PSud Messages postés 1385 Statut Membre -
Bonjour,
Comment resoudre cette erreur dans Fortran:
The variable remplissage_mat is being used without being defined ?
Merci d'avance.

22 réponses

  • 1
  • 2
Résumé de la discussion

Le problème décrit consiste en une erreur Fortran où la variable remplissage_mat est utilisée sans avoir été définie, avec des causes possibles liées à l'initialisation et à des dépassements d'indices. Deux soucis principaux expliquent cette situation : l'utilisation de u(2) non initialisée et, surtout, un dépassement d'indice lorsque i atteint nm+1, conduisant à l'accès hors dimension. Des corrections recommandées incluent l'initialisation explicite de u(2) avant son usage et la vérification rigoureuse des bornes des tableaux, notamment en ajustant la condition d'arrêt des boucles pour éviter i>nm. En cas d'erreur similaire, il peut être utile de vérifier les déclarations et les interfaces des sous-programmes, puis la cohérence entre dimensions des entrées et indices utilisés.

Bobot (l'IA à votre service)
  1. PSud Messages postés 1385 Statut Membre 528
     
    Bonjour,
    Je ne connais pas ton programme mais cette erreur arrive quand tu utilises une variable sans l'avoir déclarée en définissant son type (entier, flottant, tableau etc.) au début du programme (ou du sous-programme).
    Cldt
    0
  2. marwamel Messages postés 9 Statut Membre
     
    Bonjour,
    Il me dit que la procédure remplissage_matrice est utilisé sans être définie
    0
  3. PSud Messages postés 1385 Statut Membre 528
     
    Autre possibilité : tu utilises remplissage_mat à gauche d'un signe égal alors qu'aucune valeur n'a été rentrée dans remplissage_mat.
    Exemple : tu écris A = B alors que tu n'as jamais défini la valeur de B.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. marwamel Messages postés 9 Statut Membre
     
    Bonjour,
    Ci dessous mon programme.
    !Module fonction
          !Interface 
             ! Function kond(h)
                !real*8 ::h
                !real*8::kond
             ! End function kond
          !end interface
    ! End module 
               
    program geophysique
    
    implicit none
    INTEGER                                  ::nm,nt,k,i,j    
    REAL*8, DIMENSION(:)  , ALLOCATABLE      ::b_inf,b_sup,b_dia,fsec,deltaz,z,sigma_b,kond,PSn,hn,theta,u
    REAL*8 :: L,tmax,temps,PSimp,dt,flux0,Csat,sigma_sat,Ro,g,fi,Ks,u0,himp,sigma_w,F,na,A,B
    
     
             L=20d0
             tmax=1000.0d0 
             dt=1.0d0  
           
         
          !le fichier des input     
          open (14, FILE='input_geo.dat') 
          open (13, FILE='new_input.dat') 
          open(15,FILE='resultats_touma.dat')
          
           
          read(13,*) nm 
          Allocate (deltaz(nm),z(nm))  
          ALLOCATE(PSn(nm),fsec(nm),b_inf(nm),kond(nm),b_sup(nm),b_dia(nm),sigma_b(nm),u(nm),hn(nm),theta(nm))
          read(13,*) deltaz(1:nm)
          read(13,*)himp
          read(13,*)u0
          
          
           !calcul de z(i) le centre de chaque maille
            z(1)=deltaz(1)/2.0d0 
            do i=2,nm
              z(i)=z(i-1)+(deltaz(i-1)+deltaz(i))/2.0d0
           enddo
          
           read(14,*) PSimp
           read(14,*) flux0
           
            do i=1,nm 
               read(15,*) z(i), hn(i) , theta(i)
            end do
            
            write(*,*) hn(1)
    
          
             open(16,FILE='resultats_géophysique.dat')
           
    
            nt=tmax/dt
            WRITE(*,*)'nm=',nm,'nt=',nt
            temps=0.0d0
            pause
         
        do k=1,nt
            write(*,*)k
            temps=temps+dt 
        call remplissa_mat(nm,deltaz,dt,sigma_b,b_sup,b_dia,b_inf,fsec,flux0,PSimp,hn,theta)
        call thomas(nm,b_sup,b_inf,b_dia,PSn,fsec)
     end do
           
        !Affichage du potenciel spontané  
          do i=1,nm
             write(16,*)k,PSn(i)
          end do 
    
          WRITE(*,*)'minimum=',MINVAL(PSn(1:nm)),'maximum=',MaxVAL(PSn(1:nm))
          pause     
      end
    
       subroutine remplissa_mat(nm,deltaz,dt,sigma_b,b_sup,b_dia,b_inf,fsec,flux0,PSimp,hn,theta)
               implicit none
               integer nm,i
               real*8 theta(*),u(nm),hn(*),deltaz(*),fsec(*),b_dia(*),b_sup(*),b_inf(*),sigma_b(*)
               real*8 Ro,g,fi,Csat,Ks,flux0,PSimp,kond(nm),sigma_w,sigma_sat,F,sig1,sig2,na,cte,A,B,u0,k1,k2,himp,dt
               
                A=5.03611d0
                B=6.07d0
              
                
               sigma_w=0.00051d0
               sigma_sat=0.0031d0
               Ro=999.97d0
               g=9.8d0
               ks=0.0000825d0
               F=4.26d0
               na=1.6d0
               Csat=-2.9d-7
               fi=1.0d0
               
             !calcul de sigma_b
            do i=1,nm
               sigma_b(i)=( (1.0d0/F)*sigma_w*(((theta(i))/fi)**na) )
            end do 
            !------------------------  
            
            !calcul de la conductivité  
            do i=1,nm
               kond(i)=A*((theta(i))**B)
            end do
            !--------------------------
    
               k2=(Kond(1)+Kond(2))/2.0d0
    
               u(1)=( (-k2*(hn(i+1)-hn(i)) )/deltaz(i) )+k2-u0
               
               cte=( (-Csat*sigma_sat*Ro*g*fi)/Ks )
               
               sig2=( (sigma_b(1)+sigma_b(2))/2.0d0 )
               
               b_dia(1)=( -sig2/deltaz(1) )
               
               b_sup(1)= ( sig2/deltaz(1) )
               
               fsec(1)= (cte*( ( (u(2)+u(1))/( theta(2)+theta(1)) )- (u(1)/theta(1)) ))+flux0  
               
          do i=2,nm-1
          
               k1=(Kond(i-1)+Kond(i))/2.0d0
               k2=(Kond(i)+Kond(i+1))/2.0d0
               
               u(i)=( (-k2*(hn(i+1)-hn(i)) )/deltaz(i) ) + ( (k1*(hn(i)-hn(i-1)) )/deltaz(i) )+(k2-k1)
          
              
              sig1=( ( sigma_b(i)+sigma_b(i-1) )/2.0d0 )
              
              sig2=( (sigma_b(i)+sigma_b(i+1) )/2.0d0 )
              
              b_inf(i)=(sig1/deltaz(i) )
              
              b_dia(i)= ( -(sig2+sig1)/deltaz(i) )
              
              b_sup(i)=( sig2/deltaz(i) )
              
              fsec(i)= cte* ( ( (u(i+1)+u(i)) /(theta(i+1)+theta(i)) )- ( (u(i-1)+u(i) )/( theta(i-1)+theta(i) ) ) )          
                
          end do 
          
               k1=(Kond(nm-1)+Kond(nm))/2.0d0 
               k2=Kond(nm)
               
               u(nm)=( (-k2*(himp-hn(i)) )/deltaz(i) ) + ( (k1*(hn(i)-hn(i-1)) )/deltaz(i) )+(k2-k1)
          
       
              sig1= ( (sigma_b(nm-1)+sigma_b(nm))/2.0d0 )
              
              b_inf(nm)= ( sig1/deltaz(nm) )
              
              b_dia(nm)= ( - (sig2+sig1)/deltaz(nm) )
              
              fsec(nm)= (cte* ( (u(nm)/theta(nm))-( (u(nm)+u(nm-1))/(theta(nm)+theta(nm-1) ) )) )- ((sig2*PSimp)/deltaz(nm))    
           return 
           end   
          
     
         subroutine thomas(n,a,b,d,c,f)
          integer i,j
          
          parameter (nmax=10000)
          real*8 a(*),b(*),c(*),d(*),f(*),r(nmax),g
          r(1)=f(1)
          do i=2,n
            g=b(i)/d(i-1)
            d(i)=d(i)-g*a(i-1)
            r(i)=f(i)-g*r(i-1)
          enddo
          c(n)=r(n)/d(n)
    
          DO i=2,n
            j=n-i+1
            c(j)=(r(j)-a(j)*c(j+1))/d(j)
          enddo
          return
      !close(13)
          end  
    
    !function kond(h)
    !implicit none
    !real*8 ::k_s,k_r,Se,l,m,ns,alfa,kond,h
    
     !k_s=0.00825d0
    ! alfa=0.145d0 
     !l=0.5d0
    ! ns=2.68d0
    ! m=1.0d0-(1.0d0/ns)
    
    
        ! if (h.lt.0.0d0) then 
    
          !  Se=(1.0d0+(alfa*dabs(h))**ns)**-m
          !  k_r=(Se**l)*(1- (1- ((Se)**(1/m)) )**m )**2
            
          !  kond= (k_s*k_r)
       ! else
           ! kond=0.0d0
        !endif
        
    !end function
    0
  6. marwamel Messages postés 9 Statut Membre
     
    program geophysique

    implicit none
    INTEGER                                  ::nm,nt,k,i,j    
    REAL*8, DIMENSION(:)  , ALLOCATABLE      ::b_inf,b_sup,b_dia,fsec,deltaz,z,sigma_b,kond,PSn,hn,theta,u
    REAL*8 :: L,tmax,temps,PSimp,dt,flux0,Csat,sigma_sat,Ro,g,fi,Ks,u0,himp,sigma_w,F,na,A,B
    
     
             L=20d0
             tmax=1000.0d0 
             dt=1.0d0  
           
         
          !le fichier des input     
          open (14, FILE='input_geo.dat') 
          open (13, FILE='new_input.dat') 
          open(15,FILE='resultats_touma.dat')
          
           
          read(13,*) nm 
          Allocate (deltaz(nm),z(nm))  
          ALLOCATE(PSn(nm),fsec(nm),b_inf(nm),kond(nm),b_sup(nm),b_dia(nm),sigma_b(nm),u(nm),hn(nm),theta(nm))
          read(13,*) deltaz(1:nm)
          read(13,*)himp
          read(13,*)u0
          
          
           !calcul de z(i) le centre de chaque maille
            z(1)=deltaz(1)/2.0d0 
            do i=2,nm
              z(i)=z(i-1)+(deltaz(i-1)+deltaz(i))/2.0d0
           enddo
          
           read(14,*) PSimp
           read(14,*) flux0
           
            do i=1,nm 
               read(15,*) z(i), hn(i) , theta(i)
            end do
            
            write(*,*) hn(1)
    
          
             open(16,FILE='resultats_géophysique.dat')
           
    
            nt=tmax/dt
            WRITE(*,*)'nm=',nm,'nt=',nt
            temps=0.0d0
            pause
         
        do k=1,nt
            write(*,*)k
            temps=temps+dt 
        call remplissa_mat(nm,deltaz,dt,sigma_b,b_sup,b_dia,b_inf,fsec,flux0,PSimp,hn,theta)
        call thomas(nm,b_sup,b_inf,b_dia,PSn,fsec)
     end do
           
        !Affichage du potenciel spontané  
          do i=1,nm
             write(16,*)k,PSn(i)
          end do 
    
          WRITE(*,*)'minimum=',MINVAL(PSn(1:nm)),'maximum=',MaxVAL(PSn(1:nm))
          pause     
      end
    
       subroutine remplissa_mat(nm,deltaz,dt,sigma_b,b_sup,b_dia,b_inf,fsec,flux0,PSimp,hn,theta)
               implicit none
               integer nm,i
               real*8 theta(*),u(nm),hn(*),deltaz(*),fsec(*),b_dia(*),b_sup(*),b_inf(*),sigma_b(*)
               real*8 Ro,g,fi,Csat,Ks,flux0,PSimp,kond(nm),sigma_w,sigma_sat,F,sig1,sig2,na,cte,A,B,u0,k1,k2,himp,dt
               
                A=5.03611d0
                B=6.07d0
              
                
               sigma_w=0.00051d0
               sigma_sat=0.0031d0
               Ro=999.97d0
               g=9.8d0
               ks=0.0000825d0
               F=4.26d0
               na=1.6d0
               Csat=-2.9d-7
               fi=1.0d0
               
             !calcul de sigma_b
            do i=1,nm
               sigma_b(i)=( (1.0d0/F)*sigma_w*(((theta(i))/fi)**na) )
            end do 
            !------------------------  
            
            !calcul de la conductivité  
            do i=1,nm
               kond(i)=A*((theta(i))**B)
            end do
            !--------------------------
    
               k2=(Kond(1)+Kond(2))/2.0d0
    
               u(1)=( (-k2*(hn(i+1)-hn(i)) )/deltaz(i) )+k2-u0
               
               cte=( (-Csat*sigma_sat*Ro*g*fi)/Ks )
               
               sig2=( (sigma_b(1)+sigma_b(2))/2.0d0 )
               
               b_dia(1)=( -sig2/deltaz(1) )
               
               b_sup(1)= ( sig2/deltaz(1) )
               
               fsec(1)= (cte*( ( (u(2)+u(1))/( theta(2)+theta(1)) )- (u(1)/theta(1)) ))+flux0  
               
          do i=2,nm-1
          
               k1=(Kond(i-1)+Kond(i))/2.0d0
               k2=(Kond(i)+Kond(i+1))/2.0d0
               
               u(i)=( (-k2*(hn(i+1)-hn(i)) )/deltaz(i) ) + ( (k1*(hn(i)-hn(i-1)) )/deltaz(i) )+(k2-k1)
          
              
              sig1=( ( sigma_b(i)+sigma_b(i-1) )/2.0d0 )
              
              sig2=( (sigma_b(i)+sigma_b(i+1) )/2.0d0 )
              
              b_inf(i)=(sig1/deltaz(i) )
              
              b_dia(i)= ( -(sig2+sig1)/deltaz(i) )
              
              b_sup(i)=( sig2/deltaz(i) )
              
              fsec(i)= cte* ( ( (u(i+1)+u(i)) /(theta(i+1)+theta(i)) )- ( (u(i-1)+u(i) )/( theta(i-1)+theta(i) ) ) )          
                
          end do 
          
               k1=(Kond(nm-1)+Kond(nm))/2.0d0 
               k2=Kond(nm)
               
               u(nm)=( (-k2*(himp-hn(i)) )/deltaz(i) ) + ( (k1*(hn(i)-hn(i-1)) )/deltaz(i) )+(k2-k1)
          
       
              sig1= ( (sigma_b(nm-1)+sigma_b(nm))/2.0d0 )
              
              b_inf(nm)= ( sig1/deltaz(nm) )
              
              b_dia(nm)= ( - (sig2+sig1)/deltaz(nm) )
              
              fsec(nm)= (cte* ( (u(nm)/theta(nm))-( (u(nm)+u(nm-1))/(theta(nm)+theta(nm-1) ) )) )- ((sig2*PSimp)/deltaz(nm))    
           return 
           end   
          
     
         subroutine thomas(n,a,b,d,c,f)
          integer i,j
          
          parameter (nmax=10000)
          real*8 a(*),b(*),c(*),d(*),f(*),r(nmax),g
          r(1)=f(1)
          do i=2,n
            g=b(i)/d(i-1)
            d(i)=d(i)-g*a(i-1)
            r(i)=f(i)-g*r(i-1)
          enddo
          c(n)=r(n)/d(n)
    
          DO i=2,n
            j=n-i+1
            c(j)=(r(j)-a(j)*c(j+1))/d(j)
          enddo
          return
      !close(13)
          end
    0
  7. PSud Messages postés 1385 Statut Membre 528
     
    Je suis en train de télécharger un compilateur Fortran pour tester ton programme. En attendant, as-tu essayé de le compiler en mettant le programme principal à la fin de ton fichier plutôt qu'au début ?
    Je sais qu'en C il faut soit déclarer un sous-programme avant le programme principal soit mettre le source du sous-programme avant le programme principal sinon celui-ci ne le connait pas.
    0
  8. marwamel Messages postés 9 Statut Membre
     
    Bonjour,
    La structure est bonne car j'ai déja fait des programmes pareilles.
    Ils vous manquent les fichiers dat.
    Actuellement, j'utilise le comp-intel-bat
    Je dois vous envoyé les fichiers dat ?
    0
  9. PSud Messages postés 1385 Statut Membre 528
     
    Non, je vais juste essayer de compiler si j'arrive à installer un compilateur Fortran sachant que cet aprem je n'ai pas trop de temps disponible.
    0
  10. marwamel Messages postés 9 Statut Membre
     
    Ci dessous le fichier resultats_touma
    5.000000000000000E-002 -13.9738195143532 0.269578841809535
    0.150000000000000 -14.0049689014375 0.269412715996223
    0.250000000000000 -14.0365211511907 0.269244317861301
    0.350000000000000 -14.0684830278750 0.269073607923757
    0.450000000000000 -14.1008614526980 0.268900545802181
    0.550000000000000 -14.1336635086176 0.268725090188781
    0.650000000000000 -14.1668964453293 0.268547198822492
    0.750000000000000 -14.2005676844472 0.268366828461127
    0.850000000000000 -14.2346848248838 0.268183934852535
    0.950000000000000 -14.2692556484414 0.267998472704721
    1.05000000000000 -14.3042881256227 0.267810395654884
    1.15000000000000 -14.3397904216722 0.267619656237333
    1.25000000000000 -14.3757709028583 0.267426205850222
    1.35000000000000 -14.4122381430088 0.267229994721053
    1.45000000000000 -14.4492009303112 0.267030971870909
    1.55000000000000 -14.4866682743915 0.266829085077332
    1.65000000000000 -14.5246494136835 0.266624280835818
    1.75000000000000 -14.5631538231057 0.266416504319836
    1.85000000000000 -14.6021912220583 0.266205699339329
    1.95000000000000 -14.6417715827583 0.265991808297608
    2.05000000000000 -14.6819051389291 0.265774772146584
    2.15000000000000 -14.7226023948627 0.265554530340239
    2.25000000000000 -14.7638741348740 0.265331020786275
    2.35000000000000 -14.8057314331674 0.265104179795841
    2.45000000000000 -14.8481856641371 0.264873942031251
    2.55000000000000 -14.8912485131245 0.264640240451597
    2.65000000000000 -14.9349319876562 0.264403006256160
    2.75000000000000 -14.9792484291899 0.264162168825495
    2.85000000000000 -15.0242105253939 0.263917655660104
    2.95000000000000 -15.0698313229911 0.263669392316550
    3.05000000000000 -15.1161242411969 0.263417302340900
    3.15000000000000 -15.1631030857861 0.263161307199363
    3.25000000000000 -15.2107820638221 0.262901326205965
    3.35000000000000 -15.2591757990873 0.262637276447137
    3.45000000000000 -15.3082993482542 0.262369072703030
    3.55000000000000 -15.3581682178401 0.262096627365400
    3.65000000000000 -15.4087983819907 0.261819850351886
    3.75000000000000 -15.4602063011426 0.261538649016476
    3.85000000000000 -15.5124089416147 0.261252928055975
    3.95000000000000 -15.5654237961859 0.260962589412250
    4.05000000000000 -15.6192689057183 0.260667532170016
    4.15000000000000 -15.6739628818900 0.260367652449936
    4.25000000000000 -15.7295249311044 0.260062843296760
    4.35000000000000 -15.7859748796519 0.259752994562229
    4.45000000000000 -15.8433332002008 0.259437992782458
    4.55000000000000 -15.9016210397021 0.259117721049472
    4.65000000000000 -15.9608602488003 0.258792058876560
    4.75000000000000 -16.0210734128461 0.258460882057095
    4.85000000000000 -16.0822838846175 0.258124062516437
    4.95000000000000 -16.1445158188612 0.257781468156493
    5.05000000000000 -16.2077942087773 0.257432962692520
    5.15000000000000 -16.2721449245786 0.257078405481680
    5.25000000000000 -16.3375947542646 0.256717651342854
    5.35000000000000 -16.4041714467668 0.256350550367179
    5.45000000000000 -16.4719037576278 0.255976947718717
    5.55000000000000 -16.5408214973949 0.255596683424645
    5.65000000000000 -16.6109555829227 0.255209592154297
    5.75000000000000 -16.6823380917941 0.254815502986334
    5.85000000000000 -16.7550023200879 0.254414239163274
    5.95000000000000 -16.8289828437422 0.254005617832552
    6.05000000000000 -16.9043155837811 0.253589449773206
    6.15000000000000 -16.9810378756985 0.253165539107224
    6.24999999999999 -17.0591885433181 0.252733682994515
    6.34999999999999 -17.1388079774774 0.252293671310361
    6.44999999999999 -17.2199382199136 0.251845286304133
    6.54999999999999 -17.3026230527686 0.251388302237962
    6.64999999999999 -17.3869080941629 0.250922485003910
    6.74999999999999 -17.4728409003367 0.250447591718103
    6.84999999999999 -17.5604710749008 0.249963370290129
    6.94999999999999 -17.6498503857932 0.249469558965879
    7.04999999999999 -17.7410328905972 0.248965885841821
    7.14999999999999 -17.8340750709404 0.248452068348541
    7.24999999999999 -17.9290359767680 0.247927812701186
    7.34999999999999 -18.0259773813650 0.247392813314215
    7.44999999999999 -18.1249639480922 0.246846752177638
    7.54999999999999 -18.2260634099032 0.246289298191651
    7.64999999999999 -18.3293467628236 0.245720106456278
    7.74999999999999 -18.4348884747018 0.245138817512312
    7.84999999999999 -18.5427667106850 0.244545056529479
    7.94999999999999 -18.6530635770373 0.243938432437330
    8.04999999999999 -18.7658653850978 0.243318536993953
    8.14999999999999 -18.8812629373886 0.242684943787039
    8.24999999999999 -18.9993518381130 0.242037207161314
    8.34999999999999 -19.1202328305538 0.241374861065691
    8.44999999999999 -19.2440121641850 0.240697417812801
    8.54999999999999 -19.3708019946544 0.240004366742747
    8.64999999999999 -19.5007208201925 0.239295172782030
    8.74999999999999 -19.6338939584505 0.238569274887587
    8.84999999999999 -19.7704540682934 0.237826084364714
    8.94999999999999 -19.9105417216666 0.237064983046369
    9.04999999999998 -20.0543060313400 0.236285321319831
    9.14999999999998 -20.2019053411300 0.235486415985062
    9.24999999999998 -20.3535079861116 0.234667547927154
    9.34999999999998 -20.5092931314019 0.233827959583079
    9.44999999999998 -20.6694516993317 0.232966852180449
    9.54999999999998 -20.8341873962711 0.232083382723110
    9.64999999999998 -21.0037178520621 0.231176660695087
    9.74999999999998 -21.1782758870016 0.230245744450595
    9.84999999999998 -21.3581109236512 0.229289637253396
    9.94999999999998 -21.5434905635143 0.228307282923701
    10.0500000000000 -21.7347023518892 0.227297561044859
    10.1500000000000 -21.9320557580985 0.226259281675160
    10.2500000000000 -22.1358844029335 0.225191179502008
    10.3500000000000 -22.3465485707117 0.224091907366222
    10.4500000000000 -22.5644380500278 0.222960029073104
    10.5500000000000 -22.7899753553419 0.221794011393775
    10.6500000000000 -23.0236193913299 0.220592215144709
    10.7500000000000 -23.2658696338226 0.219352885214999
    10.8500000000000 -23.5172709157203 0.218074139388831
    10.9500000000000 -23.7784189241630 0.216753955784434
    11.0500000000000 -24.0499665373336 0.215390158699174
    11.1500000000000 -24.3326311567117 0.213980402612485
    11.2500000000000 -24.6272032248438 0.212522154052382
    11.3500000000000 -24.9345561617051 0.211012670975476
    11.4500000000000 -25.2556580070500 0.209448979242395
    11.5500000000000 -25.5915851252080 0.207827845687167
    11.6500000000000 -25.9435384171521 0.206145747176727
    11.7500000000000 -26.3128625985589 0.204398834930123
    11.8500000000000 -26.7010692504359 0.202582893210146
    11.9500000000000 -27.1098645423543 0.200693291304614
    12.0500000000000 -27.5411827835408 0.198724927470189
    12.1500000000000 -27.9972272966982 0.196672163204803
    12.2500000000000 -28.4805205654931 0.194528745828458
    12.3500000000000 -28.9939662250478 0.192287716864451
    12.4500000000000 -29.5409263118492 0.189941303096518
    12.5500000000000 -30.1253183623101 0.187480786398367
    12.6500000000000 -30.7517385914477 0.184896347451113
    12.7500000000000 -31.4256197099654 0.182176877238830
    12.8500000000000 -32.1534352756070 0.179309748706383
    12.9500000000000 -32.9429673232241 0.176280539168762
    13.0500000000000 -33.8036611531373 0.173072692048607
    13.1500000000000 -34.7471017926721 0.169667104554607
    13.2500000000000 -35.7876626913580 0.166041626712077
    13.3500000000000 -36.9434016709262 0.162170458439755
    13.4500000000000 -38.2373166913589 0.158023439101391
    13.5500000000000 -39.6991315661274 0.153565247132469
    13.6500000000000 -41.3678686312470 0.148754586219190
    13.7500000000000 -43.2955898277002 0.143543574882692
    13.8500000000000 -45.5528404553763 0.137877881734285
    13.9500000000000 -48.2364202314613 0.131698890769328
    14.0500000000000 -51.4797370483819 0.124950836750371
    14.1500000000000 -55.4637326380914 0.117599354396259
    14.2500000000000 -60.4176376709916 0.109674284526535
    14.3500000000000 -66.5720859890933 0.101356334434598
    14.4500000000000 -73.9713244594502 9.311215399509090E-002
    14.5500000000000 -82.0549683525728 8.577623290423959E-002
    14.6500000000000 -89.3913924266189 8.027016076202308E-002
    14.7500000000000 -94.5791462275406 7.690116903011789E-002
    14.8500000000000 -97.4954382713848 7.516893126088771E-002
    14.9500000000000 -98.9045063149618 7.436974617601523E-002
    15.0500000000000 -99.5331635590226 7.402074369003712E-002
    15.1500000000000 -99.8033903851109 7.387212583560314E-002
    15.2500000000000 -99.9176381016774 7.380954316585181E-002
    15.3500000000000 -99.9655860070175 7.378332242912508E-002
    15.4500000000000 -99.9856404661211 7.377236320578015E-002
    15.5500000000000 -99.9940137476893 7.376778878138694E-002
    15.6500000000000 -99.9975061692676 7.376588106428866E-002
    15.7500000000000 -99.9989617266602 7.376508601444527E-002
    15.8500000000000 -99.9995679810584 7.376475487521311E-002
    15.9500000000000 -99.9998203427897 7.376461703518088E-002
    16.0500000000000 -99.9999253314218 7.376455969057986E-002
    16.1500000000000 -99.9999689843088 7.376453584748865E-002
    16.2500000000000 -99.9999871242153 7.376452593952613E-002
    16.3500000000000 -99.9999946578925 7.376452182465533E-002
    16.4500000000000 -99.9999977848859 7.376452011670157E-002
    16.5500000000000 -99.9999990820438 7.376451940819813E-002
    16.6500000000000 -99.9999996198211 7.376451911446590E-002
    16.7500000000000 -99.9999998426409 7.376451899276247E-002
    16.8500000000000 -99.9999999349075 7.376451894236677E-002
    16.9500000000000 -99.9999999730907 7.376451892151122E-002
    17.0500000000000 -99.9999999888826 7.376451891288573E-002
    17.1500000000000 -99.9999999954098 7.376451890932058E-002
    17.2500000000000 -99.9999999981060 7.376451890784794E-002
    17.3500000000000 -99.9999999992190 7.376451890724001E-002
    17.4500000000000 -99.9999999996782 7.376451890698919E-002
    17.5500000000000 -99.9999999998675 7.376451890688579E-002
    17.6500000000000 -99.9999999999456 7.376451890684314E-002
    17.7500000000000 -99.9999999999778 7.376451890682557E-002
    17.8500000000000 -99.9999999999910 7.376451890681834E-002
    17.9500000000000 -99.9999999999964 7.376451890681539E-002
    18.0500000000000 -99.9999999999986 7.376451890681419E-002
    18.1500000000000 -99.9999999999995 7.376451890681369E-002
    18.2500000000000 -99.9999999999998 7.376451890681351E-002
    18.3500000000000 -100.000000000000 7.376451890681343E-002
    18.4500000000000 -100.000000000000 7.376451890681343E-002
    18.5500000000000 -100.000000000000 7.376451890681343E-002
    18.6500000000000 -100.000000000000 7.376451890681343E-002
    18.7500000000000 -100.000000000000 7.376451890681343E-002
    18.8500000000000 -100.000000000000 7.376451890681343E-002
    18.9500000000000 -100.000000000000 7.376451890681343E-002
    19.0500000000000 -100.000000000000 7.376451890681343E-002
    19.1500000000000 -100.000000000000 7.376451890681343E-002
    19.2500000000000 -100.000000000000 7.376451890681343E-002
    19.3500000000000 -100.000000000000 7.376451890681343E-002
    19.4500000000000 -100.000000000000 7.376451890681343E-002
    19.5500000000000 -100.000000000000 7.376451890681343E-002
    19.6500000000000 -100.000000000000 7.376451890681343E-002
    19.7500000000000 -100.000000000000 7.376451890681343E-002
    19.8500000000000 -100.000000000000 7.376451890681343E-002
    19.9500000000000 -100.000000000000 7.376451890681343E-002

    ci dessous le fichier new_input
    200.0d0 ! nm
    200*1.0d-1 ! deltaz
    -100.0d0 !himp (en bas)
    2.31d-3 !U0 (debit impo en haut)

    ci dessous le fichier input_geo
    0.0d0 !PSimp (en bas)
    0.0d0 !flux0 (debit impo en haut)

    Vous devez creer des fichiers text les nommer exple input_geo.dat et cela va se transformer en fichier dat
    et mettre tout le contenu(fichier dat et compilateur et le programe ) dans un meme dossier
    0
  11. marwamel Messages postés 9 Statut Membre
     
    Ok , si vous pouvez sinon pas grave.
    Cordialement.
    0
  12. PSud Messages postés 1385 Statut Membre 528
     
    Une petite suggestion : remplace le "end" de ton programme principal par :

    end program geophysique
    0
  13. PSud Messages postés 1385 Statut Membre 528
     
    J'ai installé le compilateur, créé les fichiers data. Je déjeune et essaye après.
    0
  14. PSud Messages postés 1385 Statut Membre 528
     
    Voilà le résultat :
    J'ai mis en commentaire les deux lignes Pause que le compilateur n'aimait pas.
    J'ai ensuite compilé sans erreur. J'ai corrigé la première ligne du fichier new-input pour mettre juste 200 puisque nm est un integer et non un flottant (ça générait une erreur à la lecture).
    J'ai lancé le programme qui s'est déroulé sans erreur.
    Sur l'écran j'ai ceci :

    Les chiffres défilent jusqu'à 1000 :

    Le fichier resultats_geophysique.dat est créé, il ne contient que des lignes comme ça :

    Je ne sais pas si c'est le résultat attendu. Comme je te l'ai dit plus haut, je n'ai pas modifié ton programme hormis mettre en commentaire les deux lignes Pause.
    Pour créer le fichier executable, j'ai utilsé GFortran
    0
  15. PSud Messages postés 1385 Statut Membre 528
     
    Je ne sais pas quel compilateur Fortran tu utilises mais si tu veux essayer celui qui m'a servi, il est ici :
    https://gcc.gnu.org/wiki/GFortranBinaries#Windows
    Tu télécharges l'installateur qui est sous le lien en rouge indiqué par la flèche :
    0
  16. PSud Messages postés 1385 Statut Membre 528
     
    Bonjour,
    Alors quelles nouvelles sur le sujet ?
    0
  17. marwamel
     
    Bonjour,
    Je n'ai pas vu vos messages que maintenant.
    Tant que le résultat NAN, c'est qu'il y a une faute dans le programme.
    Mon compilateur est compile_intel_bat.
    Pouvez vous m'aidez encore
    0
    1. PSud Messages postés 1385 Statut Membre 528
       
      Je vais essayer de suivre le programme mais c'est difficile sans savoir ce qu'il fait. As-tu résolu ton problème de compilation, problème que je n'ai pas quand je compile puisque le programme s'exécute même s'il donne un résultat que tu juges faux ?
      0
  18. PSud Messages postés 1385 Statut Membre 528
     
    Sans toucher au programme, je viens de recompiler et exécuter, j'ai ceci au début du fichier résultat :

    Il y a une chose curieuse dans ton programme. Au début tu initialises le tableau z dans une boucle et juste après tu le remplis dans une boucle en lisant les valeurs dans le fichier resultats_touma.dat.
    0
  19. marwamel
     
    Bonjour,
    Pour moi la compilation c'est faite avec le compliateur intel_bat mais l'éxécution ne se fait pas.
    C'est résultats sont trop grandes c'est à dire le prog est faux.
    Ok j'enlève la boucle qui calcule dz(i).
    Il s'agit d'une colonne de sable au cours du drainage pour un milieu poreux non saturé.
    0
  20. PSud Messages postés 1385 Statut Membre 528
     
    Maintenant que j'ai un résultat en chiffre dans le fichier final, j'ai passé le programme plusieurs fois de suite et je trouve à chaque fois des résultats différents avec des chiffres qui de toute façon ne sont pas normaux ( ...E+272). Tout cela traduit soit un dépassement de tableau quelque part dans le programme soit un mauvais passage de paramètre dans un sous-programme. Ceci fait qu'on décode comme un nombre flottant n'importe quelle partie de la mémoire d'où le chiffre grotesque.
    Il faut donc vérifier toutes les boucles et tous les appels aux sous-programmes.
    0
    1. marwamel
       
      Les paramètres des boucles sont bien placés et j'ai leur appel est juste .
      Mais j'ai pas pu trouver la faute.
      0
  • 1
  • 2