diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 7460f84cd4d77d9c61eef16596bbcd71f8ffbadf..e175c32fd0aae76a79558f32f9dcac381d1521a8 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -51,7 +51,7 @@ IF ( IP .EQ. 1 ) PRINT *,'INIT L1D,L2D,LPACK = ',L1D,L2D,LPACK END SUBROUTINE SET_FMPACK_ll -SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS,HPROGRAM_ORIG) +SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS) ! USE MODD_CONF, ONLY: CPROGRAM, NMNHVERSION USE MODD_IO_ll, ONLY: TFILEDATA @@ -65,7 +65,6 @@ INTEGER, INTENT(OUT), OPTIONAL :: KRESP ! Return code LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HPOSITION CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HSTATUS -CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program ! INTEGER :: IRESP,IRESP2 INTEGER :: IMASDEV,IBUGFIX @@ -159,7 +158,7 @@ SELECT CASE(TPFILE%CTYPE) TZFILE_DES%NOPEN = TZFILE_DES%NOPEN + 1 ENDIF ! - CALL FMOPEN_ll(TPFILE,IRESP,OPARALLELIO=OPARALLELIO,HPROGRAM_ORIG=HPROGRAM_ORIG) + CALL FMOPEN_ll(TPFILE,IRESP,OPARALLELIO=OPARALLELIO) ! !Compare MNHVERSION of file with current version IF (TRIM(TPFILE%CMODE) == 'READ') THEN @@ -226,7 +225,7 @@ IF (PRESENT(KRESP)) KRESP = IRESP ! END SUBROUTINE IO_FILE_OPEN_ll -SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO,HPROGRAM_ORIG) +SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO) USE MODD_IO_ll, ONLY : ISTDOUT,TFILEDATA USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO !JUANZ @@ -239,7 +238,6 @@ USE MODE_NETCDF TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! File structure INTEGER, INTENT(OUT) :: KRESP ! return-code LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO -CHARACTER(LEN=*),INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program ! ! Local variables ! @@ -315,7 +313,7 @@ ENDIF INB_PROCIO = NB_PROCIO_W END SELECT CALL OPEN_ll(TPFILE,STATUS="UNKNOWN",MODE='IO_ZSPLIT',IOSTAT=IRESP, & - KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO,HPROGRAM_ORIG=HPROGRAM_ORIG) + KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO) IF (IRESP /= 0) GOTO 1000 @@ -391,12 +389,7 @@ IF (TPFILE%LMASTER) THEN WRITE (ISTDOUT,*) ' file ',TRIM(YFILEM)//'.lfi',' previously created with LFI' ENDIF END IF -#if defined(MNH_IOCDF4) -!Write coordinates variables in NetCDF file -IF (YACTION == 'WRITE' .AND. TPFILE%CFORMAT=='NETCDF4' .OR. TPFILE%CFORMAT=='LFICDF4') THEN - CALL IO_WRITE_COORDVAR_NC4(TPFILE,HPROGRAM_ORIG=HPROGRAM_ORIG) -END IF -#endif + ! Broadcast ERROR CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) IF (IRESP /= 0) GOTO 1000 @@ -413,7 +406,7 @@ KRESP=IRESP END SUBROUTINE FMOPEN_ll -SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,OPARALLELIO) +SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,OPARALLELIO,HPROGRAM_ORIG) ! USE MODD_CONF, ONLY: CPROGRAM USE MODD_IO_ll, ONLY: TFILEDATA @@ -423,6 +416,7 @@ USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! File structure INTEGER, INTENT(OUT), OPTIONAL :: KRESP ! Return code LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO +CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program ! INTEGER :: IRESP, JI TYPE(TFILEDATA),POINTER :: TZFILE_DES @@ -523,7 +517,7 @@ SELECT CASE(TPFILE%CTYPE) END IF ENDIF ! - CALL FMCLOS_ll(TPFILE,'KEEP',KRESP=IRESP,OPARALLELIO=OPARALLELIO) + CALL FMCLOS_ll(TPFILE,'KEEP',KRESP=IRESP,OPARALLELIO=OPARALLELIO,HPROGRAM_ORIG=HPROGRAM_ORIG) ! TPFILE%NLFIFLU = -1 TPFILE%NNCID = -1 @@ -551,7 +545,7 @@ IF (PRESENT(KRESP)) KRESP=IRESP ! END SUBROUTINE IO_FILE_CLOSE_ll -SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO) +SUBROUTINE FMCLOS_ll(TPFILE,HSTATU,KRESP,OPARALLELIO,HPROGRAM_ORIG) ! !! MODIFICATIONS !! ------------- @@ -571,6 +565,7 @@ TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File structure CHARACTER(LEN=*), INTENT(IN) :: HSTATU ! status for the closed file INTEGER, INTENT(OUT), OPTIONAL :: KRESP ! return-code if problems araised LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO +CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program INTEGER ::IRESP,IROWF CHARACTER(LEN=28) :: YFILEM ! name of the file @@ -617,6 +612,13 @@ ELSE ENDIF ENDIF +#if defined(MNH_IOCDF4) +!Write coordinates variables in NetCDF file +IF (TPFILE%CMODE == 'WRITE' .AND. (TPFILE%CFORMAT=='NETCDF4' .OR. TPFILE%CFORMAT=='LFICDF4')) THEN + CALL IO_WRITE_COORDVAR_NC4(TPFILE,HPROGRAM_ORIG=HPROGRAM_ORIG) +END IF +#endif + IF (TPFILE%LMASTER) THEN IF (TPFILE%NLFIFLU > 0) THEN CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU) diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 577c57abf07fbacec5344f74740e697b648e0ffc..3f463e0c3348c8407d1caa8a2a2d93c053046718 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -210,8 +210,7 @@ CONTAINS PAD, & KNB_PROCIO,& KMELEV,& - OPARALLELIO, & - HPROGRAM_ORIG) + OPARALLELIO) #if defined(MNH_IOCDF4) USE MODD_NETCDF, ONLY:IDCDF_KIND USE MODE_NETCDF @@ -234,7 +233,6 @@ CONTAINS INTEGER, INTENT(IN), OPTIONAL :: KNB_PROCIO INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO - CHARACTER(LEN=*),INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program ! ! local var ! @@ -718,13 +716,6 @@ CONTAINS END IF ENDIF ! -#if defined(MNH_IOCDF4) - !Write coordinates variables in NetCDF file - IF (YACTION == 'WRITE' .AND. TZSPLITFILE%CFORMAT=='NETCDF4' .OR. TZSPLITFILE%CFORMAT=='LFICDF4') THEN - CALL IO_WRITE_COORDVAR_NC4(TZSPLITFILE,HPROGRAM_ORIG=HPROGRAM_ORIG) - END IF -#endif - ! TZSPLITFILE%LOPENED = .TRUE. TZSPLITFILE%NOPEN = TZSPLITFILE%NOPEN + 1 TZSPLITFILE%NOPEN_CURRENT = TZSPLITFILE%NOPEN_CURRENT + 1 @@ -751,7 +742,7 @@ CONTAINS END SUBROUTINE OPEN_ll - SUBROUTINE CLOSE_ll(TPFILE,IOSTAT,STATUS,OPARALLELIO) + SUBROUTINE CLOSE_ll(TPFILE,IOSTAT,STATUS,OPARALLELIO,HPROGRAM_ORIG) USE MODD_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME #if defined(MNH_IOCDF4) @@ -761,6 +752,7 @@ CONTAINS INTEGER, INTENT(OUT), OPTIONAL :: IOSTAT CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: STATUS LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO + CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HPROGRAM_ORIG !To emulate a file coming from this program INTEGER :: IERR, IGLOBALERR, IGLOBALERR2, IRESP, IRESP2 @@ -800,6 +792,12 @@ CONTAINS IF( GPARALLELIO ) THEN DO IFILE=1,TPFILE%NSUBFILES_IOZ TZFILE => TPFILE%TFILES_IOZ(IFILE)%TFILE +#if defined(MNH_IOCDF4) + !Write coordinates variables in NetCDF file + IF (TZFILE%CMODE == 'WRITE' .AND. (TZFILE%CFORMAT=='NETCDF4' .OR. TZFILE%CFORMAT=='LFICDF4')) THEN + CALL IO_WRITE_COORDVAR_NC4(TZFILE,HPROGRAM_ORIG=HPROGRAM_ORIG) + END IF +#endif IF (TPFILE%LMASTER) THEN IF (TZFILE%NLFIFLU > 0) THEN !if LFI CALL LFIFER(IRESP8,TZFILE%NLFIFLU,YSTATU)