- Timestamp:
- Aug 3, 2024, 2:56:58 PM (3 months ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/lmdz_precuremission.f90
r5159 r5160 1 ! Subroutine that calculates the emission of aerosols precursors 2 SUBROUTINE precuremission(ftsol, u10m_ec, v10m_ec, & 3 pctsrf, u_seri, v_seri, paprs, pplay, cdragh, & 4 cdragm, t_seri, q_seri, tsol, fracso2emis, & 5 frach2sofso2, bateau, zdz, zalt, & 6 kminbc, kmaxbc, pdtphys, scale_param_bb, & 7 scale_param_ind, iregion_ind, iregion_bb, & 8 nbreg_ind, nbreg_bb, & 9 lmt_so2ff_l, lmt_so2ff_h, lmt_so2nff, & 10 lmt_so2ba, lmt_so2bb_l, lmt_so2bb_h, & 11 lmt_so2volc_cont, lmt_altvolc_cont, & 12 lmt_so2volc_expl, lmt_altvolc_expl, & 13 lmt_dmsbio, lmt_h2sbio, lmt_dmsconc, & 14 lmt_dms, id_prec, id_fine, & 15 flux_sparam_ind, flux_sparam_bb, & 16 source_tr, flux_tr, tr_seri) 17 18 USE dimphy 19 USE indice_sol_mod 20 USE infotrac 21 ! USE phytracr_spl_mod, ONLY: nbreg_dust, nbreg_ind, nbreg_bb 22 USE lmdz_yomcst 23 24 USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm 25 USE lmdz_paramet 26 IMPLICIT NONE 27 28 29 INCLUDE "chem.h" 30 INCLUDE "chem_spla.h" 31 32 33 !============================= INPUT =================================== 34 INTEGER :: kminbc, kmaxbc 35 REAL :: ftsol(klon, nbsrf) ! temperature du sol par type 36 REAL :: tsol(klon) ! temperature du sol moyenne 37 REAL :: t_seri(klon, klev) ! temperature 38 REAL :: u_seri(klon, klev) ! vent 39 REAL :: v_seri(klon, klev) ! vent 40 REAL :: q_seri(klon, klev) ! vapeur d eau kg/kg 41 REAL :: u10m_ec(klon), v10m_ec(klon) ! vent a 10 metres 42 REAL :: pctsrf(klon, nbsrf) 43 REAL :: pdtphys ! pas d'integration pour la physique (seconde) 44 REAL :: paprs(klon, klev + 1) ! pression pour chaque inter-couche (en Pa) 45 REAL :: pplay(klon, klev) ! pression pour le mileu de chaque couche (en Pa) 46 REAL :: cdragh(klon), cdragm(klon) 47 REAL :: fracso2emis !--fraction so2 emis en so2 48 REAL :: frach2sofso2 !--fraction h2s from so2 49 REAL :: zdz(klon, klev) 50 LOGICAL :: edgar, bateau 51 INTEGER :: id_prec, id_fine 52 53 !------------------------- Scaling Parameters -------------------------- 54 55 INTEGER :: nbreg_ind, nbreg_bb 56 INTEGER :: iregion_ind(klon) !Defines regions for SO2, BC & OM 57 INTEGER :: iregion_bb(klon) !Defines regions for SO2, BC & OM 58 REAL :: scale_param_bb(nbreg_bb) !Scaling parameter for biomas burning 59 REAL :: scale_param_ind(nbreg_ind) !Scaling parameter for industrial emissions 60 61 !============================= OUTPUT ================================== 62 63 REAL :: source_tr(klon, nbtr) 64 REAL :: flux_tr(klon, nbtr) 65 REAL :: tr_seri(klon, klev, nbtr) ! traceur 66 REAL :: flux_sparam_ind(klon), flux_sparam_bb(klon) 67 !========================= LOCAL VARIABLES ============================= 68 INTEGER :: i, k, kkk_cont(klon), kkk_expl(klon) 69 REAL :: zalt(klon, klev), zaltmid(klon, klev) 70 REAL :: zzdz 71 !------------------------- SULFUR emissions ---------------------------- 72 REAL :: lmt_so2volc_cont(klon) ! emissions so2 volcan (continuous) 73 REAL :: lmt_altvolc_cont(klon) ! altitude so2 volcan (continuous) 74 REAL :: lmt_so2volc_expl(klon) ! emissions so2 volcan (explosive) 75 REAL :: lmt_altvolc_expl(klon) ! altitude so2 volcan (explosive) 76 REAL :: lmt_so2ff_l(klon) ! emissions so2 fossil fuel (low) 77 REAL :: lmt_so2ff_h(klon) ! emissions so2 fossil fuel (high) 78 REAL :: lmt_so2nff(klon) ! emissions so2 non-fossil fuel 79 REAL :: lmt_so2bb_l(klon) ! emissions de so2 biomass burning (low) 80 REAL :: lmt_so2bb_h(klon) ! emissions de so2 biomass burning (high) 81 REAL :: lmt_so2ba(klon) ! emissions de so2 bateau 82 REAL :: lmt_dms(klon) ! emissions de dms 83 REAL :: lmt_dmsconc(klon) ! concentration de dms oceanique 84 REAL :: lmt_dmsbio(klon) ! emissions de dms bio 85 REAL :: lmt_h2sbio(klon) ! emissions de h2s bio 86 87 EXTERNAL condsurfs, liss, nightingale 88 !========================================================================= 89 ! Modifications introduced by NHL 90 ! -Variables to save fluxes were introduced 91 ! -lmt_so2ba was multiplied by fracso2emis in line 117 92 ! -scale_param_bb was introduced in line 105 93 ! The last two modifications were errors existing in the original version 94 !========================================================================= 95 !========================================================================= 96 ! LOW LEVEL EMISSIONS 97 !========================================================================= 98 99 CALL nightingale(u_seri, v_seri, u10m_ec, v10m_ec, paprs, & 100 pplay, cdragh, cdragm, t_seri, q_seri, ftsol, & 101 tsol, pctsrf, lmt_dmsconc, lmt_dms) 102 103 IF (.NOT.bateau) THEN 1 MODULE lmdz_precureemission 2 IMPLICIT NONE; PRIVATE 3 PUBLIC precuremission 4 5 CONTAINS 6 7 ! Subroutine that calculates the emission of aerosols precursors 8 SUBROUTINE precuremission(ftsol, u10m_ec, v10m_ec, & 9 pctsrf, u_seri, v_seri, paprs, pplay, cdragh, & 10 cdragm, t_seri, q_seri, tsol, fracso2emis, & 11 frach2sofso2, bateau, zdz, zalt, & 12 kminbc, kmaxbc, pdtphys, scale_param_bb, & 13 scale_param_ind, iregion_ind, iregion_bb, & 14 nbreg_ind, nbreg_bb, & 15 lmt_so2ff_l, lmt_so2ff_h, lmt_so2nff, & 16 lmt_so2ba, lmt_so2bb_l, lmt_so2bb_h, & 17 lmt_so2volc_cont, lmt_altvolc_cont, & 18 lmt_so2volc_expl, lmt_altvolc_expl, & 19 lmt_dmsbio, lmt_h2sbio, lmt_dmsconc, & 20 lmt_dms, id_prec, id_fine, & 21 flux_sparam_ind, flux_sparam_bb, & 22 source_tr, flux_tr, tr_seri) 23 24 USE dimphy 25 USE indice_sol_mod 26 USE infotrac 27 USE lmdz_yomcst 28 29 USE lmdz_paramet 30 USE lmdz_chem, ONLY: masse_s 31 USE lmdz_chem_spla, ONLY: masse_ammsulfate 32 IMPLICIT NONE 33 34 !============================= INPUT =================================== 35 INTEGER :: kminbc, kmaxbc 36 REAL :: ftsol(klon, nbsrf) ! temperature du sol par type 37 REAL :: tsol(klon) ! temperature du sol moyenne 38 REAL :: t_seri(klon, klev) ! temperature 39 REAL :: u_seri(klon, klev) ! vent 40 REAL :: v_seri(klon, klev) ! vent 41 REAL :: q_seri(klon, klev) ! vapeur d eau kg/kg 42 REAL :: u10m_ec(klon), v10m_ec(klon) ! vent a 10 metres 43 REAL :: pctsrf(klon, nbsrf) 44 REAL :: pdtphys ! pas d'integration pour la physique (seconde) 45 REAL :: paprs(klon, klev + 1) ! pression pour chaque inter-couche (en Pa) 46 REAL :: pplay(klon, klev) ! pression pour le mileu de chaque couche (en Pa) 47 REAL :: cdragh(klon), cdragm(klon) 48 REAL :: fracso2emis !--fraction so2 emis en so2 49 REAL :: frach2sofso2 !--fraction h2s from so2 50 REAL :: zdz(klon, klev) 51 LOGICAL :: edgar, bateau 52 INTEGER :: id_prec, id_fine 53 54 !------------------------- Scaling Parameters -------------------------- 55 56 INTEGER :: nbreg_ind, nbreg_bb 57 INTEGER :: iregion_ind(klon) !Defines regions for SO2, BC & OM 58 INTEGER :: iregion_bb(klon) !Defines regions for SO2, BC & OM 59 REAL :: scale_param_bb(nbreg_bb) !Scaling parameter for biomas burning 60 REAL :: scale_param_ind(nbreg_ind) !Scaling parameter for industrial emissions 61 62 !============================= OUTPUT ================================== 63 64 REAL :: source_tr(klon, nbtr) 65 REAL :: flux_tr(klon, nbtr) 66 REAL :: tr_seri(klon, klev, nbtr) ! traceur 67 REAL :: flux_sparam_ind(klon), flux_sparam_bb(klon) 68 !========================= LOCAL VARIABLES ============================= 69 INTEGER :: i, k, kkk_cont(klon), kkk_expl(klon) 70 REAL :: zalt(klon, klev), zaltmid(klon, klev) 71 REAL :: zzdz 72 !------------------------- SULFUR emissions ---------------------------- 73 REAL :: lmt_so2volc_cont(klon) ! emissions so2 volcan (continuous) 74 REAL :: lmt_altvolc_cont(klon) ! altitude so2 volcan (continuous) 75 REAL :: lmt_so2volc_expl(klon) ! emissions so2 volcan (explosive) 76 REAL :: lmt_altvolc_expl(klon) ! altitude so2 volcan (explosive) 77 REAL :: lmt_so2ff_l(klon) ! emissions so2 fossil fuel (low) 78 REAL :: lmt_so2ff_h(klon) ! emissions so2 fossil fuel (high) 79 REAL :: lmt_so2nff(klon) ! emissions so2 non-fossil fuel 80 REAL :: lmt_so2bb_l(klon) ! emissions de so2 biomass burning (low) 81 REAL :: lmt_so2bb_h(klon) ! emissions de so2 biomass burning (high) 82 REAL :: lmt_so2ba(klon) ! emissions de so2 bateau 83 REAL :: lmt_dms(klon) ! emissions de dms 84 REAL :: lmt_dmsconc(klon) ! concentration de dms oceanique 85 REAL :: lmt_dmsbio(klon) ! emissions de dms bio 86 REAL :: lmt_h2sbio(klon) ! emissions de h2s bio 87 88 EXTERNAL condsurfs, liss, nightingale 89 !========================================================================= 90 ! Modifications introduced by NHL 91 ! -Variables to save fluxes were introduced 92 ! -lmt_so2ba was multiplied by fracso2emis in line 117 93 ! -scale_param_bb was introduced in line 105 94 ! The last two modifications were errors existing in the original version 95 !========================================================================= 96 !========================================================================= 97 ! LOW LEVEL EMISSIONS 98 !========================================================================= 99 100 CALL nightingale(u_seri, v_seri, u10m_ec, v10m_ec, paprs, & 101 pplay, cdragh, cdragm, t_seri, q_seri, ftsol, & 102 tsol, pctsrf, lmt_dmsconc, lmt_dms) 103 104 IF (.NOT.bateau) THEN 105 DO i = 1, klon 106 lmt_so2ba(i) = 0.0 107 ENDDO 108 ENDIF 109 104 110 DO i = 1, klon 105 lmt_so2ba(i) = 0.0 106 ENDDO 107 ENDIF 108 109 DO i = 1, klon 110 IF (iregion_ind(i)>0) THEN 111 IF(id_prec>0) source_tr(i, id_prec) = source_tr(i, id_prec) & 111 IF (iregion_ind(i)>0) THEN 112 IF(id_prec>0) source_tr(i, id_prec) = source_tr(i, id_prec) & 113 + fracso2emis & 114 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) * 1.e4 & 115 + scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) * 1.e4 & 116 * frach2sofso2 ! molec/m2/s 117 118 IF(id_fine>0) source_tr(i, id_fine) = & 119 source_tr(i, id_fine) + (1 - fracso2emis) & 120 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) & 121 * 1.e4 * masse_ammsulfate / RNAVO ! g/m2/s 122 123 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) + (& 124 scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 125 lmt_so2ff_h(i)) & 126 * frach2sofso2 & 127 + scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 128 lmt_so2ff_h(i)) & 129 * fracso2emis & 130 ) * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 131 132 IF(id_fine>0) flux_tr(i, id_fine) = & 133 flux_tr(i, id_fine) + (1 - fracso2emis) & 134 * scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 135 lmt_so2ff_h(i)) & 136 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 137 138 flux_sparam_ind(i) = flux_sparam_ind(i) + (1 - fracso2emis) & 139 * scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 140 lmt_so2ff_h(i)) & 141 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 142 ENDIF 143 IF (iregion_bb(i)>0) THEN 144 IF(id_prec>0) source_tr(i, id_prec) = & 145 source_tr(i, id_prec) + fracso2emis & 146 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 147 * (1. - pctsrf(i, is_oce)) * 1.e4 148 149 IF(id_fine>0) source_tr(i, id_fine) = & 150 source_tr(i, id_fine) + (1 - fracso2emis) & 151 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) * & 152 (1. - pctsrf(i, is_oce)) * 1.e4 * & 153 masse_ammsulfate / RNAVO ! g/m2/s 154 155 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) + & 156 (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 157 + scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 158 * (1. - pctsrf(i, is_oce)) * fracso2emis & 159 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 160 161 IF(id_fine>0) flux_tr(i, id_fine) = & 162 flux_tr(i, id_fine) + (1 - fracso2emis) & 163 * (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 164 + scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 165 * (1. - pctsrf(i, is_oce)) & 166 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 167 168 flux_sparam_bb(i) = & 169 scale_param_bb(iregion_bb(i)) * (lmt_so2bb_l(i) + & 170 lmt_so2bb_h(i)) & 171 * (1. - pctsrf(i, is_oce)) * fracso2emis & 172 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 173 flux_sparam_bb(i) = flux_sparam_bb(i) + (1 - fracso2emis) * & 174 (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) + & 175 scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 176 * (1. - pctsrf(i, is_oce)) & 177 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 178 ENDIF 179 IF(id_prec>0) source_tr(i, id_prec) = source_tr(i, id_prec) & 112 180 + fracso2emis & 113 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) * 1.e4 & 114 + scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) * 1.e4 & 115 * frach2sofso2 ! molec/m2/s 116 117 IF(id_fine>0) source_tr(i, id_fine) = & 118 source_tr(i, id_fine) + (1 - fracso2emis) & 119 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_l(i) & 120 * 1.e4 * masse_ammsulfate / RNAVO ! g/m2/s 121 122 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) + (& 123 scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 124 lmt_so2ff_h(i)) & 125 * frach2sofso2 & 126 + scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 127 lmt_so2ff_h(i)) & 128 * fracso2emis & 129 ) * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 130 131 IF(id_fine>0) flux_tr(i, id_fine) = & 132 flux_tr(i, id_fine) + (1 - fracso2emis) & 133 * scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 134 lmt_so2ff_h(i)) & 181 * (lmt_so2ba(i) + lmt_so2nff(i)) * 1.e4 & 182 + (lmt_h2sbio(i) & 183 + lmt_dms(i) + lmt_dmsbio(i)) * 1.e4 ! molec/m2/s 184 185 IF(id_fine>0) source_tr(i, id_fine) = source_tr(i, id_fine) & 186 + (1 - fracso2emis) & 187 * (lmt_so2ba(i) + lmt_so2nff(i)) * 1.e4 * & 188 masse_ammsulfate / RNAVO ! g/m2/s 189 190 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) & 191 + (lmt_h2sbio(i) & 192 + lmt_so2volc_cont(i) + lmt_so2volc_expl(i) & 193 + (lmt_so2ba(i) + lmt_so2nff(i)) * fracso2emis & 194 + lmt_dms(i) + lmt_dmsbio(i)) & 195 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 196 197 IF(id_fine>0) flux_tr(i, id_fine) = flux_tr(i, id_fine) & 198 + (1 - fracso2emis) & 199 * (lmt_so2ba(i) + lmt_so2nff(i)) & 135 200 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 136 201 137 202 flux_sparam_ind(i) = flux_sparam_ind(i) + (1 - fracso2emis) & 138 * scale_param_ind(iregion_ind(i)) * (lmt_so2ff_l(i) + & 139 lmt_so2ff_h(i)) & 203 * lmt_so2nff(i) & 140 204 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 205 206 ENDDO 207 208 !======================================================================== 209 ! HIGH LEVEL EMISSIONS 210 !======================================================================== 211 ! Source de SO2 volcaniques 212 DO i = 1, klon 213 kkk_cont(i) = 1 214 kkk_expl(i) = 1 215 ENDDO 216 DO k = 1, klev - 1 217 DO i = 1, klon 218 zaltmid(i, k) = zalt(i, k) + zdz(i, k) / 2. 219 IF (zalt(i, k + 1)<lmt_altvolc_cont(i)) kkk_cont(i) = k + 1 220 IF (zalt(i, k + 1)<lmt_altvolc_expl(i)) kkk_expl(i) = k + 1 221 ENDDO 222 ENDDO 223 IF(id_prec>0) THEN 224 DO i = 1, klon 225 tr_seri(i, kkk_cont(i), id_prec) = tr_seri(i, kkk_cont(i), id_prec) + & 226 lmt_so2volc_cont(i) / zdz(i, kkk_cont(i)) / 100. * pdtphys 227 tr_seri(i, kkk_expl(i), id_prec) = tr_seri(i, kkk_expl(i), id_prec) + & 228 lmt_so2volc_expl(i) / zdz(i, kkk_expl(i)) / 100. * pdtphys 229 ENDDO 141 230 ENDIF 142 IF (iregion_bb(i)>0) THEN 143 IF(id_prec>0) source_tr(i, id_prec) = & 144 source_tr(i, id_prec) + fracso2emis & 145 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 146 * (1. - pctsrf(i, is_oce)) * 1.e4 147 148 IF(id_fine>0) source_tr(i, id_fine) = & 149 source_tr(i, id_fine) + (1 - fracso2emis) & 150 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) * & 151 (1. - pctsrf(i, is_oce)) * 1.e4 * & 152 masse_ammsulfate / RNAVO ! g/m2/s 153 154 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) + & 155 (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 156 + scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 157 * (1. - pctsrf(i, is_oce)) * fracso2emis & 158 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 159 160 IF(id_fine>0) flux_tr(i, id_fine) = & 161 flux_tr(i, id_fine) + (1 - fracso2emis) & 162 * (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) & 163 + scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 164 * (1. - pctsrf(i, is_oce)) & 165 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 166 167 flux_sparam_bb(i) = & 168 scale_param_bb(iregion_bb(i)) * (lmt_so2bb_l(i) + & 169 lmt_so2bb_h(i)) & 170 * (1. - pctsrf(i, is_oce)) * fracso2emis & 171 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 172 flux_sparam_bb(i) = flux_sparam_bb(i) + (1 - fracso2emis) * & 173 (scale_param_bb(iregion_bb(i)) * lmt_so2bb_l(i) + & 174 scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i)) & 175 * (1. - pctsrf(i, is_oce)) & 176 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 177 ENDIF 178 IF(id_prec>0) source_tr(i, id_prec) = source_tr(i, id_prec) & 179 + fracso2emis & 180 * (lmt_so2ba(i) + lmt_so2nff(i)) * 1.e4 & 181 + (lmt_h2sbio(i) & 182 + lmt_dms(i) + lmt_dmsbio(i)) * 1.e4 ! molec/m2/s 183 184 IF(id_fine>0) source_tr(i, id_fine) = source_tr(i, id_fine) & 185 + (1 - fracso2emis) & 186 * (lmt_so2ba(i) + lmt_so2nff(i)) * 1.e4 * & 187 masse_ammsulfate / RNAVO ! g/m2/s 188 189 IF(id_prec>0) flux_tr(i, id_prec) = flux_tr(i, id_prec) & 190 + (lmt_h2sbio(i) & 191 + lmt_so2volc_cont(i) + lmt_so2volc_expl(i) & 192 + (lmt_so2ba(i) + lmt_so2nff(i)) * fracso2emis & 193 + lmt_dms(i) + lmt_dmsbio(i)) & 194 * 1.e4 / RNAVO * masse_s * 1.e3 ! mgS/m2/s 195 196 IF(id_fine>0) flux_tr(i, id_fine) = flux_tr(i, id_fine) & 197 + (1 - fracso2emis) & 198 * (lmt_so2ba(i) + lmt_so2nff(i)) & 199 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 200 201 flux_sparam_ind(i) = flux_sparam_ind(i) + (1 - fracso2emis) & 202 * lmt_so2nff(i) & 203 * 1.e4 / RNAVO * masse_ammsulfate * 1.e3 ! mgS/m2/s 204 205 ENDDO 206 207 !======================================================================== 208 ! HIGH LEVEL EMISSIONS 209 !======================================================================== 210 ! Source de SO2 volcaniques 211 DO i = 1, klon 212 kkk_cont(i) = 1 213 kkk_expl(i) = 1 214 ENDDO 215 DO k = 1, klev - 1 231 ! Sources hautes de SO2 232 233 234 !--only GEIA SO2 emissions has high emissions 235 !--unit: molec/cm2/s divided by layer height (in cm) multiplied by timestep 236 237 k = 2 !introducing emissions in level 2 216 238 DO i = 1, klon 217 zaltmid(i, k) = zalt(i, k) + zdz(i, k) / 2. 218 IF (zalt(i, k + 1)<lmt_altvolc_cont(i)) kkk_cont(i) = k + 1 219 IF (zalt(i, k + 1)<lmt_altvolc_expl(i)) kkk_expl(i) = k + 1 220 ENDDO 221 ENDDO 222 IF(id_prec>0) THEN 223 DO i = 1, klon 224 tr_seri(i, kkk_cont(i), id_prec) = tr_seri(i, kkk_cont(i), id_prec) + & 225 lmt_so2volc_cont(i) / zdz(i, kkk_cont(i)) / 100. * pdtphys 226 tr_seri(i, kkk_expl(i), id_prec) = tr_seri(i, kkk_expl(i), id_prec) + & 227 lmt_so2volc_expl(i) / zdz(i, kkk_expl(i)) / 100. * pdtphys 228 ENDDO 229 ENDIF 230 ! Sources hautes de SO2 231 232 233 !--only GEIA SO2 emissions has high emissions 234 !--unit: molec/cm2/s divided by layer height (in cm) multiplied by timestep 235 236 k = 2 !introducing emissions in level 2 237 DO i = 1, klon 238 239 IF (iregion_bb(i)>0) THEN 240 IF(id_prec>0) tr_seri(i, k, id_prec) = & 241 tr_seri(i, k, id_prec) + fracso2emis & 242 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i) & 243 / zdz(i, k) / 100. * pdtphys 244 245 IF(id_fine>0) tr_seri(i, k, id_fine) = tr_seri(i, k, id_fine) & 246 + (1. - fracso2emis) & 247 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i) & 248 * masse_ammsulfate / RNAVO / zdz(i, k) / 100. * pdtphys !g/cm3 249 ENDIF 250 IF (iregion_ind(i)>0) THEN 251 IF(id_prec>0) tr_seri(i, k, id_prec) = & 252 tr_seri(i, k, id_prec) + (fracso2emis & 253 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i) & 254 + frach2sofso2 & 255 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i)) & 256 / zdz(i, k) / 100. * pdtphys 257 258 IF(id_fine>0) tr_seri(i, k, id_fine) = tr_seri(i, k, id_fine) & 259 + (1. - fracso2emis) & 260 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i) & 261 * masse_ammsulfate / RNAVO / zdz(i, k) / 100. * pdtphys !g/cm3 262 ENDIF 263 264 ENDDO 265 266 END SUBROUTINE precuremission 239 240 IF (iregion_bb(i)>0) THEN 241 IF(id_prec>0) tr_seri(i, k, id_prec) = & 242 tr_seri(i, k, id_prec) + fracso2emis & 243 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i) & 244 / zdz(i, k) / 100. * pdtphys 245 246 IF(id_fine>0) tr_seri(i, k, id_fine) = tr_seri(i, k, id_fine) & 247 + (1. - fracso2emis) & 248 * scale_param_bb(iregion_bb(i)) * lmt_so2bb_h(i) & 249 * masse_ammsulfate / RNAVO / zdz(i, k) / 100. * pdtphys !g/cm3 250 ENDIF 251 IF (iregion_ind(i)>0) THEN 252 IF(id_prec>0) tr_seri(i, k, id_prec) = & 253 tr_seri(i, k, id_prec) + (fracso2emis & 254 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i) & 255 + frach2sofso2 & 256 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i)) & 257 / zdz(i, k) / 100. * pdtphys 258 259 IF(id_fine>0) tr_seri(i, k, id_fine) = tr_seri(i, k, id_fine) & 260 + (1. - fracso2emis) & 261 * scale_param_ind(iregion_ind(i)) * lmt_so2ff_h(i) & 262 * masse_ammsulfate / RNAVO / zdz(i, k) / 100. * pdtphys !g/cm3 263 ENDIF 264 265 ENDDO 266 267 END SUBROUTINE precuremission 268 END MODULE lmdz_precureemission
Note: See TracChangeset
for help on using the changeset viewer.