From 0413cd3b6950a1ebb73139430c0bf921b9861af2 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Thu, 11 Jul 2024 17:31:47 +0200 Subject: [PATCH] P.Tulet 11/07/2024: bugfix anthropic aerosols flux --- src/SURFEX/ch_aer_emission.F90 | 95 ++++++++++++++-------------------- 1 file changed, 38 insertions(+), 57 deletions(-) diff --git a/src/SURFEX/ch_aer_emission.F90 b/src/SURFEX/ch_aer_emission.F90 index eb3ad3af3..fa2bce166 100644 --- a/src/SURFEX/ch_aer_emission.F90 +++ b/src/SURFEX/ch_aer_emission.F90 @@ -140,11 +140,24 @@ IF (I_CH_DSTi ==-999) CALL ABOR1_SFX ('WRONG VALUE FOR I_CH_DSTi ') IF (I_CH_DSTj ==-999) CALL ABOR1_SFX ('WRONG VALUE FOR I_CH_DSTj ') ZMI(:) = 250. -ZMI(JP_AER_SO4) = 98. -ZMI(JP_AER_NO3) = 63. -ZMI(JP_AER_NH3) = 17. -ZMI(JP_AER_H2O) = 18. -ZMI(JP_AER_DST) = 100. +ZMI(JP_AER_SO4) = 98. +ZMI(JP_AER_NO3) = 63. +ZMI(JP_AER_NH3) = 17. +ZMI(JP_AER_H2O) = 18. +ZMI(JP_AER_BC) = 12. +ZMI(JP_AER_DST) = 100. +IF (NSOA .EQ. 10) THEN +ZMI(JP_AER_SOA1) = 88. +ZMI(JP_AER_SOA2) = 180. +ZMI(JP_AER_SOA3) = 1.5374857E+02 +ZMI(JP_AER_SOA4) = 1.9586780E+02 +ZMI(JP_AER_SOA5) = 195. +ZMI(JP_AER_SOA6) = 195. +ZMI(JP_AER_SOA7) = 165. +ZMI(JP_AER_SOA8) = 195. +ZMI(JP_AER_SOA9) = 270. +ZMI(JP_AER_SOA10) = 210. +END IF ! Aerosol Density ! Cf Ackermann (all to black carbon except water) @@ -181,52 +194,36 @@ IF ((LCO2PM).AND.(PRESENT(PFCO))) THEN ZVALBC= 5.* 0.6E-10 / 0.4E-8 ! CO / BC conversion factor ZVALOC= 5.* 0.3E-10 / 0.4E-8 ! CO / POM conversion factor ZFCO(:) = PFCO(:) + PFLUX(:,I_CH_OCi) = PFLUX(:,I_CH_OCi) + ZFCO(:) * ZVALOC / 2. + PFLUX(:,I_CH_OCj) = PFLUX(:,I_CH_OCj) + ZFCO(:) * ZVALOC + PFLUX(:,I_CH_BCi) = PFLUX(:,I_CH_BCi) + ZFCO(:) * ZVALBC / 2 + PFLUX(:,I_CH_BCj) = PFLUX(:,I_CH_BCj) + ZFCO(:) * ZVALBC END IF -! Initial aerosols fluxes have been transformed into molecu.m-2.s-1, -! conversion into are in kg.kg-1.m.s-1 -! conversion in kg.kg-1.m.s-1 -! -ZCONVERSION(:) = XAVOGADRO * PRHODREF(:) -! -PFLUX(:,I_CH_SO4i) = PFLUX(:,I_CH_SO4i) / ZCONVERSION(:) * ZMI(JP_AER_SO4)*1E-3 -PFLUX(:,I_CH_SO4j) = PFLUX(:,I_CH_SO4j) / ZCONVERSION(:) * ZMI(JP_AER_SO4)*1E-3 -PFLUX(:,I_CH_NO3i) = PFLUX(:,I_CH_NO3i) / ZCONVERSION(:) * ZMI(JP_AER_NO3)*1E-3 -PFLUX(:,I_CH_NO3j) = PFLUX(:,I_CH_NO3j) / ZCONVERSION(:) * ZMI(JP_AER_NO3)*1E-3 -PFLUX(:,I_CH_NH3i) = PFLUX(:,I_CH_NH3i) / ZCONVERSION(:) * ZMI(JP_AER_NH3)*1E-3 -PFLUX(:,I_CH_NH3j) = PFLUX(:,I_CH_NH3j) / ZCONVERSION(:) * ZMI(JP_AER_NH3)*1E-3 -PFLUX(:,I_CH_H2Oi) = PFLUX(:,I_CH_H2Oi) / ZCONVERSION(:) * ZMI(JP_AER_H2O)*1E-3 -PFLUX(:,I_CH_H2Oj) = PFLUX(:,I_CH_H2Oj) / ZCONVERSION(:) * ZMI(JP_AER_H2O)*1E-3 -PFLUX(:,I_CH_OCi) = (PFLUX(:,I_CH_OCi) + ZFCO(:) * ZVALOC / 2.) / ZCONVERSION(:) * ZMI(JP_AER_OC)*1E-3 -PFLUX(:,I_CH_OCj) = (PFLUX(:,I_CH_OCj) + ZFCO(:) * ZVALOC ) / ZCONVERSION(:) * ZMI(JP_AER_OC)*1E-3 -PFLUX(:,I_CH_BCi) = (PFLUX(:,I_CH_BCi) + ZFCO(:) * ZVALBC / 2.) / ZCONVERSION(:) * ZMI(JP_AER_BC)*1E-3 -PFLUX(:,I_CH_BCj) = (PFLUX(:,I_CH_BCj) + ZFCO(:) * ZVALBC ) / ZCONVERSION(:) * ZMI(JP_AER_BC)*1E-3 -PFLUX(:,I_CH_DSTi) = PFLUX(:,I_CH_DSTi) / ZCONVERSION(:) * ZMI(JP_AER_DST)*1E-3 -PFLUX(:,I_CH_DSTj) = PFLUX(:,I_CH_DSTj) / ZCONVERSION(:) * ZMI(JP_AER_DST)*1E-3 ! !* 1.0 transfer aerosol mass from gas to aerosol variables -! (and conversion of kg.kg-1.m.s-1 --> microgram.m-2.s-1) +! (and conversion of molecu.m-2.s-1 --> microgram.m-2.s-1) ! -ZFCTOTA(:,JP_AER_SO4,1) = PFLUX(:,I_CH_SO4i) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_SO4,2) = PFLUX(:,I_CH_SO4j) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_SO4,1) = PFLUX(:,I_CH_SO4i) *1E+6 * ZMI(JP_AER_SO4) / XAVOGADRO +ZFCTOTA(:,JP_AER_SO4,2) = PFLUX(:,I_CH_SO4j) *1E+6 * ZMI(JP_AER_SO4) / XAVOGADRO -ZFCTOTA(:,JP_AER_NH3,1) = PFLUX(:,I_CH_NH3i) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_NH3,2) = PFLUX(:,I_CH_NH3j) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_NH3,1) = PFLUX(:,I_CH_NH3i) *1E+6 * ZMI(JP_AER_NH3) / XAVOGADRO +ZFCTOTA(:,JP_AER_NH3,2) = PFLUX(:,I_CH_NH3j) *1E+6 * ZMI(JP_AER_NH3) / XAVOGADRO -ZFCTOTA(:,JP_AER_NO3,1) = PFLUX(:,I_CH_NO3i) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_NO3,2) = PFLUX(:,I_CH_NO3j) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_NO3,1) = PFLUX(:,I_CH_NO3i) *1E+6 * ZMI(JP_AER_NO3) / XAVOGADRO +ZFCTOTA(:,JP_AER_NO3,2) = PFLUX(:,I_CH_NO3j) *1E+6 * ZMI(JP_AER_NO3) / XAVOGADRO -ZFCTOTA(:,JP_AER_H2O,1) = PFLUX(:,I_CH_H2Oi) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_H2O,2) = PFLUX(:,I_CH_H2Oj) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_H2O,1) = PFLUX(:,I_CH_H2Oi) *1E+6 * ZMI(JP_AER_H2O) / XAVOGADRO +ZFCTOTA(:,JP_AER_H2O,2) = PFLUX(:,I_CH_H2Oj) *1E+6 * ZMI(JP_AER_H2O) / XAVOGADRO -ZFCTOTA(:,JP_AER_OC,1) = PFLUX(:,I_CH_OCi) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_OC,2) = PFLUX(:,I_CH_OCj) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_OC,1) = PFLUX(:,I_CH_OCi) *1E+6 * ZMI(JP_AER_OC) / XAVOGADRO +ZFCTOTA(:,JP_AER_OC,2) = PFLUX(:,I_CH_OCj) *1E+6 * ZMI(JP_AER_OC) / XAVOGADRO -ZFCTOTA(:,JP_AER_BC,1) = PFLUX(:,I_CH_BCi) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_BC,2) = PFLUX(:,I_CH_BCj) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_BC,1) = PFLUX(:,I_CH_BCi) *1E+6 * ZMI(JP_AER_BC) / XAVOGADRO +ZFCTOTA(:,JP_AER_BC,2) = PFLUX(:,I_CH_BCj) *1E+6 * ZMI(JP_AER_BC) / XAVOGADRO -ZFCTOTA(:,JP_AER_DST,1) = PFLUX(:,I_CH_DSTi) *1E+9 * PRHODREF(:) -ZFCTOTA(:,JP_AER_DST,2) = PFLUX(:,I_CH_DSTj) *1E+9 * PRHODREF(:) +ZFCTOTA(:,JP_AER_DST,1) = PFLUX(:,I_CH_DSTi)*1E+6 * ZMI(JP_AER_DST) / XAVOGADRO +ZFCTOTA(:,JP_AER_DST,2) = PFLUX(:,I_CH_DSTj)*1E+6 * ZMI(JP_AER_DST) / XAVOGADRO ! !* 1.1 calculate moment 3 flux from total aerosol mass ! @@ -258,23 +255,7 @@ PFLUX(:,I_CH_M0j) = ZFM(:,4) * 1E-6 / (ZDEN2MOL * PRHODREF(:)) IF (LVARSIGI) PFLUX(:,I_CH_M6i) = ZFM(:,3) / (ZDEN2MOL * PRHODREF(:)) IF (LVARSIGJ) PFLUX(:,I_CH_M6j) = ZFM(:,6) / (ZDEN2MOL * PRHODREF(:)) ! -! aerosol phase conversion kg/kg.m.s-1 into molecules.m-2.s-1 -PFLUX(:,I_CH_SO4i) = PFLUX(:,I_CH_SO4i) * ZCONVERSION(:) / (ZMI(JP_AER_SO4)*1E-3) -PFLUX(:,I_CH_SO4j) = PFLUX(:,I_CH_SO4j) * ZCONVERSION(:) / (ZMI(JP_AER_SO4)*1E-3) -PFLUX(:,I_CH_NO3i) = PFLUX(:,I_CH_NO3i) * ZCONVERSION(:) / (ZMI(JP_AER_NO3)*1E-3) -PFLUX(:,I_CH_NO3j) = PFLUX(:,I_CH_NO3j) * ZCONVERSION(:) / (ZMI(JP_AER_NO3)*1E-3) -PFLUX(:,I_CH_NH3i) = PFLUX(:,I_CH_NH3i) * ZCONVERSION(:) / (ZMI(JP_AER_NH3)*1E-3) -PFLUX(:,I_CH_NH3j) = PFLUX(:,I_CH_NH3j) * ZCONVERSION(:) / (ZMI(JP_AER_NH3)*1E-3) -PFLUX(:,I_CH_H2Oi) = PFLUX(:,I_CH_H2Oi) * ZCONVERSION(:) / (ZMI(JP_AER_H2O)*1E-3) -PFLUX(:,I_CH_H2Oj) = PFLUX(:,I_CH_H2Oj) * ZCONVERSION(:) / (ZMI(JP_AER_H2O)*1E-3) -! -PFLUX(:,I_CH_OCi) = PFLUX(:,I_CH_OCi) * ZCONVERSION(:) / (ZMI(JP_AER_OC)*1E-3) -PFLUX(:,I_CH_OCj) = PFLUX(:,I_CH_OCj) * ZCONVERSION(:) / (ZMI(JP_AER_OC)*1E-3) -PFLUX(:,I_CH_BCi) = PFLUX(:,I_CH_BCi) * ZCONVERSION(:) / (ZMI(JP_AER_BC)*1E-3) -PFLUX(:,I_CH_BCj) = PFLUX(:,I_CH_BCj) * ZCONVERSION(:) / (ZMI(JP_AER_BC)*1E-3) -PFLUX(:,I_CH_DSTi) = PFLUX(:,I_CH_DSTi) * ZCONVERSION(:) / (ZMI(JP_AER_DST)*1E-3) -PFLUX(:,I_CH_DSTj) = PFLUX(:,I_CH_DSTj) * ZCONVERSION(:) / (ZMI(JP_AER_DST)*1E-3) -! +ZCONVERSION(:) = XAVOGADRO * PRHODREF(:) / XMD ! conversion M0 and M6 ppv.m.s-1 into molecules.m-2.s-1 PFLUX(:,I_CH_M0i) = PFLUX(:,I_CH_M0i) * ZCONVERSION(:) PFLUX(:,I_CH_M0j) = PFLUX(:,I_CH_M0j) * ZCONVERSION(:) -- GitLab