From 5bf0d22916484160e0a315f0e890d3dc263ec332 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 7 Jul 2017 15:56:58 +0200 Subject: [PATCH] Philippe 07/07/2017: IO: corrected problems when writing Z-splitted files * OPEN_ll: added optional argument TPFILE (used for the moment for IO_ZSPLIT case) * INI_MODEL_n: add TDIAFILE in file list --- src/LIB/SURCOUCHE/src/mode_fm.f90 | 5 +++-- src/LIB/SURCOUCHE/src/mode_io.f90 | 21 ++++++++++++++++++++- src/MNH/ini_modeln.f90 | 8 +++++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 13ea018af..9f478552d 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -291,7 +291,7 @@ ENDIF IF(YTYPE/='OUTPUT') THEN YFNDES=ADJUSTL(TRIM(HFILEM)//'.des') CALL OPEN_ll(UNIT=INUMBR,FILE=YFNDES,FORM='FORMATTED',ACTION=HACTION,DELIM& - & ='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=GPARALLELIO) + & ='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=GPARALLELIO,TPFILE=TPFILE) ENDIF IF (IRESP /= 0) GOTO 1000 @@ -311,7 +311,8 @@ TZPARA%FITYP = KFTYPE INB_PROCIO = NB_PROCIO_W END SELECT CALL OPEN_ll(UNIT=INUMBR,FILE=HFILEM,STATUS="UNKNOWN",MODE& - & ='IO_ZSPLIT', LFIPAR=TZPARA, ACTION=HACTION, IOSTAT=IRESP,KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO) + & ='IO_ZSPLIT', LFIPAR=TZPARA, ACTION=HACTION, IOSTAT=IRESP,KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO,& + TPFILE=TPFILE) IF (IRESP /= 0) GOTO 1000 diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index f5b365a1e..25fe5b610 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -225,7 +225,8 @@ CONTAINS PAD, & KNB_PROCIO,& KMELEV,& - OPARALLELIO) + OPARALLELIO,& + TPFILE) #if defined(MNH_IOCDF4) USE MODD_NETCDF, ONLY:IDCDF_KIND USE MODE_NETCDF @@ -251,6 +252,7 @@ CONTAINS INTEGER(KIND=LFI_INT), INTENT(IN), OPTIONAL :: KMELEV LOGICAL, INTENT(IN), OPTIONAL :: OPARALLELIO !JUANZ + TYPE(TFILEDATA), INTENT(IN), OPTIONAL :: TPFILE ! ! local var ! @@ -653,6 +655,7 @@ CONTAINS TZFD%FLU = -1 END IF IF (TZFD%NB_PROCIO .GT. 1 ) THEN + IF (.NOT.PRESENT(TPFILE)) CALL PRINT_MSG(NVERB_FATAL,'IO','INI_MODEL_n','TPFILE not provided for IO_ZSPLIT case') DO ifile=0,TZFD%NB_PROCIO-1 irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO) write(cfile ,'(".Z",i3.3)') ifile+1 @@ -666,6 +669,22 @@ CONTAINS TZFD_IOZ%FLU = -1 TZFD_IOZ%PARAM =>LFIPAR + ALLOCATE(TFILE_LAST%TFILE_NEXT) + TFILE_LAST%TFILE_NEXT%TFILE_PREV => TFILE_LAST + TFILE_LAST => TFILE_LAST%TFILE_NEXT + ! Copy values from 'main' (non-splitted) file + TFILE_LAST%CNAME = TRIM(TPFILE%CNAME)//TRIM(CFILE) + TFILE_LAST%CTYPE = TPFILE%CTYPE + TFILE_LAST%CFORMAT = TPFILE%CFORMAT + TFILE_LAST%CMODE = TPFILE%CMODE + ! + TFILE_LAST%NLFITYPE = TPFILE%NLFITYPE + TFILE_LAST%NLFIVERB = TPFILE%NLFIVERB + ! + TFILE_LAST%LNCREDUCE_FLOAT_PRECISION = TPFILE%LNCREDUCE_FLOAT_PRECISION + TFILE_LAST%LNCCOMPRESS = TPFILE%LNCCOMPRESS + TFILE_LAST%NNCCOMPRESS_LEVEL = TPFILE%NNCCOMPRESS_LEVEL + IF ( irank_procio .EQ. ISP ) THEN #if defined(MNH_IOCDF4) IF (LIOCDF4) THEN diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index e5a52597c..0027d610f 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -419,7 +419,7 @@ USE MODD_ADVFRC_n USE MODD_RELFRC_n USE MODD_2D_FRC USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL -USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT,TFILEDATA +USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT,TFILEDATA,TFILE_FIRST,TFILE_LAST ! USE MODD_CH_PRODLOSSTOT_n USE MODI_CH_INIT_PRODLOSSTOT_n @@ -1554,6 +1554,12 @@ IF (KMI == 1) THEN LUNIT_MODEL(IMI)%TDIAFILE%NLFITYPE = 1 LUNIT_MODEL(IMI)%TDIAFILE%NLFIVERB = NVERB LUNIT_MODEL(IMI)%TDIAFILE%TDADFILE => LUNIT_MODEL(NDAD(IMI))%TDIAFILE + IF (.NOT.ASSOCIATED(TFILE_FIRST)) THEN + TFILE_FIRST => LUNIT_MODEL(IMI)%TDIAFILE + ELSE + LUNIT_MODEL(IMI)%TDIAFILE%TFILE_PREV => TFILE_LAST + END IF + TFILE_LAST => LUNIT_MODEL(IMI)%TDIAFILE END DO ! IF (CPROGRAM=='MESONH') THEN -- GitLab