From 93c63503c5d75c53b20cfbaccb6c5229397f7aa4 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 21 Jan 2019 11:03:04 +0100 Subject: [PATCH] Philippe 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll to allow to disable writes (for bench purposes) --- src/LIB/SURCOUCHE/src/modd_io.f90 | 4 ++ src/LIB/SURCOUCHE/src/mode_fm.f90 | 8 +++- src/LIB/SURCOUCHE/src/mode_io.f90 | 14 +++++-- .../SURCOUCHE/src/mode_io_manage_struct.f90 | 25 +++++++++-- src/LIB/SURCOUCHE/src/modn_confio.f90 | 12 +++--- src/MNH/modeln.f90 | 42 +++++++++++-------- 6 files changed, 76 insertions(+), 29 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90 index 21e82e1da..62a02bf94 100644 --- a/src/LIB/SURCOUCHE/src/modd_io.f90 +++ b/src/LIB/SURCOUCHE/src/modd_io.f90 @@ -6,6 +6,7 @@ ! Modifications: ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN (removed ISTDOUT, ISTDERR, added NNULLUNIT, CNULLFILE) +! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll to allow to disable writes (for bench purposes) !----------------------------------------------------------------- MODULE MODD_IO_ll @@ -45,6 +46,9 @@ INTEGER, SAVE :: NGEN_ABORT_LEVEL = NVERB_ERROR ! Level of 'GEN' error necessa CHARACTER(LEN=NDIRNAMELGTMAX) :: CIO_DIR = '' ! Directory for IO +logical, save :: LIO_ALLOW_NO_BACKUP = .false. ! Allow to have no valid backup time (useful for some tests) +logical, save :: LIO_NO_WRITE = .false. ! Disable file writes (useful for benchs) + !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_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index eea6d328d..02265538c 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -11,6 +11,8 @@ ! Philippe Wautelet: 13/12/2018: moved some operations to new mode_io_*_nc4 modules ! Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN + move management ! of NNCID and NLFIFLU to the nc4 and lfi subroutines +! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll +! to allow to disable writes (for bench purposes) !----------------------------------------------------------------- MODULE MODE_FM @@ -48,7 +50,7 @@ END SUBROUTINE SET_FMPACK_ll SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS,HPROGRAM_ORIG) ! USE MODD_CONF, ONLY: CPROGRAM -USE MODD_IO_ll, ONLY: TFILEDATA +USE MODD_IO_ll, ONLY: LIO_NO_WRITE, TFILEDATA USE MODE_FMREAD USE MODE_IO_ll, ONLY : OPEN_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST,IO_FILE_FIND_BYNAME @@ -69,6 +71,10 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','opening '//TRIM(TPFILE%CNAME) ! IF (.NOT.ASSOCIATED(TPFILE)) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','TPFILE is not associated') ! +IF ( LIO_NO_WRITE .AND. TPFILE%CMODE == 'WRITE' .AND. TPFILE%CTYPE/='OUTPUTLISTING') THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','opening file '//TRIM(TPFILE%CNAME)//' in write mode but LIO_NO_WRITE is set') +END IF +! TZFILE_DES => NULL() TZFILE_DUMMY => NULL() ! diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 930794b33..0077216d4 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -23,6 +23,8 @@ ! + move IOFREEFLU and IONEWFLU to mode_io_file_lfi.f90 ! + move management of NNCID and NLFIFLU to the nc4 and lfi subroutines ! Philippe Wautelet: 10/01/2019: bug: modify some metadata before open calls +! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll to allow +! to disable writes (for bench purposes) ! MODULE MODE_IO_ll @@ -68,7 +70,7 @@ CONTAINS END SUBROUTINE SET_CONFIO_ll SUBROUTINE SET_CONFIO_INTERN_ll(OIOCDF4, OLFIOUT, OLFIREAD) - USE MODD_IO_ll, ONLY : LIOCDF4, LLFIOUT, LLFIREAD + USE MODD_IO_ll, ONLY : LIOCDF4, LLFIOUT, LLFIREAD, LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE LOGICAL, INTENT(IN) :: OIOCDF4, OLFIOUT, OLFIREAD CALL PRINT_MSG(NVERB_DEBUG,'IO','SET_CONFIO_ll','called') @@ -89,10 +91,16 @@ CONTAINS LIOCDF4 = .FALSE. LLFIOUT = .TRUE. LLFIREAD = .TRUE. -#endif +#endif GCONFIO = .TRUE. + + ! Set LIO_ALLOW_NO_BACKUP=.true. if writes are disabled (to be coherent) + IF (LIO_NO_WRITE) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','SET_CONFIO_ll','file writes are disabled') + LIO_ALLOW_NO_BACKUP = .true. + END IF END IF - + END SUBROUTINE SET_CONFIO_INTERN_ll SUBROUTINE INITIO_ll() diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index 94485e3f1..8745773f0 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2016-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- !! Authors @@ -9,6 +9,8 @@ ! P. Wautelet : 2016: original version ! Modifications: ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll +! to allow to disable writes (for bench purposes) !----------------------------------------------------------------- MODULE MODE_IO_MANAGE_STRUCT ! @@ -43,6 +45,7 @@ REAL, INTENT(IN) :: PSEGLEN ! segment duration (in seconds) ! INTEGER :: IMI ! Model number for loop INTEGER :: IBAK_NUMB, IOUT_NUMB ! Number of backups/outputs +INTEGER :: IERR_LVL ! Level of error message INTEGER :: IVAR ! Number of variables INTEGER :: ISTEP_MAX ! Number of timesteps INTEGER :: IPOS,IFIELD ! Indices @@ -55,6 +58,15 @@ CHARACTER (LEN=4) :: YDADNUMBER ! Character string for the DAD model file ! CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_PREPARE_BAKOUT_STRUCT','called') ! +! Special case if writes are forced to NO +IF (LIO_NO_WRITE) THEN + DO IMI = 1, NMODEL + OUT_MODEL(IMI)%NBAK_NUMB = 0 + OUT_MODEL(IMI)%NOUT_NUMB = 0 + END DO + RETURN +END IF +! DO IMI = 1, NMODEL IBAK_NUMB = 0 IOUT_NUMB = 0 @@ -159,7 +171,14 @@ DO IMI = 1, NMODEL IBAK_NUMB = IBAK_NUMB + 1 END IF END DO - IF (IBAK_NUMB==0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_PREPARE_BAKOUT_STRUCT','no (valid) backup time') + IF (IBAK_NUMB==0) THEN + IF(LIO_ALLOW_NO_BACKUP) THEN + IERR_LVL = NVERB_WARNING + ELSE + IERR_LVL = NVERB_ERROR + END IF + CALL PRINT_MSG(IERR_LVL,'IO','IO_PREPARE_BAKOUT_STRUCT','no (valid) backup time') + END IF ! IOUT_NUMB = 0 DO JOUT = 1,SIZE(IOUT_STEP) diff --git a/src/LIB/SURCOUCHE/src/modn_confio.f90 b/src/LIB/SURCOUCHE/src/modn_confio.f90 index a9c647314..b4a4ea3be 100644 --- a/src/LIB/SURCOUCHE/src/modn_confio.f90 +++ b/src/LIB/SURCOUCHE/src/modn_confio.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2014-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ################## @@ -28,8 +28,9 @@ !! !! MODIFICATIONS !! ------------- -!! Original 31/03/2014 +!! Original 31/03/2014 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +!! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll to allow to disable writes (for bench purposes) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -37,7 +38,7 @@ ! USE MODD_IO_ll, ONLY : LVERB_OUTLST, LVERB_STDOUT, LVERB_ALLPRC, & NIO_VERB, NIO_ABORT_LEVEL, NGEN_VERB, NGEN_ABORT_LEVEL, & - CIO_DIR + CIO_DIR, LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE ! IMPLICIT NONE ! @@ -49,7 +50,8 @@ LOGICAL,SAVE :: LLFIREAD = .FALSE. ! TRUE : enable LFI reading (disable NetCDF4 NAMELIST/NAM_CONFIO/LCDF4, LLFIOUT, LLFIREAD, & LVERB_OUTLST, LVERB_STDOUT, LVERB_ALLPRC, & NIO_VERB, NIO_ABORT_LEVEL, & - NGEN_VERB, NGEN_ABORT_LEVEL, CIO_DIR + NGEN_VERB, NGEN_ABORT_LEVEL, CIO_DIR, & + LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE ! END MODULE MODN_CONFIO diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index f2c335258..84354e1f3 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -251,6 +251,8 @@ END MODULE MODI_MODEL_n !! 07/2017 (V. Vionnet) : Add blowing snow scheme !! S. Riette : 11/2016 Add ZPABST to keep pressure constant during timestep !! 01/2018 (C.Lac) Add VISCOSITY +!! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll +! to allow to disable writes (for bench purposes) !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -289,7 +291,7 @@ USE MODD_GET_n USE MODD_GRID, ONLY: XLONORI,XLATORI USE MODD_GRID_n USE MODD_ICE_C1R3_DESCR, ONLY: XRTMIN_C1R3=>XRTMIN -USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_SURFEX,TFILE_DUMMY +USE MODD_IO_ll, ONLY: LIO_NO_WRITE, TFILEDATA,TFILE_SURFEX,TFILE_DUMMY USE MODD_LBC_n USE MODD_LES USE MODD_LES_BUDGET @@ -630,11 +632,13 @@ IF (KTCOUNT == 1) THEN IBAK=0 IOUT=0 ! - CALL IO_FILE_OPEN_ll(TDIAFILE) + IF ( .NOT. LIO_NO_WRITE ) THEN + CALL IO_FILE_OPEN_ll(TDIAFILE) ! - CALL IO_WRITE_HEADER(TDIAFILE) - CALL WRITE_DESFM_n(IMI,TDIAFILE) - CALL WRITE_LFIFMN_FORDIACHRO_n(TDIAFILE) + CALL IO_WRITE_HEADER(TDIAFILE) + CALL WRITE_DESFM_n(IMI,TDIAFILE) + CALL WRITE_LFIFMN_FORDIACHRO_n(TDIAFILE) + END IF ! !* 1.4 Initialization of the list of fields for the halo updates ! @@ -2050,8 +2054,10 @@ CALL END_DIAG_IN_RUN ! ZTIME1 = ZTIME2 ! -IF (NBUMOD==IMI .AND. CBUTYPE/='NONE') THEN - CALL ENDSTEP_BUDGET(TDIAFILE,KTCOUNT,TDTCUR,TDTMOD,XTSTEP,NSV) +IF ( .NOT. LIO_NO_WRITE ) THEN + IF (NBUMOD==IMI .AND. CBUTYPE/='NONE') THEN + CALL ENDSTEP_BUDGET(TDIAFILE,KTCOUNT,TDTCUR,TDTMOD,XTSTEP,NSV) + END IF END IF ! CALL SECOND_MNH2(ZTIME2) @@ -2091,16 +2097,18 @@ END IF ! IF (OEXIT) THEN ! - IF (LSERIES) CALL WRITE_SERIES_n(TDIAFILE) - CALL WRITE_AIRCRAFT_BALLOON(TDIAFILE) - CALL WRITE_STATION_n(TDIAFILE) - CALL WRITE_PROFILER_n(TDIAFILE) - CALL WRITE_LES_n(TDIAFILE,' ') - CALL WRITE_LES_n(TDIAFILE,'A') - CALL WRITE_LES_n(TDIAFILE,'E') - CALL WRITE_LES_n(TDIAFILE,'H') - CALL MENU_DIACHRO(TDIAFILE,'END') - CALL IO_FILE_CLOSE_ll(TDIAFILE) + IF ( .NOT. LIO_NO_WRITE ) THEN + IF (LSERIES) CALL WRITE_SERIES_n(TDIAFILE) + CALL WRITE_AIRCRAFT_BALLOON(TDIAFILE) + CALL WRITE_STATION_n(TDIAFILE) + CALL WRITE_PROFILER_n(TDIAFILE) + CALL WRITE_LES_n(TDIAFILE,' ') + CALL WRITE_LES_n(TDIAFILE,'A') + CALL WRITE_LES_n(TDIAFILE,'E') + CALL WRITE_LES_n(TDIAFILE,'H') + CALL MENU_DIACHRO(TDIAFILE,'END') + CALL IO_FILE_CLOSE_ll(TDIAFILE) + END IF ! CALL IO_FILE_CLOSE_ll(TINIFILE) IF (CSURF=="EXTE") CALL IO_FILE_CLOSE_ll(TINIFILEPGD,OPARALLELIO=.FALSE.) -- GitLab