From b8f1cd9b1b74862a1c67bb046a8253d922e09fc7 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 31 Jan 2023 16:16:35 +0100 Subject: [PATCH] P/.Tulet 31/01/22023: bugfix, possibility to have emissions of aerosols in PGD but not activating chemistry in the time-simulation emission in PGD is written if LCH_EMIS=T / LCH_SURF_EMIS is a flag activating emission flux durint the run LCH_EMIS is kept T if emissions are found in PGD BUT the interpolation table in prep_nest_pgd is built only if LCH_SURF_EMIS=F or LUSECHEM=F (==> NEQ=0 in SURFEX) ==> testing LCH_SURF_EMIS and NEQ is moved in ch_init_emissionn.F90 and ch_init_snapn.F90 --- src/SURFEX/ch_init_emissionn.F90 | 7 ++++++- src/SURFEX/ch_init_snapn.F90 | 8 +++++++- src/SURFEX/init_surf_atmn.F90 | 6 ++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/SURFEX/ch_init_emissionn.F90 b/src/SURFEX/ch_init_emissionn.F90 index 041cfc9f2..ff8546da3 100644 --- a/src/SURFEX/ch_init_emissionn.F90 +++ b/src/SURFEX/ch_init_emissionn.F90 @@ -3,7 +3,8 @@ !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. ! ######### - SUBROUTINE CH_INIT_EMISSION_n (CHE, PCONVERSION, HSV, HPROGRAM,KLU,HINIT,PRHOA,HCHEM_SURF_FILE) + SUBROUTINE CH_INIT_EMISSION_n (CHE, PCONVERSION, HSV, HPROGRAM,KLU,HINIT,PRHOA,& + HCHEM_SURF_FILE, LCH_SURF_EMIS, KEQ) ! ####################################### ! !!**** *CH_INIT_EMIISION_n* - routine to initialize chemical emissions data structure @@ -68,6 +69,8 @@ CHARACTER(LEN=3), INTENT(IN) :: HINIT ! Flag to know if one initializes: ! ! an initial file REAL, DIMENSION(:),INTENT(IN) :: PRHOA ! air density CHARACTER(LEN=28), INTENT(IN) :: HCHEM_SURF_FILE ! ascii file for chemistry aggregation +LOGICAL, INTENT(IN) :: LCH_SURF_EMIS +INTEGER, INTENT(IN) :: KEQ ! !* 0.2 declarations of local variables ! @@ -223,6 +226,7 @@ IVERB=6 !* 3. Conversion and aggregation +IF ((LCH_SURF_EMIS).AND.(KEQ > 0)) THEN IF (HINIT == "ALL") THEN IF (INBOFF > 0) THEN CALL OPEN_NAMELIST(HPROGRAM,ICH,HFILE=HCHEM_SURF_FILE) @@ -242,6 +246,7 @@ IF (HINIT == "ALL") THEN NULLIFY(CHE%TSPRONOSLIST) END IF ENDIF +END IF DEALLOCATE(ITIMES,INBTIMES,IOFFNDX) WRITE(ILUOUT,*) '------ Leaving CH_INIT_EMISSION ------' diff --git a/src/SURFEX/ch_init_snapn.F90 b/src/SURFEX/ch_init_snapn.F90 index e81ddd907..bb0a26d3c 100644 --- a/src/SURFEX/ch_init_snapn.F90 +++ b/src/SURFEX/ch_init_snapn.F90 @@ -3,7 +3,8 @@ !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. ! ######### - SUBROUTINE CH_INIT_SNAP_n (CHN, HSV, HPROGRAM,KLU,HINIT,PRHOA,HCHEM_SURF_FILE) + SUBROUTINE CH_INIT_SNAP_n (CHN, HSV, HPROGRAM,KLU,HINIT,PRHOA,HCHEM_SURF_FILE,& + LCH_SURF_EMIS, KEQ) ! ####################################### ! !!**** *CH_INIT_EMIISION_TEMP_n* - routine to initialize chemical emissions data structure @@ -66,6 +67,9 @@ INTEGER, INTENT(IN) :: KLU ! number of points ! ! an initial file REAL, DIMENSION(:),INTENT(IN) :: PRHOA ! air density CHARACTER(LEN=28), INTENT(IN) :: HCHEM_SURF_FILE ! ascii file for chemistry aggregation +LOGICAL, INTENT(IN) :: LCH_SURF_EMIS +INTEGER, INTENT(IN) :: KEQ + ! !* 0.2 declarations of local variables ! @@ -185,6 +189,7 @@ IF (HPROGRAM=="NC ") DEALLOCATE(ZTEMP) !* 3. Conversion factor ! ----------------- ! +IF ((LCH_SURF_EMIS).AND.(KEQ > 0)) THEN IF (HINIT=='ALL') THEN CALL OPEN_NAMELIST(HPROGRAM,ICH,HFILE=HCHEM_SURF_FILE) CALL CH_OPEN_INPUTB("EMISUNIT", ICH, ILUOUT) @@ -206,6 +211,7 @@ IF (HINIT=='ALL') THEN CALL CLOSE_NAMELIST(HPROGRAM,ICH) !------------------------------------------------------------------------------- END IF +END IF ! IF (LHOOK) CALL DR_HOOK('CH_INIT_SNAP_N',1,ZHOOK_HANDLE) !------------------------------------------------------------------------------- diff --git a/src/SURFEX/init_surf_atmn.F90 b/src/SURFEX/init_surf_atmn.F90 index 79f682052..37ad1e914 100644 --- a/src/SURFEX/init_surf_atmn.F90 +++ b/src/SURFEX/init_surf_atmn.F90 @@ -433,10 +433,12 @@ IF (YSC%CHU%LCH_EMIS) THEN IF (YSC%CHU%CCH_EMIS=='AGGR') THEN CALL CH_INIT_EMISSION_n(YSC%CHE, YSC%CHU%XCONVERSION, CNAMES, & - HPROGRAM,YSC%U%NSIZE_FULL,HINIT,PRHOA,YSC%CHU%CCHEM_SURF_FILE) + HPROGRAM,YSC%U%NSIZE_FULL,HINIT,PRHOA,YSC%CHU%CCHEM_SURF_FILE,& + YSC%CHU%LCH_SURF_EMIS, YSC%SV%NBEQ) ELSE IF (YSC%CHU%CCH_EMIS=='SNAP') THEN CALL CH_INIT_SNAP_n(YSC%CHN, CNAMES, & - HPROGRAM,YSC%U%NSIZE_FULL,HINIT,PRHOA,YSC%CHU%CCHEM_SURF_FILE) + HPROGRAM,YSC%U%NSIZE_FULL,HINIT,PRHOA,YSC%CHU%CCHEM_SURF_FILE,& + YSC%CHU%LCH_SURF_EMIS, YSC%SV%NBEQ) END IF ! ENDIF -- GitLab