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