22 réponses
- 1
- 2
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.
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
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Exemple : tu écris A = B alors que tu n'as jamais défini la valeur de B.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionCi 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
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
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.
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 ?
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
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
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 :


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.

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é.
Il faut donc vérifier toutes les boucles et tous les appels aux sous-programmes.
- 1
- 2