Erreur dans Fortran

Bonjour,
Comment resoudre cette erreur dans Fortran:
The variable remplissage_mat is being used without being defined ?
Merci d'avance.

22 réponses

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. 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
    1. Bonjour,
      Il me dit que la procédure remplissage_matrice est utilisé sans être définie
      0
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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
                  1. 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
                    1. Ok , si vous pouvez sinon pas grave.
                      Cordialement.
                      0
                      1. Une petite suggestion : remplace le "end" de ton programme principal par :

                        end program geophysique
                        0
                        1. J'ai installé le compilateur, créé les fichiers data. Je déjeune et essaye après.
                          0
                          1. 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
                            1. Bonjour,
                              Alors quelles nouvelles sur le sujet ?
                              0
                              1. 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. 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
                              2. 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
                                1. 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
                                  1. 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. 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