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

Philippe 23/11/2017: IO: removed LFIPARAM data structure

parent 6cb7890d
No related branches found
No related tags found
No related merge requests found
...@@ -46,10 +46,6 @@ INTEGER, SAVE :: NIO_ABORT_LEVEL = NVERB_ERROR ! Level of IO error necessary t ...@@ -46,10 +46,6 @@ INTEGER, SAVE :: NIO_ABORT_LEVEL = NVERB_ERROR ! Level of IO error necessary t
INTEGER, SAVE :: NGEN_VERB = NVERB_WARNING ! Verbosity level for 'GEN' (generic) messages INTEGER, SAVE :: NGEN_VERB = NVERB_WARNING ! Verbosity level for 'GEN' (generic) messages
INTEGER, SAVE :: NGEN_ABORT_LEVEL = NVERB_ERROR ! Level of 'GEN' error necessary to force stop of application INTEGER, SAVE :: NGEN_ABORT_LEVEL = NVERB_ERROR ! Level of 'GEN' error necessary to force stop of application
TYPE LFIPARAM
INTEGER :: FITYP ! FM File Type (used in FMCLOS_ll)
END TYPE LFIPARAM
!Structure containing one pointer to a file !Structure containing one pointer to a file
!Useful to create arrays of pointers to files !Useful to create arrays of pointers to files
TYPE TFILE_ELT TYPE TFILE_ELT
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
!----------------------------------------------------------------- !-----------------------------------------------------------------
MODULE MODE_FD_ll MODULE MODE_FD_ll
USE MODD_IO_ll, ONLY : LFIPARAM
USE MODD_NETCDF, ONLY : IOCDF USE MODD_NETCDF, ONLY : IOCDF
IMPLICIT NONE IMPLICIT NONE
...@@ -28,7 +27,6 @@ TYPE FD_ll ...@@ -28,7 +27,6 @@ TYPE FD_ll
INTEGER :: COMM ! Local MPI communicator INTEGER :: COMM ! Local MPI communicator
CHARACTER(LEN=15) :: MODE ! Flag mode acces ('distrib','global','specific') CHARACTER(LEN=15) :: MODE ! Flag mode acces ('distrib','global','specific')
INTEGER :: OWNER ! I/O Processor number INTEGER :: OWNER ! I/O Processor number
TYPE(LFIPARAM), POINTER :: PARAM
!JUANZ !JUANZ
INTEGER :: NB_PROCIO = 1 INTEGER :: NB_PROCIO = 1
!JUANZ !JUANZ
......
...@@ -74,7 +74,6 @@ IF (GSMONOPROC) THEN ! sequential execution ...@@ -74,7 +74,6 @@ IF (GSMONOPROC) THEN ! sequential execution
TZFD=>NEWFD() TZFD=>NEWFD()
TZFD%NAME = HFILEM TZFD%NAME = HFILEM
TZFD%MODE = 'GLOBAL' TZFD%MODE = 'GLOBAL'
NULLIFY(TZFD%PARAM)
TZFD%OWNER = ISIOP TZFD%OWNER = ISIOP
TZFD%FLU = IONEWFLU() TZFD%FLU = IONEWFLU()
TZFD%COMM = NMNH_COMM_WORLD TZFD%COMM = NMNH_COMM_WORLD
...@@ -325,8 +324,8 @@ IF (PRESENT(KRESP)) KRESP = IRESP ...@@ -325,8 +324,8 @@ IF (PRESENT(KRESP)) KRESP = IRESP
END SUBROUTINE IO_FILE_OPEN_ll END SUBROUTINE IO_FILE_OPEN_ll
SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO) SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO)
USE MODD_IO_ll, ONLY : ISP,ISTDOUT,LFIPARAM,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA USE MODD_IO_ll, ONLY : ISP,ISTDOUT,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA
USE MODE_FD_ll, ONLY : FD_ll,GETFD,JPFINL USE MODE_FD_ll, ONLY : JPFINL
USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO
!JUANZ !JUANZ
USE MODD_CONFZ,ONLY : NB_PROCIO_R,NB_PROCIO_W USE MODD_CONFZ,ONLY : NB_PROCIO_R,NB_PROCIO_W
...@@ -345,14 +344,11 @@ INTEGER :: IFTYPE ! type of FM-file ...@@ -345,14 +344,11 @@ INTEGER :: IFTYPE ! type of FM-file
INTEGER :: IROWF,IRESP,IFMFNL INTEGER :: IROWF,IRESP,IFMFNL
CHARACTER(LEN=7) :: YACTION ! Action upon the file ('READ' or 'WRITE') CHARACTER(LEN=7) :: YACTION ! Action upon the file ('READ' or 'WRITE')
CHARACTER(LEN=28) :: YFILEM ! name of the file CHARACTER(LEN=28) :: YFILEM ! name of the file
CHARACTER(LEN=JPFINL) :: YFNDES,YFNLFI
CHARACTER(LEN=8) :: YRESP CHARACTER(LEN=8) :: YRESP
LOGICAL :: GSTATS LOGICAL :: GSTATS
LOGICAL, SAVE :: GSFIRST=.TRUE. LOGICAL, SAVE :: GSFIRST=.TRUE.
TYPE(LFIPARAM), POINTER :: TZPARA
LOGICAL :: GNAMFI,GFATER,GNEWFI LOGICAL :: GNAMFI,GFATER,GNEWFI
INTEGER :: IERR INTEGER :: IERR
TYPE(FD_ll), POINTER :: TZFDLFI
!JUAN !JUAN
INTEGER(KIND=LFI_INT) :: IRESOU,INUMBR8 INTEGER(KIND=LFI_INT) :: IRESOU,INUMBR8
INTEGER(KIND=LFI_INT) :: IMELEV,INPRAR INTEGER(KIND=LFI_INT) :: IMELEV,INPRAR
...@@ -412,22 +408,17 @@ ELSEIF (IROWF.GT.IFMFNL) THEN ...@@ -412,22 +408,17 @@ ELSEIF (IROWF.GT.IFMFNL) THEN
GOTO 1000 GOTO 1000
ENDIF ENDIF
YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi')
ALLOCATE(TZPARA)
TZPARA%FITYP = TPFILE%NLFITYPE
SELECT CASE (YACTION) SELECT CASE (YACTION)
CASE('READ') CASE('READ')
INB_PROCIO = NB_PROCIO_R INB_PROCIO = NB_PROCIO_R
CASE('WRITE') CASE('WRITE')
INB_PROCIO = NB_PROCIO_W INB_PROCIO = NB_PROCIO_W
END SELECT END SELECT
CALL OPEN_ll(TPFILE,STATUS="UNKNOWN",MODE='IO_ZSPLIT',LFIPAR=TZPARA,IOSTAT=IRESP, & CALL OPEN_ll(TPFILE,STATUS="UNKNOWN",MODE='IO_ZSPLIT',IOSTAT=IRESP, &
KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO) KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO)
IF (IRESP /= 0) GOTO 1000 IF (IRESP /= 0) GOTO 1000
TZFDLFI=>GETFD(YFNLFI)
IF (ISP == TPFILE%NMASTER_RANK) THEN IF (ISP == TPFILE%NMASTER_RANK) THEN
! Proc I/O case ! Proc I/O case
IF (GSFIRST) THEN IF (GSFIRST) THEN
...@@ -480,7 +471,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN ...@@ -480,7 +471,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN
CALL LFIOUV(IRESOU, & CALL LFIOUV(IRESOU, &
INUMBR8, & INUMBR8, &
GNAMFI8, & GNAMFI8, &
YFNLFI, & TRIM(YFILEM)//'.lfi', &
"UNKNOWN", & "UNKNOWN", &
GFATER8, & GFATER8, &
GSTATS8, & GSTATS8, &
...@@ -500,12 +491,11 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN ...@@ -500,12 +491,11 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN
GNEWFI=(ININAR==0).OR.(IMELEV<2) GNEWFI=(ININAR==0).OR.(IMELEV<2)
IF (.NOT.GNEWFI) THEN IF (.NOT.GNEWFI) THEN
WRITE (ISTDOUT,*) ' file ',YFNLFI,' previously& WRITE (ISTDOUT,*) ' file ',TRIM(YFILEM)//'.lfi',' previously created with LFI'
& created with LFI'
ENDIF ENDIF
END IF END IF
! Broadcast ERROR ! Broadcast ERROR
CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TZFDLFI%COMM,IERR) CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
IF (IRESP /= 0) GOTO 1000 IF (IRESP /= 0) GOTO 1000
...@@ -665,8 +655,7 @@ SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO) ...@@ -665,8 +655,7 @@ SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO)
!! J.Escobar 18/10/10 bug with PGI compiler on ADJUSTL !! J.Escobar 18/10/10 bug with PGI compiler on ADJUSTL
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
USE MODD_IO_ll, ONLY : ISP,TFILEDATA USE MODD_IO_ll, ONLY : ISP,TFILEDATA
!USE MODE_FD_ll, ONLY : FD_ll,GETFD,JPFINL USE MODE_FD_ll, ONLY : JPFINL
USE MODE_FD_ll
USE MODE_IO_ll, ONLY : CLOSE_ll,UPCASE USE MODE_IO_ll, ONLY : CLOSE_ll,UPCASE
#if !defined(MNH_SGI) #if !defined(MNH_SGI)
USE MODI_SYSTEM_MNH USE MODI_SYSTEM_MNH
...@@ -682,7 +671,7 @@ LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO ...@@ -682,7 +671,7 @@ LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO
INTEGER ::IRESP,IROWF,IFMFNL INTEGER ::IRESP,IROWF,IFMFNL
CHARACTER(LEN=28) :: YFILEM ! name of the file CHARACTER(LEN=28) :: YFILEM ! name of the file
CHARACTER(LEN=7) ::YSTATU CHARACTER(LEN=7) ::YSTATU
CHARACTER(LEN=JPFINL)::YFNDES,YFNLFI CHARACTER(LEN=JPFINL)::YFNLFI
LOGICAL ::GSTATU LOGICAL ::GSTATU
CHARACTER(LEN=8) :: YRESP CHARACTER(LEN=8) :: YRESP
CHARACTER(LEN=10) ::YCPIO CHARACTER(LEN=10) ::YCPIO
...@@ -690,10 +679,7 @@ CHARACTER(LEN=14) ::YTRANS ...@@ -690,10 +679,7 @@ CHARACTER(LEN=14) ::YTRANS
CHARACTER(LEN=100) ::YCOMMAND CHARACTER(LEN=100) ::YCOMMAND
INTEGER :: IERR, IFITYP INTEGER :: IERR, IFITYP
INTEGER, SAVE :: ICPT=0 INTEGER, SAVE :: ICPT=0
TYPE(FD_ll), POINTER :: TZFDLFI
!JUAN
INTEGER(KIND=LFI_INT) :: IRESP8 INTEGER(KIND=LFI_INT) :: IRESP8
!JUAN
LOGICAL :: GPARALLELIO LOGICAL :: GPARALLELIO
YFILEM = TPFILE%CNAME YFILEM = TPFILE%CNAME
...@@ -735,8 +721,6 @@ ENDIF ...@@ -735,8 +721,6 @@ ENDIF
YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi') YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi')
TZFDLFI=>GETFD(YFNLFI)
IF (ISP == TPFILE%NMASTER_RANK) THEN IF (ISP == TPFILE%NMASTER_RANK) THEN
IF (TPFILE%NLFIFLU > 0) THEN IF (TPFILE%NLFIFLU > 0) THEN
CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU) CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU)
...@@ -752,7 +736,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN ...@@ -752,7 +736,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN
#else #else
YTRANS='fujitransfer.x' YTRANS='fujitransfer.x'
#endif #endif
IFITYP = TZFDLFI%PARAM%FITYP IFITYP = TPFILE%NLFITYPE
SELECT CASE (IFITYP) SELECT CASE (IFITYP)
CASE(:-1) CASE(:-1)
...@@ -786,10 +770,9 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN ...@@ -786,10 +770,9 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN
END IF END IF
END IF END IF
500 CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TZFDLFI%COMM,IERR) 500 CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
IF (IRESP /= 0) GOTO 1000 IF (IRESP /= 0) GOTO 1000
DEALLOCATE(TZFDLFI%PARAM)
CALL CLOSE_ll(YFNLFI,IOSTAT=IRESP,STATUS=YSTATU,OPARALLELIO=GPARALLELIO) CALL CLOSE_ll(YFNLFI,IOSTAT=IRESP,STATUS=YSTATU,OPARALLELIO=GPARALLELIO)
1000 CONTINUE 1000 CONTINUE
......
...@@ -206,7 +206,6 @@ CONTAINS ...@@ -206,7 +206,6 @@ CONTAINS
SUBROUTINE OPEN_ll(& SUBROUTINE OPEN_ll(&
TPFILE, & TPFILE, &
MODE, & MODE, &
LFIPAR, &
COMM, & COMM, &
STATUS, & STATUS, &
ACCESS, & ACCESS, &
...@@ -229,7 +228,6 @@ CONTAINS ...@@ -229,7 +228,6 @@ CONTAINS
TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE
CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE
TYPE(LFIPARAM), POINTER, OPTIONAL :: LFIPAR
CHARACTER(len=*),INTENT(IN), OPTIONAL :: STATUS CHARACTER(len=*),INTENT(IN), OPTIONAL :: STATUS
CHARACTER(len=*),INTENT(IN), OPTIONAL :: ACCESS CHARACTER(len=*),INTENT(IN), OPTIONAL :: ACCESS
INTEGER, INTENT(OUT) :: IOSTAT INTEGER, INTENT(OUT) :: IOSTAT
...@@ -240,11 +238,9 @@ CONTAINS ...@@ -240,11 +238,9 @@ CONTAINS
CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM
CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD
INTEGER, INTENT(IN), OPTIONAL :: COMM INTEGER, INTENT(IN), OPTIONAL :: COMM
!JUANZ
INTEGER, INTENT(IN), OPTIONAL :: KNB_PROCIO INTEGER, INTENT(IN), OPTIONAL :: KNB_PROCIO
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
! !
! local var ! local var
! !
...@@ -362,7 +358,6 @@ CONTAINS ...@@ -362,7 +358,6 @@ CONTAINS
TZFD%NAME = TPFILE%CNAME TZFD%NAME = TPFILE%CNAME
TZFD%MODE = YMODE TZFD%MODE = YMODE
NULLIFY(TZFD%PARAM)
#if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX) #if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
!JUAN !JUAN
...@@ -621,11 +616,6 @@ CONTAINS ...@@ -621,11 +616,6 @@ CONTAINS
CASE('DISTRIBUTED') CASE('DISTRIBUTED')
TZFD%OWNER = ISIOP TZFD%OWNER = ISIOP
IF (.NOT. PRESENT(LFIPAR)) THEN
PRINT *,"ERROR OPEN_ll : LFI non present"
RETURN
END IF
TZFD%PARAM=>LFIPAR
TPFILE%NMASTER_RANK = ISIOP TPFILE%NMASTER_RANK = ISIOP
TPFILE%LMASTER = (ISP == ISIOP) TPFILE%LMASTER = (ISP == ISIOP)
...@@ -663,7 +653,6 @@ CONTAINS ...@@ -663,7 +653,6 @@ CONTAINS
TZFD%NB_PROCIO = 1 TZFD%NB_PROCIO = 1
ENDIF ENDIF
TZFD%COMM = NMNH_COMM_WORLD TZFD%COMM = NMNH_COMM_WORLD
TZFD%PARAM =>LFIPAR
#if defined(MNH_IOCDF4) #if defined(MNH_IOCDF4)
IF (ISP == TZFD%OWNER .AND. (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) & IF (ISP == TZFD%OWNER .AND. (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) &
& .OR. (YACTION=='READ' .AND. LLFIREAD))) THEN & .OR. (YACTION=='READ' .AND. LLFIREAD))) THEN
...@@ -693,7 +682,6 @@ CONTAINS ...@@ -693,7 +682,6 @@ CONTAINS
TZFD_IOZ%COMM = NMNH_COMM_WORLD TZFD_IOZ%COMM = NMNH_COMM_WORLD
TZFD_IOZ%NB_PROCIO = TZFD%NB_PROCIO TZFD_IOZ%NB_PROCIO = TZFD%NB_PROCIO
TZFD_IOZ%FLU = -1 TZFD_IOZ%FLU = -1
TZFD_IOZ%PARAM =>LFIPAR
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.)
......
...@@ -18,26 +18,40 @@ INTERFACE ...@@ -18,26 +18,40 @@ INTERFACE
SUBROUTINE INITIO_ll() SUBROUTINE INITIO_ll()
END SUBROUTINE INITIO_ll END SUBROUTINE INITIO_ll
SUBROUTINE OPEN_ll(UNIT,FILE,MODE,LFIPAR,COMM,STATUS,ACCESS, & SUBROUTINE OPEN_ll(&
IOSTAT,FORM,RECL,BLANK,POSITION,ACTION,DELIM,PAD,OPARALLELIO) TPFILE, &
USE MODD_IO_ll, ONLY : LFIPARAM MODE, &
INTEGER, INTENT(OUT) :: UNIT !! Different from COMM, &
!! fortran OPEN STATUS, &
CHARACTER(len=*),INTENT(IN), OPTIONAL :: FILE ACCESS, &
CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE IOSTAT, &
TYPE(LFIPARAM), POINTER, OPTIONAL :: LFIPAR FORM, &
CHARACTER(len=*),INTENT(IN), OPTIONAL :: STATUS RECL, &
CHARACTER(len=*),INTENT(IN), OPTIONAL :: ACCESS BLANK, &
INTEGER, INTENT(OUT) :: IOSTAT POSITION,&
CHARACTER(len=*),INTENT(IN), OPTIONAL :: FORM DELIM, &
INTEGER, INTENT(IN), OPTIONAL :: RECL PAD, &
CHARACTER(len=*),INTENT(IN), OPTIONAL :: BLANK KNB_PROCIO,&
CHARACTER(len=*),INTENT(IN), OPTIONAL :: POSITION KMELEV,&
CHARACTER(len=*),INTENT(IN) :: ACTION OPARALLELIO)
CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM
CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD USE MODD_IO_ll, ONLY : TFILEDATA
INTEGER, INTENT(IN), OPTIONAL :: COMM
LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE
CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE
CHARACTER(len=*),INTENT(IN), OPTIONAL :: STATUS
CHARACTER(len=*),INTENT(IN), OPTIONAL :: ACCESS
INTEGER, INTENT(OUT) :: IOSTAT
CHARACTER(len=*),INTENT(IN), OPTIONAL :: FORM
INTEGER, INTENT(IN), OPTIONAL :: RECL
CHARACTER(len=*),INTENT(IN), OPTIONAL :: BLANK
CHARACTER(len=*),INTENT(IN), OPTIONAL :: POSITION
CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM
CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD
INTEGER, INTENT(IN), OPTIONAL :: COMM
INTEGER, INTENT(IN), OPTIONAL :: KNB_PROCIO
INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV
LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO
END SUBROUTINE OPEN_ll END SUBROUTINE OPEN_ll
SUBROUTINE CLOSE_ll(HFILE,IOSTAT,STATUS,OPARALLELIO) SUBROUTINE CLOSE_ll(HFILE,IOSTAT,STATUS,OPARALLELIO)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment