From 6a55784ce758bedecbb2beac0e4bd3437b8dda6d Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 27 Apr 2022 11:20:34 +0200 Subject: [PATCH] Philippe 27/04/2022: add namelist for profilers (not yet used) --- src/MNH/default_desfmn.f90 | 18 ++++++- src/MNH/goto_model_wrapper.f90 | 7 ++- src/MNH/modd_allprofilern.f90 | 99 ++++++++++++++++++++++++++++++++++ src/MNH/modn_profilern.f90 | 91 +++++++++++++++++++++++++++++++ src/MNH/read_desfmn.f90 | 13 ++++- src/MNH/read_exsegn.f90 | 8 ++- src/MNH/write_desfmn.f90 | 17 ++++-- 7 files changed, 243 insertions(+), 10 deletions(-) create mode 100644 src/MNH/modd_allprofilern.f90 create mode 100644 src/MNH/modn_profilern.f90 diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index c9f530786..ec17d0ffc 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -219,6 +219,7 @@ END MODULE MODI_DEFAULT_DESFM_n ! Q. Rodier 06/2021: modify default value to LGZ=F (grey-zone corr.), LSEDI and OSEDC=T (LIMA sedimentation) ! F. Couvreux 06/2021: add LRELAX_UVMEAN_FRC ! Q. Rodier 07/2021: modify XPOND=1 +! P. Wautelet 27/04/2022: add namelist for profilers !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -270,6 +271,7 @@ USE MODD_EOL_MAIN USE MODD_EOL_ADNR USE MODD_EOL_ALM USE MODD_EOL_SHARED_IO +USE MODD_ALLPROFILER_n USE MODD_ALLSTATION_n ! ! @@ -592,7 +594,21 @@ LTIPLOSSG = .TRUE. LTECOUTPTS = .FALSE. ! !------------------------------------------------------------------------------ -!* 10.e SET DEFAULT VALUES FOR MODD_ALLSTATION_n : +!* 10.e SET DEFAULT VALUES FOR MODD_ALLPROFILER_n : +! ---------------------------------- +! +NNUMB_PROF = 0 +XSTEP_PROF = 60.0 +XX_PROF(:) = XUNDEF +XY_PROF(:) = XUNDEF +XZ_PROF(:) = XUNDEF +XLAT_PROF(:) = XUNDEF +XLON_PROF(:) = XUNDEF +CNAME_PROF(:) = '' +CFILE_PROF = 'NO_INPUT_CSV' +! LDIAG_SURFRAD = .TRUE. +!------------------------------------------------------------------------------ +!* 10.f SET DEFAULT VALUES FOR MODD_ALLSTATION_n : ! ---------------------------------- ! NNUMB_STAT = 0 diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index da4f0e5c7..c0e7e24dd 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -18,6 +18,7 @@ ! 11/2019 C.Lac correction in the drag formula and application to building in addition to tree ! F. Auguste 02/21: add IBM ! T. Nagel 02/21: add turbulence recycling +! P. Wautelet 27/04/2022: add namelist for profilers !----------------------------------------------------------------- MODULE MODI_GOTO_MODEL_WRAPPER @@ -34,6 +35,7 @@ SUBROUTINE GOTO_MODEL_WRAPPER(KFROM, KTO, ONOFIELDLIST) ! all USE modd*_n modules USE MODD_ADVFRC_n USE MODD_ADV_n +USE MODD_ALLPROFILER_n USE MODD_ALLSTATION_n USE MODD_BIKHARDT_n USE MODD_BLANK_n @@ -60,6 +62,7 @@ USE MODD_DRAGBLDG_n USE MODD_DUMMY_GR_FIELD_n USE MODD_DYN_n USE MODD_DYNZD_n +USE MODD_ELEC_n USE MODD_FIELD_n #ifdef MNH_FOREFIRE USE MODD_FOREFIRE_n @@ -88,7 +91,6 @@ USE MODD_PARAM_ECRAD_n USE MODD_PASPOL_n USE MODD_PAST_FIELD_n USE MODD_PRECIP_n -USE MODD_ELEC_n USE MODD_PROFILER_n USE MODD_RADIATIONS_n USE MODD_RBK90_Global_n @@ -189,14 +191,15 @@ CALL FOREFIRE_GOTO_MODEL(KFROM, KTO) #endif !CALL PRECIP_GOTO_MODEL(KFROM, KTO) CALL ELEC_GOTO_MODEL(KFROM, KTO) -CALL PROFILER_GOTO_MODEL(KFROM, KTO) CALL RADIATIONS_GOTO_MODEL(KFROM, KTO) CALL SHADOWS_GOTO_MODEL(KFROM, KTO) CALL REF_GOTO_MODEL(KFROM, KTO) CALL FRC_GOTO_MODEL(KFROM, KTO) CALL SECPGD_FIELD_GOTO_MODEL(KFROM, KTO) CALL SERIES_GOTO_MODEL(KFROM, KTO) +CALL PROFILER_GOTO_MODEL(KFROM, KTO) CALL STATION_GOTO_MODEL(KFROM, KTO) +CALL ALLPROFILER_GOTO_MODEL(KFROM, KTO) CALL ALLSTATION_GOTO_MODEL(KFROM, KTO) CALL SUB_CH_FIELD_VALUE_GOTO_MODEL(KFROM, KTO) CALL SUB_CH_MONITOR_GOTO_MODEL(KFROM, KTO) diff --git a/src/MNH/modd_allprofilern.f90 b/src/MNH/modd_allprofilern.f90 new file mode 100644 index 000000000..fd7cd8eb2 --- /dev/null +++ b/src/MNH/modd_allprofilern.f90 @@ -0,0 +1,99 @@ +!MNH_LIC Copyright 2021-2022 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 for details. version 1. +!----------------------------------------------------------------- +! ############################ + MODULE MODD_ALLPROFILER_n +! ############################ +! +!!**** *MODD_PROFILER* - declaration of profilers +!! +!! PURPOSE +!! ------- +! The purpose of this declarative module is to define +! the different profilers. +! +!! +!!** IMPLICIT ARGUMENTS +!! ------------------ +!! NONE +!! +!! REFERENCE +!! --------- +!! +!! AUTHOR +!! ------ +!! E. Jezequel *Meteo France* +!! +!! MODIFICATIONS +!! ------------- +!! Original 01/06/21 +! P. Wautelet 04/2022: restructure stations for better performance, reduce memory usage and correct some problems/bugs +! P. Wautelet 27/04/2022: copied from modd_allstationn.f90 +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +! +! +USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX, NSTATPROFNAMELGTMAX + +IMPLICIT NONE + +PRIVATE + +PUBLIC :: NNUMB_PROF, XSTEP_PROF, XX_PROF, XY_PROF, XLAT_PROF, XLON_PROF, XZ_PROF +PUBLIC :: CNAME_PROF, CFILE_PROF !, LDIAG_SURFRAD + +PUBLIC :: ALLPROFILER_GOTO_MODEL + +TYPE ALLPROFILER_t +! +!------------------------------------------------------------------------------------------- +! +! + INTEGER :: NNUMB_PROF !Number of stations as defined in namelist + REAL, DIMENSION(100) :: XX_PROF, XY_PROF, XZ_PROF, XLAT_PROF, XLON_PROF + CHARACTER(LEN=NSTATPROFNAMELGTMAX), DIMENSION(100) :: CNAME_PROF + CHARACTER(LEN=NFILENAMELGTMAX) :: CFILE_PROF + REAL :: XSTEP_PROF +! LOGICAL :: LDIAG_SURFRAD + ! +! +END TYPE ALLPROFILER_t + +TYPE(ALLPROFILER_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: ALLPROFILER_MODEL + +INTEGER, POINTER :: NNUMB_PROF=>NULL() +REAL, POINTER :: XSTEP_PROF=>NULL() +REAL, DIMENSION(:), POINTER :: XX_PROF=>NULL() +REAL, DIMENSION(:), POINTER :: XY_PROF=>NULL() +REAL, DIMENSION(:), POINTER :: XLAT_PROF=>NULL() +REAL, DIMENSION(:), POINTER :: XLON_PROF=>NULL() +REAL, DIMENSION(:), POINTER :: XZ_PROF=>NULL() +CHARACTER (LEN=NSTATPROFNAMELGTMAX),DIMENSION(:), POINTER :: CNAME_PROF=>NULL() +CHARACTER (LEN=NFILENAMELGTMAX),POINTER :: CFILE_PROF=>NULL() +!LOGICAL, POINTER :: LDIAG_SURFRAD=>NULL() +CONTAINS + +SUBROUTINE ALLPROFILER_GOTO_MODEL(KFROM, KTO) +INTEGER, INTENT(IN) :: KFROM, KTO +! +! Save current state for allocated arrays +! +! Current model is set to model KTO + +NNUMB_PROF =>ALLPROFILER_MODEL(KTO)%NNUMB_PROF +XSTEP_PROF =>ALLPROFILER_MODEL(KTO)%XSTEP_PROF +XX_PROF =>ALLPROFILER_MODEL(KTO)%XX_PROF +XY_PROF =>ALLPROFILER_MODEL(KTO)%XY_PROF +XZ_PROF =>ALLPROFILER_MODEL(KTO)%XZ_PROF +XLAT_PROF =>ALLPROFILER_MODEL(KTO)%XLAT_PROF +XLON_PROF =>ALLPROFILER_MODEL(KTO)%XLON_PROF +CNAME_PROF =>ALLPROFILER_MODEL(KTO)%CNAME_PROF +CFILE_PROF =>ALLPROFILER_MODEL(KTO)%CFILE_PROF +!LDIAG_SURFRAD =>ALLPROFILER_MODEL(KTO)%LDIAG_SURFRAD +END SUBROUTINE ALLPROFILER_GOTO_MODEL + +END MODULE MODD_ALLPROFILER_n diff --git a/src/MNH/modn_profilern.f90 b/src/MNH/modn_profilern.f90 new file mode 100644 index 000000000..d050fddcf --- /dev/null +++ b/src/MNH/modn_profilern.f90 @@ -0,0 +1,91 @@ +!MNH_LIC Copyright 2020-2022 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 for details. version 1. +!----------------------------------------------------------------- +!! +!! ##################### + MODULE MODN_PROFILER_n +!! ##################### +!! +!!*** *MODN_PROFILER* +!! +!! PURPOSE +!! ------- +! Namelist to define the stations +!! +!!** AUTHOR +!! ------ +!! E. Jézéquel *CNRM & IFPEN* +! +!! MODIFICATIONS +!! ------------- +!! Original 10/03/20 +! P. Wautelet 04/2022: restructure stations for better performance, reduce memory usage and correct some problems/bugs +! P. Wautelet 27/07/2022: copied from modn_stationn.f90 +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +USE MODD_ALLPROFILER_n, ONLY:& + NNUMB_PROF_n =>NNUMB_PROF ,& + XSTEP_PROF_n =>XSTEP_PROF ,& + XX_PROF_n =>XX_PROF ,& + XY_PROF_n =>XY_PROF ,& + XLAT_PROF_n =>XLAT_PROF ,& + XLON_PROF_n =>XLON_PROF ,& + XZ_PROF_n =>XZ_PROF ,& + CNAME_PROF_n =>CNAME_PROF ,& + CFILE_PROF_n =>CFILE_PROF !,& +! LDIAG_SURFRAD_n =>LDIAG_SURFRAD +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX, NSTATPROFNAMELGTMAX +! +!----------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ----------------- + +IMPLICIT NONE + +INTEGER ,SAVE:: NNUMB_PROF +REAL ,SAVE:: XSTEP_PROF +REAL, DIMENSION(100) ,SAVE:: XX_PROF, XY_PROF, XZ_PROF, XLAT_PROF, XLON_PROF +CHARACTER (LEN=NSTATPROFNAMELGTMAX), DIMENSION(100),SAVE:: CNAME_PROF +CHARACTER (LEN=NFILENAMELGTMAX), SAVE:: CFILE_PROF !filename +! LOGICAL ,SAVE:: LDIAG_SURFRAD + +NAMELIST /NAM_PROFILERn/ & + NNUMB_PROF, XSTEP_PROF, & + XX_PROF,XY_PROF,XZ_PROF,& + XLON_PROF,XLAT_PROF,& + CNAME_PROF,& + CFILE_PROF !,LDIAG_SURFRAD + +! +CONTAINS +! +SUBROUTINE INIT_NAM_PROFILERn + NNUMB_PROF = NNUMB_PROF_n + XSTEP_PROF = XSTEP_PROF_n + XX_PROF = XX_PROF_n + XY_PROF = XY_PROF_n + XLAT_PROF = XLAT_PROF_n + XLON_PROF = XLON_PROF_n + XZ_PROF = XZ_PROF_n + CNAME_PROF = CNAME_PROF_n + CFILE_PROF = CFILE_PROF_n +! LDIAG_SURFRAD= LDIAG_SURFRAD_n +END SUBROUTINE INIT_NAM_PROFILERn + +SUBROUTINE UPDATE_NAM_PROFILERn + NNUMB_PROF_n = NNUMB_PROF + XSTEP_PROF_n = XSTEP_PROF + XX_PROF_n = XX_PROF + XY_PROF_n = XY_PROF + XLAT_PROF_n = XLAT_PROF + XLON_PROF_n = XLON_PROF + XZ_PROF_n = XZ_PROF + CNAME_PROF_n = CNAME_PROF + CFILE_PROF_n = CFILE_PROF +! LDIAG_SURFRAD_n= LDIAG_SURFRAD +END SUBROUTINE UPDATE_NAM_PROFILERn +END MODULE MODN_PROFILER_n diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90 index 2f781f8e7..cc91eec5f 100644 --- a/src/MNH/read_desfmn.f90 +++ b/src/MNH/read_desfmn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 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 for details. version 1. @@ -195,6 +195,7 @@ END MODULE MODI_READ_DESFM_n !! Modification 02/2021 (F.Auguste) add IBM !! (T.Nagel) add turbulence recycling !! (E.Jezequel) add stations read from CSV file +! P. Wautelet 27/04/2022: add namelist for profilers !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -263,6 +264,7 @@ USE MODN_LATZ_EDFLX USE MODN_2D_FRC USE MODN_BLOWSNOW_n USE MODN_BLOWSNOW +USE MODN_PROFILER_n USE MODN_STATION_n ! USE MODN_PARAM_LIMA @@ -471,6 +473,12 @@ IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_BLANKn) CALL UPDATE_NAM_BLANKn END IF +CALL POSNAM(ILUDES,'NAM_PROFILERN',GFOUND,ILUOUT) +CALL INIT_NAM_PROFILERn +IF (GFOUND) THEN + READ(UNIT=ILUDES,NML=NAM_PROFILERN) + CALL UPDATE_NAM_PROFILERn +END IF CALL POSNAM(ILUDES,'NAM_STATIONN',GFOUND,ILUOUT) CALL INIT_NAM_STATIONn IF (GFOUND) THEN @@ -732,6 +740,9 @@ IF (NVERB >= 10) THEN ! WRITE(UNIT=ILUOUT,FMT="('********** BLANKn ******************')") WRITE(UNIT=ILUOUT,NML=NAM_BLANKn) +! + WRITE(UNIT=ILUOUT,FMT="('********** PROFILERn *****************')") + WRITE(UNIT=ILUOUT,NML=NAM_PROFILERn) ! WRITE(UNIT=ILUOUT,FMT="('********** STATIONn ******************')") WRITE(UNIT=ILUOUT,NML=NAM_STATIONn) diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 9db15fc16..f77b127fe 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 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 for details. version 1. @@ -303,6 +303,7 @@ END MODULE MODI_READ_EXSEG_n ! P. Wautelet 10/03/2021: move scalar variable name initializations to ini_nsv ! R. Honnert 23/04/2021: add ADAP mixing length and delete HRIO and BOUT from CMF_UPDRAFT ! S. Riette 11/05/2021 HighLow cloud +! P. Wautelet 27/04/2022: add namelist for profilers !------------------------------------------------------------------------------ ! !* 0. DECLARATIONS @@ -391,6 +392,7 @@ USE MODN_PARAM_MFSHALL_n USE MODN_PARAM_n ! realized in subroutine ini_model n USE MODN_PARAM_RAD_n USE MODN_PASPOL +USE MODN_PROFILER_n USE MODN_RECYCL_PARAM_n USE MODN_SALT USE MODN_SERIES @@ -498,6 +500,7 @@ CALL INIT_NAM_CH_MNHCN CALL INIT_NAM_CH_SOLVERN CALL INIT_NAM_SERIESN CALL INIT_NAM_BLOWSNOWN +CALL INIT_NAM_PROFILERn CALL INIT_NAM_STATIONn ! WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')") @@ -553,6 +556,8 @@ CALL POSNAM(ILUSEG,'NAM_EOL_ADNR',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADNR) CALL POSNAM(ILUSEG,'NAM_EOL_ALM',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ALM) +CALL POSNAM(ILUSEG,'NAM_PROFILERN',GFOUND,ILUOUT) +IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn) CALL POSNAM(ILUSEG,'NAM_STATIONN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn) ! @@ -2974,6 +2979,7 @@ CALL UPDATE_NAM_CH_MNHCN CALL UPDATE_NAM_CH_SOLVERN CALL UPDATE_NAM_SERIESN CALL UPDATE_NAM_BLOWSNOWN +CALL UPDATE_NAM_PROFILERn CALL UPDATE_NAM_STATIONn !------------------------------------------------------------------------------- WRITE(UNIT=ILUOUT,FMT='(/)') diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90 index 8be686e64..c88c912d4 100644 --- a/src/MNH/write_desfmn.f90 +++ b/src/MNH/write_desfmn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 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 for details. version 1. @@ -146,15 +146,19 @@ END MODULE MODI_WRITE_DESFM_n !! Modification V. Vionnet 07/2017 add blowing snow variables !! Modification F.Auguste 02/2021 add IBM !! E.Jezequel 02/2021 add stations read from CSV file +! P. Wautelet 27/04/2022: add namelist for profilers !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ USE MODD_CONF -USE MODD_DYN_n, ONLY: LHORELAX_SVLIMA -USE MODD_IO, ONLY: TFILEDATA -USE MODD_LUNIT_n, ONLY: TLUOUT +USE MODD_DYN_n, ONLY: LHORELAX_SVLIMA +USE MODD_IBM_LSF, ONLY: LIBM_LSF +USE MODD_IO, ONLY: TFILEDATA +USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_PARAMETERS +USE MODD_PROFILER_n, ONLY: LPROFILER +USE MODD_STATION_n, ONLY: LSTATION ! USE MODE_MSG ! @@ -205,7 +209,7 @@ USE MODN_BLOWSNOW_n USE MODN_BLOWSNOW USE MODN_IBM_PARAM_n USE MODN_RECYCL_PARAM_n -USE MODD_IBM_LSF, ONLY: LIBM_LSF +USE MODN_PROFILER_n USE MODN_STATION_n ! IMPLICIT NONE @@ -389,6 +393,9 @@ CALL INIT_NAM_BLOWSNOWn IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOWn) IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOW) ! +CALL INIT_NAM_PROFILERn +IF(LPROFILER) WRITE(UNIT=ILUSEG,NML=NAM_PROFILERn) +! CALL INIT_NAM_STATIONn IF(LSTATION) WRITE(UNIT=ILUSEG,NML=NAM_STATIONn) ! -- GitLab