From ae5ec3312b0c5691c56b43a7e671f81bc8bb20bb Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 14 Mar 2019 11:12:25 +0100 Subject: [PATCH] Philippe 14/03/2019: correct ZWS when variable not present in file --- src/MNH/ini_ls.f90 | 18 ++++++++++++++---- src/MNH/ini_modeln.f90 | 3 ++- src/MNH/modd_fieldn.f90 | 3 +++ src/MNH/read_all_data_grib_case.f90 | 13 ++++++++----- src/MNH/read_field.f90 | 19 +++++++++++++++---- src/MNH/spawn_field2.f90 | 18 ++++++++++++++---- src/MNH/spawn_model2.f90 | 7 ++++--- src/SURFEX/coupling_seafluxn.F90 | 16 +++++++++++++--- 8 files changed, 73 insertions(+), 24 deletions(-) diff --git a/src/MNH/ini_ls.f90 b/src/MNH/ini_ls.f90 index 4addd03ac..2d61ca905 100644 --- a/src/MNH/ini_ls.f90 +++ b/src/MNH/ini_ls.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-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. !----------------------------------------------------------------- ! ###################### @@ -83,6 +83,7 @@ END MODULE MODI_INI_LS !! Original 22/09/98 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file !! !! !------------------------------------------------------------------------------- @@ -90,6 +91,7 @@ END MODULE MODI_INI_LS !* 0. DECLARATIONS ! USE MODD_CONF +USE MODD_FIELD_n, only: XZWS_DEFAULT USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TIME ! for type DATE_TIME ! @@ -122,7 +124,8 @@ LOGICAL, INTENT(IN), OPTIONAL :: OSTEADY_DMASS ! Md ev ! !* 0.2 declarations of local variables ! -!NONE +CHARACTER(LEN=15) :: YVAL +INTEGER :: IRESP ! !------------------------------------------------------------------------------- ! @@ -143,7 +146,14 @@ CALL IO_READ_FIELD(TPINIFILE,'LSUM', PLSUM) CALL IO_READ_FIELD(TPINIFILE,'LSVM', PLSVM) CALL IO_READ_FIELD(TPINIFILE,'LSWM', PLSWM) CALL IO_READ_FIELD(TPINIFILE,'LSTHM',PLSTHM) -CALL IO_READ_FIELD(TPINIFILE,'ZWS',PLSZWSM) +CALL IO_READ_FIELD(TPINIFILE,'ZWS',PLSZWSM, IRESP) +!If the field ZWS is not in the file, set its value to XZWS_DEFAULT +!ZWS is present in files since MesoNH 5.4.2 +IF ( IRESP/=0 ) THEN + WRITE (YVAL,'( E15.8 )') XZWS_DEFAULT + CALL PRINT_MSG(NVERB_WARNING,'IO','INI_LS','ZWS not found in file: using default value: '//TRIM(YVAL)//' m') + PLSZWSM(:,:) = XZWS_DEFAULT +END IF ! IF (HGETRVM == 'READ') THEN ! LS-vapor CALL IO_READ_FIELD(TPINIFILE,'LSRVM',PLSRVM) diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index c879f7b8b..74312b192 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -283,6 +283,7 @@ END MODULE MODI_INI_MODEL_n ! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD !! 02/2019 C.Lac add rain fraction as an output field !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file (set to XZWS_DEFAULT) !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -847,7 +848,7 @@ END IF ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ; XSVT = 0. ALLOCATE(XRSVS(IIU,IJU,IKU,NSV)); XRSVS = 0. ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0 -ALLOCATE(XZWS(IIU,IJU)) ; XZWS = -1. +ALLOCATE(XZWS(IIU,IJU)) ; XZWS(:,:) = XZWS_DEFAULT ! IF (LPASPOL) THEN ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) ) diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90 index 1bfaab894..92e3b89c6 100644 --- a/src/MNH/modd_fieldn.f90 +++ b/src/MNH/modd_fieldn.f90 @@ -52,6 +52,7 @@ !! 02/2019 C.Lac add rain fraction as an output field !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 06/03/2019: correct XZWS entry +! P. Wautelet 14/03/2019: add XZWS_DEFAULT parameter !! !------------------------------------------------------------------------------- ! @@ -61,6 +62,8 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE +REAL, PARAMETER :: XZWS_DEFAULT = 2. ! Default value for XZWS: 2 meters + TYPE FIELD_t REAL, DIMENSION(:,:), POINTER :: XZWS=>NULL() ! significant sea wave ! REAL, DIMENSION(:,:,:), POINTER :: XUT=>NULL(),XVT=>NULL(),XWT=>NULL() diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index e8dcc36b6..ead976f34 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1998-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-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. !----------------------------------------------------------------- ! ################################# @@ -129,6 +129,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE !! Pergaud : 2018 add GFS !! 01/2019 (G.Delautier via Q.Rodier) for GRIB2 ARPEGE and AROME from EPYGRAM !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -153,7 +154,7 @@ USE MODI_CH_AER_INIT_SOA USE MODI_INI_CTURB USE MODI_CH_OPEN_INPUT ! -USE MODD_FIELD_n, ONLY: XZWS +USE MODD_FIELD_n, ONLY: XZWS, XZWS_DEFAULT USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_CONF USE MODD_CONF_n @@ -284,6 +285,7 @@ INTEGER :: ITIME INTEGER :: IDATE INTEGER :: ITIMESTEP CHARACTER(LEN=10) :: CSTEPUNIT +CHARACTER(LEN=15) :: YVAL !chemistery field CHARACTER(LEN=16) :: YPRE_MOC="PRE_MOC1.nam" INTEGER, DIMENSION(:), ALLOCATABLE :: INUMGRIB, INUMLEV ! grib @@ -583,9 +585,10 @@ SELECT CASE (IMODEL) CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=229) ! IF(INUM < 0) THEN + WRITE (YVAL,'( E15.8 )') XZWS_DEFAULT WRITE (ILUOUT0,'(A)')' | !!! WARNING !!! Sea wave height is missing in '// & - 'the GRIB file - the default value of 2 meters is used' - XZWS = 2.0 + 'the GRIB file - the default value of '//TRIM(YVAL)//' meters is used' + XZWS = XZWS_DEFAULT ELSE GFIND=.TRUE. END IF diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90 index 15878a3b6..32672d22f 100644 --- a/src/MNH/read_field.f90 +++ b/src/MNH/read_field.f90 @@ -72,7 +72,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTKEMS ! tke adv source REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABST ! pressure at t REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT ! moist and scalar ! variables at t -REAL, DIMENSION(:,:), INTENT(OUT) :: PZWS +REAL, DIMENSION(:,:), INTENT(INOUT) :: PZWS REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRCT ! turbulent flux ! <s'Rc'> at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PCIT ! ice conc. at t @@ -239,6 +239,7 @@ END MODULE MODI_READ_FIELD !! P. Wautelet 01/2019 corrected intent of PDUM,PDVM,PDWM (OUT->INOUT) ! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments (bugfix: PPABSM was intent(OUT)) !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -253,6 +254,7 @@ USE MODD_CST USE MODD_CTURB USE MODD_DUST USE MODD_ELEC_DESCR, ONLY: CELECNAMES +USE MODD_FIELD_n, only: XZWS_DEFAULT #ifdef MNH_FOREFIRE USE MODD_FOREFIRE #endif @@ -332,7 +334,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRTKEMS ! tke adv source REAL, DIMENSION(:,:,:), INTENT(OUT) :: PPABST ! pressure at t REAL, DIMENSION(:,:,:,:), INTENT(OUT) :: PRT,PSVT ! moist and scalar ! variables at t -REAL, DIMENSION(:,:), INTENT(OUT) :: PZWS +REAL, DIMENSION(:,:), INTENT(INOUT) :: PZWS REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRCT ! turbulent flux ! <s'Rc'> at t REAL, DIMENSION(:,:,:), INTENT(OUT) :: PCIT ! ice conc. at t @@ -391,6 +393,7 @@ INTEGER :: JT ! loop index LOGICAL :: GLSOURCE ! switch for the source term (for ini_ls and ini_lb) CHARACTER(LEN=2) :: INDICE CHARACTER(LEN=3) :: YFRC ! To mark the different forcing dates +CHARACTER(LEN=15) :: YVAL REAL, DIMENSION(KIU,KJU,KKU) :: ZWORK ! to compute supersaturation TYPE(TFIELDDATA) :: TZFIELD ! @@ -463,9 +466,17 @@ END SELECT ! SELECT CASE(HGETZWS) CASE('READ') - CALL IO_READ_FIELD(TPINIFILE,'ZWS',PZWS) + CALL IO_READ_FIELD(TPINIFILE,'ZWS',PZWS,IRESP) + !If the field ZWS is not in the file, set its value to XZWS_DEFAULT + !ZWS is present in files since MesoNH 5.4.2 + IF ( IRESP/=0 ) THEN + WRITE (YVAL,'( E15.8 )') XZWS_DEFAULT + CALL PRINT_MSG(NVERB_WARNING,'IO','READ_FIELD','ZWS not found in file: using default value: '//TRIM(YVAL)//' m') + PZWS(:,:) = XZWS_DEFAULT + END IF + CASE('INIT') - PZWS(:,:)=0. + PZWS(:,:)=0. END SELECT ! SELECT CASE(HGETRVT) ! vapor diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index b49d86cc6..c029da290 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1995-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-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. !####################### MODULE MODI_SPAWN_FIELD2 @@ -153,6 +153,7 @@ END MODULE MODI_SPAWN_FIELD2 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! Modification 05/03/2018 (J.Escobar) bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -168,7 +169,7 @@ USE MODD_CST USE MODD_CONF_n, ONLY: CONF_MODEL USE MODD_DUST, ONLY: CDUSTNAMES USE MODD_ELEC_DESCR, ONLY: CELECNAMES -USE MODD_FIELD_n, ONLY: FIELD_MODEL +USE MODD_FIELD_n, ONLY: FIELD_MODEL, XZWS_DEFAULT USE MODD_IO_ll, ONLY : TFILEDATA USE MODD_LATZ_EDFLX USE MODD_LBC_n, ONLY: LBC_MODEL @@ -190,6 +191,7 @@ USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODE_FMREAD USE MODE_IO_ll, ONLY: UPCASE USE MODE_ll +USE MODE_MSG USE MODE_MODELN_HANDLER USE MODE_MPPDB USE MODE_THERMO @@ -273,6 +275,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZPABST1,ZHUT1 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRT1 LOGICAL :: GUSERV ! +CHARACTER(LEN=15) :: YVAL CHARACTER(LEN=2) :: INDICE INTEGER :: I TYPE(TFIELDDATA) :: TZFIELD @@ -760,7 +763,14 @@ IF (PRESENT(TPSONFILE)) THEN PVT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:) CALL IO_READ_FIELD(TPSONFILE,'WT',ZWORK3D) ! W wind component at time t PWT(KIB2:KIE2,KJB2:KJE2,:) = ZWORK3D(KIB1:KIE1,KJB1:KJE1,:) - CALL IO_READ_FIELD(TPSONFILE,'ZWS',ZWORK2D) ! + CALL IO_READ_FIELD(TPSONFILE,'ZWS',ZWORK2D,IRESP) ! + !If the field ZWS is not in the file, set its value to XZWS_DEFAULT + !ZWS is present in files since MesoNH 5.4.2 + IF ( IRESP/=0 ) THEN + WRITE (YVAL,'( E15.8 )') XZWS_DEFAULT + CALL PRINT_MSG(NVERB_WARNING,'IO','SPAWN_FIELD2','ZWS not found in file: using default value: '//TRIM(YVAL)//' m') + ZWORK2D(:,:) = XZWS_DEFAULT + END IF PZWS(KIB2:KIE2,KJB2:KJE2) = ZWORK2D(KIB1:KIE1,KJB1:KJE1) ! ! moist variables diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90 index 2811911fc..bf6627bc5 100644 --- a/src/MNH/spawn_model2.f90 +++ b/src/MNH/spawn_model2.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1995-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-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. !######################## MODULE MODI_SPAWN_MODEL2 @@ -192,6 +192,7 @@ END MODULE MODI_SPAWN_MODEL2 !! 10/2016 (C.Lac) Add droplet deposition !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! P. Wautelet 14/03/2019: correct ZWS when variable not present in file !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -704,7 +705,7 @@ ALLOCATE(ZJ(IIU,IJU,IKU)) ! !* 4.2 Prognostic (and diagnostic) variables (module MODD_FIELD2) : ! -ALLOCATE(XZWS(IIU,IJU)) +ALLOCATE(XZWS(IIU,IJU)); XZWS(:,:) = XZWS_DEFAULT ALLOCATE(XLSZWSM(IIU,IJU)) ALLOCATE(XUT(IIU,IJU,IKU)) ALLOCATE(XVT(IIU,IJU,IKU)) diff --git a/src/SURFEX/coupling_seafluxn.F90 b/src/SURFEX/coupling_seafluxn.F90 index f7fc56d80..a7c421d68 100644 --- a/src/SURFEX/coupling_seafluxn.F90 +++ b/src/SURFEX/coupling_seafluxn.F90 @@ -1,6 +1,6 @@ -!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!SFX_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence -!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. ! ############################################################################### SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, & @@ -50,7 +50,8 @@ SUBROUTINE COUPLING_SEAFLUX_n (CHS, DTS, DGS, O, OR, G, S, DST, SLT, & !! Modified 03/2014 : M.N. Bouin possibility of wave parameters from external source !! Modified 11/2014 : J. Pianezze : add currents for wave coupling !! Modified 02/2019 : S. Bielli Sea salt : significant sea wave height influences salt emission; 5 salt modes -!! +!! Modified 03/2019 : P. Wautelet: correct ZWS when variable not present in file +!! !!--------------------------------------------------------------------- ! ! @@ -74,6 +75,10 @@ USE MODD_WATER_PAR, ONLY : XEMISWAT, XEMISWATICE ! USE MODD_WATER_PAR, ONLY : XALBSEAICE ! +#ifdef SFX_MNH +USE MODD_FIELD_n, only: XZWS_DEFAULT +#endif +! ! USE MODI_WATER_FLUX USE MODI_MR98 @@ -341,8 +346,13 @@ END IF #endif ! if HS value is undef : constant value and alert message IF (ALL(ZHS==XUNDEF)) THEN +#ifdef SFX_MNH + ZHS(:) = XZWS_DEFAULT + WRITE (ILUOUT,*) 'WARNING : no HS values from ECMWF or WW3, then it is initialized to a constant value of XZWS_DEFAULT m' +#else ZHS(:)=2. WRITE (ILUOUT,*) 'WARNING : no HS values from ECMWF or WW3, then it is initialized to a constant value of 2 m' +#endif END IF ! ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab