48 INTEGER ERR,NELEM,ECKEN,NDUM,I,J,NBV1,NBV2,PARAM(10)
49 INTEGER NPLAN,NPOIN2,NPROC,I_S,I_SP,I_LEN,IDUM,NPTFR,NSEG2,MBND
50 INTEGER IYEAR,IMONTH,IDAY,IHOUR,IMIN,ISEC
52 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: LIHBOR
53 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: NBOR
54 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: NBOR0,LIHBOR0
57 REAL,
DIMENSION(:) ,
ALLOCATABLE :: F
59 DOUBLE PRECISION REFER_DAY,JULIAN_DAY
60 DOUBLE PRECISION JULTIM
66 CHARACTER(LEN=50) RESPAR
67 CHARACTER(LEN=11) EXTENS
68 CHARACTER(LEN=30) CONLIM
71 INTEGER ITSTRT,ITSTOP,NSTEPA
72 INTEGER MARDAT(3),MARTIM(3)
73 CHARACTER(LEN=PATH_LEN) TITRE
74 CHARACTER(LEN=PATH_LEN) NOMGEO,NOMLIM
75 CHARACTER(LEN=PATH_LEN) NOMSOU,NOMMAB,NOMCOU,NOMSAL,NOMTEM
76 CHARACTER(LEN=PATH_LEN) NOMINI,NOMVEB,NOMMAF,NOMVEL,NOMVIS
77 LOGICAL SALI_DEL,TEMP_DEL
78 LOGICAL VELO_DEL,DIFF_DEL
86 WRITE(
lu,*)
'I AM GREDELHYD, COUSIN OF GRETEL FROM BAW HAMBURG' 89 WRITE (
lu, advance=
'NO',
90 & fmt=
'(/,'' GLOBAL GEOMETRY FILE: '')')
97 WRITE (
lu, advance=
'NO', fmt=
'(/,'' RESULT FILE: '')')
101 WRITE (
lu,advance=
'NO',fmt=
'(/,'' NUMBER OF PROCESSORS: '')')
104 INQUIRE (file=geo,exist=is)
106 WRITE (
lu,*)
'FILE DOES NOT EXIST: ', geo
114 IF(res(i_sp-i:i_sp-i) .NE.
' ')
EXIT 120 OPEN(2,file=geo,form=
'UNFORMATTED',status=
'OLD',err=990)
122 READ(2,err=990) nbv1,nbv2
127 990
WRITE(
lu,*)
'ERROR WHEN OPENING OR READING FILE: ',geo
132 READ(2) (param(i),i=1,10)
133 IF(param(10).EQ.1)
READ(2) (param(i),i=1,6)
137 OPEN(3,file=res,form=
'FORMATTED',err=991)
139 991
WRITE(
lu,*)
'ERROR WHEN OPENING FILE: ',res
148 respar=res(1:i_len) // extens(nproc-1,0)
150 INQUIRE (file=respar,exist=is)
152 WRITE (
lu,*)
'FILE DOES NOT EXIST: ', respar
153 WRITE (
lu,*)
'CHECK THE NUMBER OF PROCESSORS' 154 WRITE (
lu,*)
'AND THE RESULT FILE CORE NAME' 159 OPEN(4,file=respar,form=
'FORMATTED',err=994)
161 994
WRITE(
lu,*)
'ERROR WHEN OPENING FILE: ',respar
169 ALLOCATE(f(nplan),stat=err)
170 CALL check_allocate(err,
'F')
174 READ(2) nelem,npoin2,ecken,ndum
175 WRITE(
lu,*)
'4 PARAMETERS IN GEOMETRY FILE' 176 WRITE(
lu,*)
'NELEM=', nelem
177 WRITE(
lu,*)
'NPOIN2=', npoin2
178 WRITE(
lu,*)
'ECKEN=', ecken
179 WRITE(
lu,*)
'NDUM=', ndum
189 OPEN(4,file=conlim,form=
'FORMATTED',err=996)
191 996
WRITE(
lu,*)
'ERROR WHEN OPENING FILE: ',conlim
196 ALLOCATE(lihbor0(npoin2),stat=err)
197 CALL check_allocate(err,
'LIHBOR')
198 ALLOCATE(nbor0(npoin2),stat=err)
199 CALL check_allocate(err,
'NBOR')
201 READ(4,*,end=989) lihbor0(i),idum,idum,rdum,rdum,rdum,rdum,
202 & idum,rdum,rdum,rdum,nbor0(i),idum
208 ALLOCATE(lihbor(nptfr),stat=err)
209 CALL check_allocate(err,
'LIHBOR')
210 ALLOCATE(nbor(nptfr),stat=err)
211 CALL check_allocate(err,
'NBOR')
217 lihbor(i) = lihbor0(i)
218 IF (lihbor(i).NE.2)
THEN 225 nseg2 = (3*nelem+nptfr)/2
228 OPEN(4,file=respar,form=
'FORMATTED',err=984)
230 984
WRITE(
lu,*)
'ERROR WHEN OPENING FILE: ',respar
237 READ(4,
'(A)')titre(1:j)
238 READ(4,
'(I4)')mardat(1)
239 READ(4,
'(I2)')mardat(2)
240 READ(4,
'(I2)')mardat(3)
241 READ(4,
'(I2)')martim(1)
242 READ(4,
'(I2)')martim(2)
243 READ(4,
'(I2)')martim(3)
244 READ(4,
'(I14)')itstrt
245 READ(4,
'(I14)')itstop
246 READ(4,
'(I14)')nstepa
250 &
"task full-coupling " 262 &
"geometry finite-elements " 266 &
"horizontal-aggregation no " 268 &
"minimum-vert-diffusion-used no " 270 &
"vertical-diffusion calculated " 274 IF ( j .GT. 40 )
THEN 275 WRITE (3,
'(A,A,A)' )
" '",titre(1:40),
"'" 276 IF ( j .GT. 80 )
THEN 277 WRITE (3,
'(A,A,A)' )
" '",titre(41:80),
"'" 278 IF ( j .GT. 120 )
THEN 279 WRITE (3,
'(A,A,A)' )
" '",titre(81:120),
"'" 281 WRITE (3,
'(A,A,A)' )
" '",titre(81:j),
"'" 284 WRITE (3,
'(A,A,A)' )
" '",titre(41:j),
"'" 289 WRITE (3,
'(A,A,A)' )
" '",titre(1:j),
"'" 303 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
304 &
"reference-time '",mardat(1),mardat(2),mardat(3),
305 & martim(1),martim(2),martim(3),
"'" 306 refer_day = jultim(mardat(1),mardat(2),mardat(3),
307 & martim(1),martim(2),martim(3),0.d0)
308 julian_day = refer_day + dble(itstrt)/(86400.d0*36525.d0)
309 CALL gregtim( julian_day, iyear, imonth, iday,
310 & ihour, imin, isec )
311 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
312 &
"hydrodynamic-start-time '",iyear,imonth,iday,
313 & ihour,imin ,isec,
"'" 314 julian_day = refer_day + dble(itstop)/(86400.d0*36525.d0)
315 CALL gregtim( julian_day, iyear, imonth, iday,
316 & ihour, imin, isec )
317 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
318 &
"hydrodynamic-stop-time '",iyear,imonth,iday,
319 & ihour,imin ,isec,
"'" 320 WRITE(3,
'(A,I14,A)' )
321 &
"hydrodynamic-timestep '",nstepa,
"'" 322 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
323 &
"conversion-ref-time '",mardat(1),mardat(2),mardat(3),
324 & martim(1),martim(2),martim(3),
"'" 325 julian_day = refer_day + dble(itstrt)/(86400.d0*36525.d0)
326 CALL gregtim( julian_day, iyear, imonth, iday,
327 & ihour, imin, isec )
328 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
329 &
"conversion-start-time '",iyear,imonth,iday,
330 & ihour,imin ,isec,
"'" 331 julian_day = refer_day + dble(itstop)/(86400.d0*36525.d0)
332 CALL gregtim( julian_day, iyear, imonth, iday,
333 & ihour, imin, isec )
334 WRITE(3,
'(A,I4.4,I2.2,I2.2,I2.2,I2.2,I2.2,A)' )
335 &
"conversion-stop-time '",iyear,imonth,iday,
336 & ihour,imin ,isec,
"'" 337 WRITE(3,
'(A,I14,A)' )
338 &
"conversion-timestep '",nstepa,
"'" 340 &
"grid-cells-first-direction ",npoin2
342 &
"grid-cells-second-direction ",nseg2+mbnd,
" # nr of exchanges!" 344 &
"number-hydrodynamic-layers ",nplan
346 &
"number-water-quality-layers",nplan
348 READ(4,
'(A)')nomgeo(1:j)
350 &
"hydrodynamic-file '",nomgeo(1:j),
"'" 352 &
"aggregation-file none " 354 &
"grid-indices-file '",nomgeo(1:j),
"'" 356 READ(4,
'(A)')nomlim(1:j)
358 &
"grid-coordinates-file '",nomlim(1:j),
"'" 360 READ(4,
'(A)') nomsou(1:j)
363 IF((nomsou(i:i).NE.
'/').AND.(nomsou(i:i).NE.
'\')) THEN 370 & "volumes-file '",NOMSOU(I+1:J),"'" 372 READ(4,'(a)
') NOMMAB(1:J) 375 .NE.
IF((NOMMAB(I:I)'/.AND..NE.
')(NOMMAB(I:I)'))
THEN 382 &
"areas-file '",nommab(i+1:j),
"'" 384 READ(4,
'(A)') nomcou(1:j)
387 IF((nomcou(i:i).NE.
'/').AND.(nomcou(i:i).NE.
'\')) THEN 394 & "flows-file '",NOMCOU(I+1:J),"'" 396 READ(4,'(a)
') NOMVEB(1:J) 399 .NE.
IF((NOMVEB(I:I)'/.AND..NE.
')(NOMVEB(I:I)'))
THEN 406 &
"pointers-file '",nomveb(i+1:j),
"'" 408 READ(4,
'(A)')nommaf(1:j)
411 IF((nommaf(i:i).NE.
'/').AND.(nommaf(i:i).NE.
'\')) THEN 418 & "lengths-file '",NOMMAF(I+1:J),"'" 419 READ(4,'(l1)
') SALI_DEL 422 READ(4,'(a)
') NOMSAL(1:J) 425 .NE.
IF((NOMSAL(I:I)'/.AND..NE.
')(NOMSAL(I:I)'))
THEN 432 &
"salinity-file '",nomsal(i+1:j),
"'" 435 &
"salinity-file none " 437 READ(4,
'(L1)') temp_del
440 READ(4,
'(A)') nomtem(1:j)
443 IF((nomtem(i:i).NE.
'/').AND.(nomtem(i:i).NE.
'\')) THEN 450 & "temperature-file '",NOMTEM(I+1:J),"'" 453 & "temperature-file none " 455 READ(4,'(l1)
') DIFF_DEL 458 READ(4,'(a)
') NOMVIS(1:J) 461 .NE.
IF((NOMVIS(I:I)'/.AND..NE.
')(NOMVIS(I:I)'))
THEN 468 &
"vert-diffusion-file '",nomvis(i+1:j),
"'" 471 &
"vert-diffusion-file none " 473 READ(4,
'(L1)') velo_del
476 READ(4,
'(A)') nomvel(1:j)
479 IF((nomvel(i:i).NE.
'/').AND.(nomvel(i:i).NE.
'\')) THEN 486 & "velocity-file '",NOMVEL(I+1:J),"'" 489 & "velocity-file none " 492 READ(4,'(a)
') NOMINI(1:J) 495 .NE.
IF((NOMINI(I:I)'/.AND..NE.
')(NOMINI(I:I)'))
THEN 502 &
"surfaces-file '",nomini(i+1:j),
"'" 505 &
"total-grid-file none " 507 &
"discharges-file none " 509 &
"chezy-coefficients-file none " 511 &
"shear-stresses-file none " 513 &
"walking-discharges-file none " 514 IF ( nplan .GT. 1 )
THEN 516 &
"minimum-vert-diffusion " 518 &
" upper-layer 0.0000E+00 " 520 &
" lower-layer 0.0000E+00 " 522 &
" interface-depth 0.0000E+00 " 524 &
"end-minimum-vert-diffusion " 527 &
"constant-dispersion " 529 &
" first-direction 0.0000 " 531 &
" second-direction 0.0000 " 533 &
" third-direction 0.0000 " 535 &
"end-constant-dispersion " 537 &
"hydrodynamic-layers " 539 READ(4,
'(F10.4)')f(i)
542 WRITE(3,
'(F10.4)' ) f(i)
545 &
"end-hydrodynamic-layers " 547 &
"water-quality-layers " 549 WRITE(3,
'(F10.4)' ) 1.0
552 &
"end-water-quality-layers " 558 WRITE(
lu,*)
'END OF PROGRAM '
subroutine gregtim(JULTIM, YEAR, MONTH, DAY, HOUR, MINU, SEC)