From 756cb8803b1ba4de8994ed92fedeb1d2a75580fb Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 23 Nov 2017 14:56:31 +0100 Subject: [PATCH] Philippe 23/11/2017: IO: removed LFIPARAM data structure --- src/LIB/SURCOUCHE/src/modd_io.f90 | 4 --- src/LIB/SURCOUCHE/src/mode_fd.f90 | 2 -- src/LIB/SURCOUCHE/src/mode_fm.f90 | 37 ++++++--------------- src/LIB/SURCOUCHE/src/mode_io.f90 | 12 ------- src/LIB/SURCOUCHE/src/modi_io.f90 | 54 +++++++++++++++++++------------ 5 files changed, 44 insertions(+), 65 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90 index fdfdb6618..d3aa13599 100644 --- a/src/LIB/SURCOUCHE/src/modd_io.f90 +++ b/src/LIB/SURCOUCHE/src/modd_io.f90 @@ -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_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 !Useful to create arrays of pointers to files TYPE TFILE_ELT diff --git a/src/LIB/SURCOUCHE/src/mode_fd.f90 b/src/LIB/SURCOUCHE/src/mode_fd.f90 index 9fad3e0f2..3dffc73d8 100644 --- a/src/LIB/SURCOUCHE/src/mode_fd.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fd.f90 @@ -13,7 +13,6 @@ !----------------------------------------------------------------- MODULE MODE_FD_ll -USE MODD_IO_ll, ONLY : LFIPARAM USE MODD_NETCDF, ONLY : IOCDF IMPLICIT NONE @@ -28,7 +27,6 @@ TYPE FD_ll INTEGER :: COMM ! Local MPI communicator CHARACTER(LEN=15) :: MODE ! Flag mode acces ('distrib','global','specific') INTEGER :: OWNER ! I/O Processor number - TYPE(LFIPARAM), POINTER :: PARAM !JUANZ INTEGER :: NB_PROCIO = 1 !JUANZ diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 17cb2ee22..1779aec86 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -74,7 +74,6 @@ IF (GSMONOPROC) THEN ! sequential execution TZFD=>NEWFD() TZFD%NAME = HFILEM TZFD%MODE = 'GLOBAL' - NULLIFY(TZFD%PARAM) TZFD%OWNER = ISIOP TZFD%FLU = IONEWFLU() TZFD%COMM = NMNH_COMM_WORLD @@ -325,8 +324,8 @@ IF (PRESENT(KRESP)) KRESP = IRESP END SUBROUTINE IO_FILE_OPEN_ll SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO) -USE MODD_IO_ll, ONLY : ISP,ISTDOUT,LFIPARAM,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA -USE MODE_FD_ll, ONLY : FD_ll,GETFD,JPFINL +USE MODD_IO_ll, ONLY : ISP,ISTDOUT,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA +USE MODE_FD_ll, ONLY : JPFINL USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO !JUANZ USE MODD_CONFZ,ONLY : NB_PROCIO_R,NB_PROCIO_W @@ -345,14 +344,11 @@ INTEGER :: IFTYPE ! type of FM-file INTEGER :: IROWF,IRESP,IFMFNL CHARACTER(LEN=7) :: YACTION ! Action upon the file ('READ' or 'WRITE') CHARACTER(LEN=28) :: YFILEM ! name of the file -CHARACTER(LEN=JPFINL) :: YFNDES,YFNLFI CHARACTER(LEN=8) :: YRESP LOGICAL :: GSTATS LOGICAL, SAVE :: GSFIRST=.TRUE. -TYPE(LFIPARAM), POINTER :: TZPARA LOGICAL :: GNAMFI,GFATER,GNEWFI INTEGER :: IERR -TYPE(FD_ll), POINTER :: TZFDLFI !JUAN INTEGER(KIND=LFI_INT) :: IRESOU,INUMBR8 INTEGER(KIND=LFI_INT) :: IMELEV,INPRAR @@ -412,22 +408,17 @@ ELSEIF (IROWF.GT.IFMFNL) THEN GOTO 1000 ENDIF -YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi') -ALLOCATE(TZPARA) -TZPARA%FITYP = TPFILE%NLFITYPE - SELECT CASE (YACTION) CASE('READ') INB_PROCIO = NB_PROCIO_R CASE('WRITE') INB_PROCIO = NB_PROCIO_W 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) IF (IRESP /= 0) GOTO 1000 -TZFDLFI=>GETFD(YFNLFI) IF (ISP == TPFILE%NMASTER_RANK) THEN ! Proc I/O case IF (GSFIRST) THEN @@ -480,7 +471,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN CALL LFIOUV(IRESOU, & INUMBR8, & GNAMFI8, & - YFNLFI, & + TRIM(YFILEM)//'.lfi', & "UNKNOWN", & GFATER8, & GSTATS8, & @@ -500,12 +491,11 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN GNEWFI=(ININAR==0).OR.(IMELEV<2) IF (.NOT.GNEWFI) THEN - WRITE (ISTDOUT,*) ' file ',YFNLFI,' previously& - & created with LFI' + WRITE (ISTDOUT,*) ' file ',TRIM(YFILEM)//'.lfi',' previously created with LFI' ENDIF END IF ! 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 @@ -665,8 +655,7 @@ SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO) !! J.Escobar 18/10/10 bug with PGI compiler on ADJUSTL !------------------------------------------------------------------------------- USE MODD_IO_ll, ONLY : ISP,TFILEDATA -!USE MODE_FD_ll, ONLY : FD_ll,GETFD,JPFINL -USE MODE_FD_ll +USE MODE_FD_ll, ONLY : JPFINL USE MODE_IO_ll, ONLY : CLOSE_ll,UPCASE #if !defined(MNH_SGI) USE MODI_SYSTEM_MNH @@ -682,7 +671,7 @@ LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO INTEGER ::IRESP,IROWF,IFMFNL CHARACTER(LEN=28) :: YFILEM ! name of the file CHARACTER(LEN=7) ::YSTATU -CHARACTER(LEN=JPFINL)::YFNDES,YFNLFI +CHARACTER(LEN=JPFINL)::YFNLFI LOGICAL ::GSTATU CHARACTER(LEN=8) :: YRESP CHARACTER(LEN=10) ::YCPIO @@ -690,10 +679,7 @@ CHARACTER(LEN=14) ::YTRANS CHARACTER(LEN=100) ::YCOMMAND INTEGER :: IERR, IFITYP INTEGER, SAVE :: ICPT=0 -TYPE(FD_ll), POINTER :: TZFDLFI -!JUAN INTEGER(KIND=LFI_INT) :: IRESP8 -!JUAN LOGICAL :: GPARALLELIO YFILEM = TPFILE%CNAME @@ -735,8 +721,6 @@ ENDIF YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi') -TZFDLFI=>GETFD(YFNLFI) - IF (ISP == TPFILE%NMASTER_RANK) THEN IF (TPFILE%NLFIFLU > 0) THEN CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU) @@ -752,7 +736,7 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN #else YTRANS='fujitransfer.x' #endif - IFITYP = TZFDLFI%PARAM%FITYP + IFITYP = TPFILE%NLFITYPE SELECT CASE (IFITYP) CASE(:-1) @@ -786,10 +770,9 @@ IF (ISP == TPFILE%NMASTER_RANK) THEN 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 -DEALLOCATE(TZFDLFI%PARAM) CALL CLOSE_ll(YFNLFI,IOSTAT=IRESP,STATUS=YSTATU,OPARALLELIO=GPARALLELIO) 1000 CONTINUE diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index f83e9c3bf..03dec2dd4 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -206,7 +206,6 @@ CONTAINS SUBROUTINE OPEN_ll(& TPFILE, & MODE, & - LFIPAR, & COMM, & STATUS, & ACCESS, & @@ -229,7 +228,6 @@ CONTAINS TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE - TYPE(LFIPARAM), POINTER, OPTIONAL :: LFIPAR CHARACTER(len=*),INTENT(IN), OPTIONAL :: STATUS CHARACTER(len=*),INTENT(IN), OPTIONAL :: ACCESS INTEGER, INTENT(OUT) :: IOSTAT @@ -240,11 +238,9 @@ CONTAINS CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD INTEGER, INTENT(IN), OPTIONAL :: COMM - !JUANZ INTEGER, INTENT(IN), OPTIONAL :: KNB_PROCIO INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO - !JUANZ ! ! local var ! @@ -362,7 +358,6 @@ CONTAINS TZFD%NAME = TPFILE%CNAME TZFD%MODE = YMODE - NULLIFY(TZFD%PARAM) #if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX) !JUAN @@ -621,11 +616,6 @@ CONTAINS CASE('DISTRIBUTED') 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%LMASTER = (ISP == ISIOP) @@ -663,7 +653,6 @@ CONTAINS TZFD%NB_PROCIO = 1 ENDIF TZFD%COMM = NMNH_COMM_WORLD - TZFD%PARAM =>LFIPAR #if defined(MNH_IOCDF4) IF (ISP == TZFD%OWNER .AND. (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) & & .OR. (YACTION=='READ' .AND. LLFIREAD))) THEN @@ -693,7 +682,6 @@ CONTAINS TZFD_IOZ%COMM = NMNH_COMM_WORLD TZFD_IOZ%NB_PROCIO = TZFD%NB_PROCIO TZFD_IOZ%FLU = -1 - TZFD_IOZ%PARAM =>LFIPAR CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.) diff --git a/src/LIB/SURCOUCHE/src/modi_io.f90 b/src/LIB/SURCOUCHE/src/modi_io.f90 index 1fd0747e8..3b3a97d90 100644 --- a/src/LIB/SURCOUCHE/src/modi_io.f90 +++ b/src/LIB/SURCOUCHE/src/modi_io.f90 @@ -18,26 +18,40 @@ INTERFACE SUBROUTINE INITIO_ll() END SUBROUTINE INITIO_ll - SUBROUTINE OPEN_ll(UNIT,FILE,MODE,LFIPAR,COMM,STATUS,ACCESS, & - IOSTAT,FORM,RECL,BLANK,POSITION,ACTION,DELIM,PAD,OPARALLELIO) - USE MODD_IO_ll, ONLY : LFIPARAM - INTEGER, INTENT(OUT) :: UNIT !! Different from - !! fortran OPEN - CHARACTER(len=*),INTENT(IN), OPTIONAL :: FILE - CHARACTER(len=*),INTENT(IN), OPTIONAL :: MODE - TYPE(LFIPARAM), POINTER, OPTIONAL :: LFIPAR - 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) :: ACTION - CHARACTER(len=*),INTENT(IN), OPTIONAL :: DELIM - CHARACTER(len=*),INTENT(IN), OPTIONAL :: PAD - INTEGER, INTENT(IN), OPTIONAL :: COMM - LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO + SUBROUTINE OPEN_ll(& + TPFILE, & + MODE, & + COMM, & + STATUS, & + ACCESS, & + IOSTAT, & + FORM, & + RECL, & + BLANK, & + POSITION,& + DELIM, & + PAD, & + KNB_PROCIO,& + KMELEV,& + OPARALLELIO) + + USE MODD_IO_ll, ONLY : TFILEDATA + + 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 SUBROUTINE CLOSE_ll(HFILE,IOSTAT,STATUS,OPARALLELIO) -- GitLab