Skip to content
Snippets Groups Projects
Commit e8f31bff authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 16/11/2017: IO: TPFILE is now a mandatory argument for OPEN_ll

parent c41bd326
No related branches found
No related tags found
No related merge requests found
...@@ -176,67 +176,62 @@ IF (IRESP/=0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_OPEN_ll','file '//TRIM(TP ...@@ -176,67 +176,62 @@ IF (IRESP/=0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_OPEN_ll','file '//TRIM(TP
SELECT CASE(TPFILE%CTYPE) SELECT CASE(TPFILE%CTYPE)
!Chemistry input files !Chemistry input files
CASE('CHEMINPUT') CASE('CHEMINPUT')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
POSITION='REWIND',STATUS='OLD',ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE) POSITION='REWIND',STATUS='OLD',ACTION=TPFILE%CMODE,MODE='GLOBAL')
!Chemistry tabulation files !Chemistry tabulation files
CASE('CHEMTAB') CASE('CHEMTAB')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE) ACTION=TPFILE%CMODE,MODE='GLOBAL')
!GPS files !GPS files
CASE('GPS') CASE('GPS')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
ACTION=TPFILE%CMODE,MODE='SPECIFIC',TPFILE=TPFILE) ACTION=TPFILE%CMODE,MODE='SPECIFIC')
!Meteo files !Meteo files
CASE('METEO') CASE('METEO')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='UNFORMATTED', & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='UNFORMATTED', &
ACTION=TPFILE%CMODE,MODE='GLOBAL',RECL=100000000,TPFILE=TPFILE) ACTION=TPFILE%CMODE,MODE='GLOBAL',RECL=100000000)
!Namelist files !Namelist files
CASE('NML') CASE('NML')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
DELIM='QUOTE',MODE='GLOBAL',TPFILE=TPFILE) DELIM='QUOTE',MODE='GLOBAL')
!OUTPUTLISTING files !OUTPUTLISTING files
CASE('OUTPUTLISTING') CASE('OUTPUTLISTING')
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE) ACTION=TPFILE%CMODE,MODE='GLOBAL')
!SURFACE_DATA files !SURFACE_DATA files
CASE('SURFACE_DATA') CASE('SURFACE_DATA')
IF (TPFILE%CFORM=='FORMATTED') THEN IF (TPFILE%CFORM=='FORMATTED') THEN
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
FORM=TPFILE%CFORM, & FORM=TPFILE%CFORM,MODE='GLOBAL')
MODE='GLOBAL',TPFILE=TPFILE)
ELSE IF (TPFILE%CACCESS=='DIRECT') THEN ELSE IF (TPFILE%CACCESS=='DIRECT') THEN
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
FORM=TPFILE%CFORM,ACCESS=TPFILE%CACCESS,RECL=TPFILE%NRECL, & FORM=TPFILE%CFORM,ACCESS=TPFILE%CACCESS,RECL=TPFILE%NRECL,MODE='GLOBAL')
MODE='GLOBAL',TPFILE=TPFILE)
ELSE ELSE
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
FORM=TPFILE%CFORM, & FORM=TPFILE%CFORM,MODE='GLOBAL')
MODE='GLOBAL',TPFILE=TPFILE)
END IF END IF
!Text files !Text files
CASE('TXT') CASE('TXT')
IF(TPFILE%NRECL>0) THEN IF(TPFILE%NRECL>0) THEN
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS, & FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,RECL=TPFILE%NRECL,MODE='GLOBAL')
RECL=TPFILE%NRECL,MODE='GLOBAL',TPFILE=TPFILE)
ELSE ELSE
CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, & CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS, & FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,MODE='GLOBAL')
MODE='GLOBAL',TPFILE=TPFILE)
END IF END IF
...@@ -245,8 +240,8 @@ SELECT CASE(TPFILE%CTYPE) ...@@ -245,8 +240,8 @@ SELECT CASE(TPFILE%CTYPE)
IF(TPFILE%CTYPE/='OUTPUT') THEN IF(TPFILE%CTYPE/='OUTPUT') THEN
CALL IO_FILE_ADD2LIST(TZFILE_DES,TRIM(TPFILE%CNAME)//'.des','DES',TPFILE%CMODE,OOLD=.TRUE.) !OOLD=T because the file may already be in the list CALL IO_FILE_ADD2LIST(TZFILE_DES,TRIM(TPFILE%CNAME)//'.des','DES',TPFILE%CMODE,OOLD=.TRUE.) !OOLD=T because the file may already be in the list
CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','OPEN_ll for '//TRIM(TPFILE%CNAME)//'.des') CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','OPEN_ll for '//TRIM(TPFILE%CNAME)//'.des')
CALL OPEN_ll(UNIT=TZFILE_DES%NLU,FILE=TRIM(TPFILE%CNAME)//'.des',FORM='FORMATTED',ACTION=TPFILE%CMODE,DELIM& CALL OPEN_ll(TPFILE,UNIT=TZFILE_DES%NLU,FILE=TRIM(TPFILE%CNAME)//'.des',FORM='FORMATTED',ACTION=TPFILE%CMODE, &
& ='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO,TPFILE=TPFILE) DELIM='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO)
TZFILE_DES%LOPENED = .TRUE. TZFILE_DES%LOPENED = .TRUE.
TZFILE_DES%NOPEN_CURRENT = TZFILE_DES%NOPEN_CURRENT + 1 TZFILE_DES%NOPEN_CURRENT = TZFILE_DES%NOPEN_CURRENT + 1
TZFILE_DES%NOPEN = TZFILE_DES%NOPEN + 1 TZFILE_DES%NOPEN = TZFILE_DES%NOPEN + 1
......
...@@ -203,7 +203,9 @@ CONTAINS ...@@ -203,7 +203,9 @@ CONTAINS
END SUBROUTINE INITIO_ll END SUBROUTINE INITIO_ll
SUBROUTINE OPEN_ll(UNIT, & SUBROUTINE OPEN_ll(&
TPFILE, &
UNIT, &
FILE, & FILE, &
MODE, & MODE, &
LFIPAR, & LFIPAR, &
...@@ -220,8 +222,7 @@ CONTAINS ...@@ -220,8 +222,7 @@ CONTAINS
PAD, & PAD, &
KNB_PROCIO,& KNB_PROCIO,&
KMELEV,& KMELEV,&
OPARALLELIO,& OPARALLELIO)
TPFILE)
#if defined(MNH_IOCDF4) #if defined(MNH_IOCDF4)
USE MODD_NETCDF, ONLY:IDCDF_KIND USE MODD_NETCDF, ONLY:IDCDF_KIND
USE MODE_NETCDF USE MODE_NETCDF
...@@ -229,6 +230,7 @@ CONTAINS ...@@ -229,6 +230,7 @@ CONTAINS
USE MODD_IO_ll USE MODD_IO_ll
USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST, IO_FILE_FIND_BYNAME USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST, IO_FILE_FIND_BYNAME
TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE
INTEGER, INTENT(OUT) :: UNIT !! Different from fortran OPEN INTEGER, INTENT(OUT) :: UNIT !! Different from fortran OPEN
CHARACTER(len=*),INTENT(IN), OPTIONAL :: FILE CHARACTER(len=*),INTENT(IN), OPTIONAL :: FILE
CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE
...@@ -249,7 +251,6 @@ CONTAINS ...@@ -249,7 +251,6 @@ CONTAINS
INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV
LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO
!JUANZ !JUANZ
TYPE(TFILEDATA), INTENT(INOUT), OPTIONAL :: TPFILE
! !
! local var ! local var
! !
...@@ -653,8 +654,6 @@ CONTAINS ...@@ -653,8 +654,6 @@ CONTAINS
TZFD%FLU = -1 TZFD%FLU = -1
END IF END IF
IF (TZFD%NB_PROCIO .GT. 1 ) THEN IF (TZFD%NB_PROCIO .GT. 1 ) THEN
IF (.NOT.PRESENT(TPFILE)) CALL PRINT_MSG(NVERB_WARNING,'IO','OPEN_ll','TPFILE not provided for IO_ZSPLIT case for file '&
//TRIM(FILE))
DO ifile=0,TZFD%NB_PROCIO-1 DO ifile=0,TZFD%NB_PROCIO-1
irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO) irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO)
write(cfile ,'(".Z",i3.3)') ifile+1 write(cfile ,'(".Z",i3.3)') ifile+1
...@@ -668,13 +667,11 @@ CONTAINS ...@@ -668,13 +667,11 @@ CONTAINS
TZFD_IOZ%FLU = -1 TZFD_IOZ%FLU = -1
TZFD_IOZ%PARAM =>LFIPAR TZFD_IOZ%PARAM =>LFIPAR
IF (PRESENT(TPFILE)) THEN CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.)
CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.)
IF (IRESP/=0) THEN !File not yet in filelist => add it (nothing to do if already in list) IF (IRESP/=0) THEN !File not yet in filelist => add it (nothing to do if already in list)
CALL IO_FILE_ADD2LIST(TZSPLITFILE,TRIM(TPFILE%CNAME)//TRIM(CFILE),TPFILE%CTYPE,TPFILE%CMODE, & CALL IO_FILE_ADD2LIST(TZSPLITFILE,TRIM(TPFILE%CNAME)//TRIM(CFILE),TPFILE%CTYPE,TPFILE%CMODE, &
KLFINPRAR=TPFILE%NLFINPRAR,KLFITYPE=TPFILE%NLFITYPE,KLFIVERB=TPFILE%NLFIVERB) KLFINPRAR=TPFILE%NLFINPRAR,KLFITYPE=TPFILE%NLFITYPE,KLFIVERB=TPFILE%NLFIVERB)
END IF
END IF END IF
IF ( irank_procio .EQ. ISP ) THEN IF ( irank_procio .EQ. ISP ) THEN
...@@ -743,7 +740,7 @@ CONTAINS ...@@ -743,7 +740,7 @@ CONTAINS
!KNINAR = ININAR8 !KNINAR = ININAR8
END IF END IF
IF (PRESENT(TPFILE)) CALL UPDATE_METADATA(TZSPLITFILE) CALL UPDATE_METADATA(TZSPLITFILE)
ENDIF ENDIF
ENDDO ENDDO
...@@ -751,6 +748,7 @@ CONTAINS ...@@ -751,6 +748,7 @@ CONTAINS
END SELECT END SELECT
print *,'PW: TPFILE%CNAME=',TPFILE%CNAME,'master,multimasters=',TPFILE%LMASTER,TPFILE%LMULTIMASTERS
!PW: not done here because TZFDLFI%CDF not yet set !PW: not done here because TZFDLFI%CDF not yet set
! CALL UPDATE_METADATA(TPFILE) ! CALL UPDATE_METADATA(TPFILE)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment