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