From db3a833938ee4b984da7b94cd9258209b3c9da0c Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 9 Mar 2021 16:41:48 +0100 Subject: [PATCH] Philippe 09/03/2021: move some chemistry initializations to ini_nsv Necessary to ensure availability of chemistry scalar variables names in ini_nsv (for further developments) --- src/MNH/ini_nsv.f90 | 81 +++++++++++++++----------- src/MNH/ini_prog_var.f90 | 10 +--- src/MNH/prep_ideal_case.f90 | 8 +-- src/MNH/read_all_data_grib_case.f90 | 13 ++--- src/MNH/read_chem_data_netcdf_case.f90 | 10 +--- src/MNH/read_exsegn.f90 | 8 +-- src/MNH/spawn_model2.f90 | 5 +- 7 files changed, 60 insertions(+), 75 deletions(-) diff --git a/src/MNH/ini_nsv.f90 b/src/MNH/ini_nsv.f90 index 5299ffb8a..14ff53bec 100644 --- a/src/MNH/ini_nsv.f90 +++ b/src/MNH/ini_nsv.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-2021 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_INI_NSV ! ################### @@ -64,46 +65,48 @@ END MODULE MODI_INI_NSV !! J.escobar 04/08/2015 suit Pb with writ_lfin JSA increment , modif in ini_nsv to have good order initialization !! Modification 01/2016 (JP Pinty) Add LIMA and LUSECHEM condition !! Modification 07/2017 (V. Vionnet) Add blowing snow condition -!! +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE MODD_NSV -USE MODD_ELEC_DESCR, ONLY : CELECNAMES -USE MODD_CH_M9_n, ONLY : NEQ, NEQAQ -USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, CCH_SCHEME, LCH_CONV_LINOX -USE MODD_DIAG_FLAG,ONLY : LELECDIAG,LCHEMDIAG,LCHAQDIAG -USE MODD_PARAM_n, ONLY : CCLOUD, CELEC -USE MODD_DYN_n, ONLY : LHORELAX_SV,LHORELAX_SVC2R2,LHORELAX_SVC1R3, & - LHORELAX_SVLIMA, & - LHORELAX_SVELEC,LHORELAX_SVCHEM,LHORELAX_SVLG, & - LHORELAX_SVDST,LHORELAX_SVAER, LHORELAX_SVSLT, & - LHORELAX_SVPP,LHORELAX_SVCS, LHORELAX_SVCHIC, & - LHORELAX_SVSNW +USE MODD_BLOWSNOW, ONLY: LBLOWSNOW, NBLOWSNOW3D +USE MODD_CH_AEROSOL, ONLY: JPMODE, LAERINIT, LDEPOS_AER, LORILAM, LVARSIGI, LVARSIGJ, NCARB, NM6_AER, NSOA, NSP +USE MODD_CH_M9_n, ONLY: NEQ, NEQAQ +USE MODD_CH_MNHC_n, ONLY: LCH_PH, LUSECHEM, LUSECHAQ, LUSECHIC, CCH_SCHEME, LCH_CONV_LINOX +USE MODD_CONDSAMP, ONLY: LCONDSAMP, NCONDSAMP +USE MODD_CONF, ONLY: LLG, CPROGRAM, NVERB +USE MODD_CST, ONLY: XMNH_TINY +USE MODD_DIAG_FLAG, ONLY: LCHEMDIAG, LCHAQDIAG +USE MODD_DUST, ONLY: LDEPOS_DST, LDSTINIT, LDSTPRES, LDUST, LRGFIX_DST, LVARSIG, NMODE_DST +USE MODD_DYN_n, ONLY: LHORELAX_SV,LHORELAX_SVC2R2,LHORELAX_SVC1R3, & + LHORELAX_SVLIMA, & + LHORELAX_SVELEC,LHORELAX_SVCHEM,LHORELAX_SVLG, & + LHORELAX_SVDST,LHORELAX_SVAER, LHORELAX_SVSLT, & + LHORELAX_SVPP,LHORELAX_SVCS, LHORELAX_SVCHIC, & + LHORELAX_SVSNW +#ifdef MNH_FOREFIRE +USE MODD_DYN_n, ONLY: LHORELAX_SVFF +#endif +USE MODD_ELEC_DESCR, ONLY: LLNOX_EXPLICIT +USE MODD_ELEC_DESCR, ONLY: CELECNAMES #ifdef MNH_FOREFIRE -USE MODD_DYN_n, ONLY : LHORELAX_SVFF USE MODD_FOREFIRE #endif -USE MODD_CONF, ONLY : LLG, CPROGRAM -USE MODD_LG -USE MODD_DUST -USE MODD_SALT -USE MODD_PASPOL -USE MODD_BLOWSNOW -USE MODD_CONDSAMP -USE MODD_CH_AEROSOL -USE MODD_PREP_REAL, ONLY: XT_LS -USE MODD_ELEC_DESCR, ONLY : LLNOX_EXPLICIT -USE MODD_PARAM_C2R2, ONLY : LSUPSAT -! -USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, LSCAV, LAERO_MASS, & - NMOD_IFN, NMOD_IMM, LHHONI, & - LWARM, LCOLD, LRAIN -! -USE MODI_UPDATE_NSV -USE MODD_CST, ONLY : XMNH_TINY +USE MODD_PARAM_n, ONLY: CCLOUD, CELEC +USE MODD_LG, ONLY: XLG1MIN, XLG2MIN, XLG3MIN +USE MODD_LUNIT_n, ONLY: TLUOUT +USE MODD_NSV +USE MODD_PARAM_C2R2, ONLY: LSUPSAT +USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, LSCAV, LAERO_MASS, & + NMOD_IFN, NMOD_IMM, LHHONI, & + LWARM, LCOLD, LRAIN +USE MODD_PASPOL, ONLY: LPASPOL, NRELEASE +USE MODD_PREP_REAL, ONLY: XT_LS +USE MODD_SALT, ONLY: LRGFIX_SLT, LSALT, LSLTINIT, LSLTPRES, NMODE_SLT, LDEPOS_SLT, LVARSIG_SLT +! +USE MODI_UPDATE_NSV, ONLY: UPDATE_NSV ! IMPLICIT NONE ! @@ -115,11 +118,14 @@ INTEGER, INTENT(IN) :: KMI ! model index ! !* 0.2 Declarations of local variables ! +INTEGER :: ILUOUT INTEGER :: ISV ! total number of scalar variables ! !------------------------------------------------------------------------------- ! -LINI_NSV = .TRUE. +LINI_NSV = .TRUE. + +ILUOUT = TLUOUT%NLU ! ! Users scalar variables are first considered ! @@ -323,6 +329,11 @@ END IF ! ! scalar variables used in chemical core system ! +IF (LUSECHEM) THEN + CALL CH_INIT_SCHEME_n(KMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) + IF (LORILAM) CALL CH_AER_INIT_SOA(ILUOUT, NVERB) +END IF + IF (LUSECHEM .AND.(NEQ .GT. 0)) THEN NSV_CHEM_A(KMI) = NEQ NSV_CHEMBEG_A(KMI)= ISV+1 diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90 index 4c3c53a6c..cd0210ab8 100644 --- a/src/MNH/ini_prog_var.f90 +++ b/src/MNH/ini_prog_var.f90 @@ -96,6 +96,7 @@ END MODULE MODI_INI_PROG_VAR ! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables ! P. Wautelet 09/03/2021: simplify allocation of scalar variable names +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -130,8 +131,6 @@ USE MODE_MSG USE MODE_POS use mode_tools_ll, only: GET_INDICE_ll ! -USE MODI_CH_AER_INIT_SOA -USE MODI_CH_INIT_SCHEME_n USE MODI_PGDFILTER ! USE MODN_CH_ORILAM @@ -247,10 +246,7 @@ IF(PRESENT(HCHEMFILE)) THEN !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR','') END IF ! IIMAX -! check nsv to be read IF (.NOT.LDUST) THEN - ! Always initialize chemical scheme variables before INI_NSV call ! - CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) LUSECHEM = .TRUE. END IF IF (LORILAM) THEN @@ -270,7 +266,7 @@ IF(PRESENT(HCHEMFILE)) THEN IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT) ! initialise NSV_* variables ENDIF - CALL INI_NSV(1) + CALL INI_NSV(IMI) ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ! Read scalars in chem file @@ -300,8 +296,6 @@ IF(PRESENT(HCHEMFILE)) THEN END IF IF (LORILAM) THEN - CALL CH_AER_INIT_SOA(ILUOUT,NVERB) - ! TZFIELD%CSTDNAME = '' TZFIELD%CUNITS = 'ppp' TZFIELD%CDIR = 'XY' diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index a68b311e2..3fc3e4c85 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2021 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. @@ -318,6 +318,7 @@ ! P. Wautelet 19/04/2019: removed unused dummy arguments and variables ! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -388,11 +389,9 @@ USE MODI_UPDATE_METRICS USE MODI_SET_REF USE MODI_SET_PERTURB USE MODI_TOTAL_DMASS -USE MODI_CH_INIT_SCHEME_n USE MODI_CH_INIT_FIELD_n USE MODI_INI_NSV USE MODI_READ_PRE_IDEA_NAM_n -USE MODI_CH_AER_INIT_SOA USE MODI_ZSMT_PIC USE MODI_ZSMT_PGD USE MODI_READ_VER_GRID @@ -870,14 +869,11 @@ IF (CIDEAL == 'RSOU' .AND. NRR < 4 ) NRR=4 !* 3.5 Chemistry ! IF (LORILAM .OR. LCH_INIT_FIELD) THEN - ! Always initialize chemical scheme variables before INI_NSV call ! - CALL CH_INIT_SCHEME_n(1,LUSECHAQ,LUSECHIC,LCH_PH,NLUOUT,NVERB) LUSECHEM = .TRUE. IF (LORILAM) THEN CORGANIC = "MPMPO" LVARSIGI = .TRUE. LVARSIGJ = .TRUE. - CALL CH_AER_INIT_SOA(NLUOUT, NVERB) END IF END IF ! initialise NSV_* variables diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index d52833480..84c137991 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2021 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. @@ -134,7 +134,8 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE ! Q. Rodier 16/09/2019: switch of GRIB number ID for orography in ARPEGE/AROME in EPyGrAM ! Q. Rodier 27/01/2020: switch of GRIB number ID for orography and hydrometeors in ARPEGE/AROME in EPyGrAM v1.3.7 ! Q. Rodier 21/04/2020: correction GFS u and v wind component written in the right vertical order -! Q. Rodier 02/09/2020 : Read and interpol geopotential height for interpolation on isobaric surface Grid of NCEP +! Q. Rodier 02/09/2020: Read and interpol geopotential height for interpolation on isobaric surface Grid of NCEP +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -153,10 +154,7 @@ USE MODI_READ_VER_GRID USE MODI_XYTOLATLON USE MODI_HORIBL USE MODI_INI_NSV -USE MODI_CH_INIT_SCHEME_n USE MODI_REMOVAL_VORTEX -USE MODI_CH_INIT_CCS -USE MODI_CH_AER_INIT_SOA USE MODI_INI_CTURB USE MODI_CH_OPEN_INPUT ! @@ -1285,17 +1283,14 @@ DEALLOCATE(IINLO) !--------------------------------------------------------------------------------------- IF (IMODEL==5) THEN - ! Always initialize chemical scheme variables before INI_NSV call ! - CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT0,KVERB) LUSECHEM = .TRUE. IF (LORILAM) THEN CORGANIC = "MPMPO" LVARSIGI = .TRUE. LVARSIGJ = .TRUE. - CALL CH_AER_INIT_SOA(ILUOUT0, KVERB) END IF ! initialise NSV_* variables - CALL INI_NSV(1) + CALL INI_NSV(IMI) IF( HFILE=='ATM0' ) THEN ALLOCATE (XSV_LS(IIU,IJU,INLEVEL,NSV)) ELSE IF (HFILE=='CHEM' ) THEN diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index 2bcfc576c..faef2f0c5 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2012-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2012-2021 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. @@ -86,6 +86,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE !! J.Pianezzej 13/02/2019 : correction for use of MEGAN ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -120,8 +121,6 @@ USE MODE_TIME USE MODE_TOOLS, ONLY: UPCASE use mode_tools_ll, only: GET_DIM_EXT_ll ! -USE MODI_CH_AER_INIT_SOA -USE MODI_CH_INIT_SCHEME_n USE MODI_CH_OPEN_INPUT USE MODI_HORIBL USE MODI_INI_NSV @@ -427,17 +426,14 @@ enddo !------------------------------------------------------------------------ !* 3 Interpolation of MOZART variable !--------------------------------------------------------------------- - ! Always initialize chemical scheme variables before INI_NSV call ! - CALL CH_INIT_SCHEME_n(IMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT0,KVERB) LUSECHEM = .TRUE. IF (LORILAM) THEN CORGANIC = "MPMPO" LVARSIGI = .TRUE. LVARSIGJ = .TRUE. - CALL CH_AER_INIT_SOA(ILUOUT0, KVERB) END IF ! initialise NSV_* variables - CALL INI_NSV(1) + CALL INI_NSV(IMI) DEALLOCATE(XSV_LS) ALLOCATE (XSV_LS(IIU,IJU,ilevlen,NSV)) XSV_LS(:,:,:,:) = 0. diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index cb7cd3f98..f8a8740cc 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -296,6 +296,7 @@ END MODULE MODI_READ_EXSEG_n ! C. Lac 11/2019: correction in the drag formula and application to building in addition to tree ! Q. Rodier 03/2020: add abort if use of any LHORELAX and cyclic conditions ! P. Wautelet 09/03/2021: simplify allocation of scalar variable names +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !!------------------------------------------------------------------------------ ! !* 0. DECLARATIONS @@ -362,7 +363,6 @@ USE MODE_MSG ! USE MODI_TEST_NAM_VAR USE MODI_INI_NSV -USE MODI_CH_INIT_SCHEME_n USE MODN_CH_ORILAM USE MODD_CH_AEROSOL USE MODD_DUST @@ -1216,12 +1216,6 @@ IF ((LUSECHIC).AND.(LCH_RET_ICE)) THEN WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE IE NO CHEMICAL SPECIES IN ICE' ENDIF ! -IF (LUSECHEM) THEN - CALL CH_INIT_SCHEME_n(KMI,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) - IF (LORILAM) CALL CH_AER_INIT_SOA(ILUOUT, NVERB) -END IF -! - CALL UPDATE_NAM_CH_MNHCN CALL INI_NSV(KMI) ! diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90 index e5de7a4c7..0f1a298d8 100644 --- a/src/MNH/spawn_model2.f90 +++ b/src/MNH/spawn_model2.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2021 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. @@ -198,6 +198,7 @@ END MODULE MODI_SPAWN_MODEL2 ! P. Wautelet 14/03/2019: correct ZWS when variable not present in file ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine +! P. Wautelet 09/03/2021: move some chemistry initializations to ini_nsv !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -260,7 +261,6 @@ USE MODI_INI_BIKHARDT_n USE MODI_DEALLOCATE_MODEL1 USE MODI_BOUNDARIES USE MODI_INI_NSV -USE MODI_CH_INIT_SCHEME_n !$20140710 USE MODI_UPDATE_METRICS ! @@ -577,7 +577,6 @@ IF (NSV_CHEM>0) THEN LUSECHIC=.TRUE. ENDIF CCHEM_INPUT_FILE = HCHEM_INPUT_FILE - CALL CH_INIT_SCHEME_n(1,LUSECHAQ,LUSECHIC,LCH_PH,ILUOUT,NVERB) END IF ! CTURB = HTURB ! for MODD_PARAM2 -- GitLab