34 USE yomhook
,ONLY : lhook, dr_hook
35 USE parkind1
,ONLY : jprb
46 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pflux
47 REAL,
DIMENSION(:),
INTENT(IN) :: prhodref
48 INTEGER,
INTENT(IN) :: ksv_chsbeg
49 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: hsv
50 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: pfco
60 REAL,
DIMENSION(NSP+NCARB+NSOA) :: zfac, zrhoi, zmi
61 REAL,
DIMENSION(SIZE(PFLUX,1),NSP+NCARB+NSOA,JPMODE) :: zfctota
62 REAL,
DIMENSION(SIZE(PFLUX,1),JPIN) :: zfm
63 REAL,
DIMENSION(SIZE(PFLUX,1)) :: zfco
64 REAL,
DIMENSION(SIZE(PFLUX,1)) :: zconversion
67 REAL :: zemisradiusi, zemisradiusj
68 REAL :: zvalbc, zvaloc
69 INTEGER :: i_ch_m0i, i_ch_m0j, i_ch_m6i, i_ch_m6j, i_ch_h2oi, i_ch_h2oj,&
70 i_ch_so4i,i_ch_so4j, i_ch_no3i, i_ch_no3j, i_ch_nh3i, i_ch_nh3j,&
71 i_ch_oci, i_ch_ocj, i_ch_bci, i_ch_bcj , i_ch_dsti, i_ch_dstj
72 REAL(KIND=JPRB) :: zhook_handle
81 IF (lhook) CALL dr_hook(
'CH_AER_EMISSION',0,zhook_handle)
103 IF (trim(hsv(jsv)) ==
"M0I") i_ch_m0i=jsv-ksv_chsbeg+1
104 IF (trim(hsv(jsv)) ==
"M0J") i_ch_m0j=jsv-ksv_chsbeg+1
105 IF (trim(hsv(jsv)) ==
"M6I") i_ch_m6i=jsv-ksv_chsbeg+1
106 IF (trim(hsv(jsv)) ==
"M6J") i_ch_m6j=jsv-ksv_chsbeg+1
107 IF (trim(hsv(jsv)) ==
"H2OI") i_ch_h2oi=jsv-ksv_chsbeg+1
108 IF (trim(hsv(jsv)) ==
"H2OJ") i_ch_h2oj=jsv-ksv_chsbeg+1
109 IF (trim(hsv(jsv)) ==
"SO4I") i_ch_so4i=jsv-ksv_chsbeg+1
110 IF (trim(hsv(jsv)) ==
"SO4J") i_ch_so4j=jsv-ksv_chsbeg+1
111 IF (trim(hsv(jsv)) ==
"NO3I") i_ch_no3i=jsv-ksv_chsbeg+1
112 IF (trim(hsv(jsv)) ==
"NO3J") i_ch_no3j=jsv-ksv_chsbeg+1
113 IF (trim(hsv(jsv)) ==
"NH3I") i_ch_nh3i=jsv-ksv_chsbeg+1
114 IF (trim(hsv(jsv)) ==
"NH3J") i_ch_nh3j=jsv-ksv_chsbeg+1
115 IF (trim(hsv(jsv)) ==
"OCI") i_ch_oci=jsv-ksv_chsbeg+1
116 IF (trim(hsv(jsv)) ==
"OCJ") i_ch_ocj=jsv-ksv_chsbeg+1
117 IF (trim(hsv(jsv)) ==
"BCI") i_ch_bci=jsv-ksv_chsbeg+1
118 IF (trim(hsv(jsv)) ==
"BCJ") i_ch_bcj=jsv-ksv_chsbeg+1
119 IF (trim(hsv(jsv)) ==
"DSTI") i_ch_dsti=jsv-ksv_chsbeg+1
120 IF (trim(hsv(jsv)) ==
"DSTJ") i_ch_dstj=jsv-ksv_chsbeg+1
123 IF (i_ch_m0i ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_M0i ')
124 IF (i_ch_m0j ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_M0j ')
125 IF (i_ch_m6i ==-999 .AND. lvarsigi) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_M6i ')
126 IF (i_ch_m6j ==-999 .AND. lvarsigj) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_M6j ')
127 IF (i_ch_h2oi==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_H2Oi')
128 IF (i_ch_h2oj==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_H2Oj')
129 IF (i_ch_so4i==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_SO4i')
130 IF (i_ch_so4j==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_SO4j')
131 IF (i_ch_no3i==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_NO3i')
132 IF (i_ch_no3j==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_NO3j')
133 IF (i_ch_nh3i==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_NH3i')
134 IF (i_ch_nh3j==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_NH3j')
135 IF (i_ch_oci ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_OCi ')
136 IF (i_ch_ocj ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_OCj ')
137 IF (i_ch_bci ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_BCi ')
138 IF (i_ch_bcj ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_BCj ')
139 IF (i_ch_dsti ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_DSTi ')
140 IF (i_ch_dstj ==-999) CALL
abor1_sfx(
'WRONG VALUE FOR I_CH_DSTj ')
143 zmi(jp_aer_so4) = 98.
144 zmi(jp_aer_no3) = 63.
145 zmi(jp_aer_nh3) = 17.
146 zmi(jp_aer_h2o) = 18.
147 zmi(jp_aer_dst) = 100.
152 zrhoi(jp_aer_h2o) = 1.0e3
153 zrhoi(jp_aer_dst) = xdensity_dst
155 zden2mol = 1e-6 * xavogadro / xmd
157 IF (crgunit==
"MASS")
THEN
158 zemisradiusi = xemisradiusi * exp(-3.*(log(xemissigi))**2)
159 zemisradiusj = xemisradiusj * exp(-3.*(log(xemissigj))**2)
161 zemisradiusi = xemisradiusi
162 zemisradiusj = xemisradiusj
165 DO jj=1,nsp+ncarb+nsoa
166 zfac(jj) = (4./3.)*3.14292654*zrhoi(jj)*1.e-9
171 pflux(:,:) = max(pflux(:,:),0.)
178 IF ((lco2pm).AND.(present(pfco)))
THEN
181 zvalbc= 5.* 0.6e-10 / 0.4e-8
182 zvaloc= 5.* 0.3e-10 / 0.4e-8
190 zconversion(:) = xavogadro * prhodref(:)
192 pflux(:,i_ch_so4i) = pflux(:,i_ch_so4i) / zconversion(:) * zmi(jp_aer_so4)*1e-3
193 pflux(:,i_ch_so4j) = pflux(:,i_ch_so4j) / zconversion(:) * zmi(jp_aer_so4)*1e-3
194 pflux(:,i_ch_no3i) = pflux(:,i_ch_no3i) / zconversion(:) * zmi(jp_aer_no3)*1e-3
195 pflux(:,i_ch_no3j) = pflux(:,i_ch_no3j) / zconversion(:) * zmi(jp_aer_no3)*1e-3
196 pflux(:,i_ch_nh3i) = pflux(:,i_ch_nh3i) / zconversion(:) * zmi(jp_aer_nh3)*1e-3
197 pflux(:,i_ch_nh3j) = pflux(:,i_ch_nh3j) / zconversion(:) * zmi(jp_aer_nh3)*1e-3
198 pflux(:,i_ch_h2oi) = pflux(:,i_ch_h2oi) / zconversion(:) * zmi(jp_aer_h2o)*1e-3
199 pflux(:,i_ch_h2oj) = pflux(:,i_ch_h2oj) / zconversion(:) * zmi(jp_aer_h2o)*1e-3
200 pflux(:,i_ch_oci) = (pflux(:,i_ch_oci) + zfco(:) * zvaloc / 2.) / zconversion(:) * zmi(jp_aer_oc)*1e-3
201 pflux(:,i_ch_ocj) = (pflux(:,i_ch_ocj) + zfco(:) * zvaloc ) / zconversion(:) * zmi(jp_aer_oc)*1e-3
202 pflux(:,i_ch_bci) = (pflux(:,i_ch_bci) + zfco(:) * zvalbc / 2.) / zconversion(:) * zmi(jp_aer_bc)*1e-3
203 pflux(:,i_ch_bcj) = (pflux(:,i_ch_bcj) + zfco(:) * zvalbc ) / zconversion(:) * zmi(jp_aer_bc)*1e-3
204 pflux(:,i_ch_dsti) = pflux(:,i_ch_dsti) / zconversion(:) * zmi(jp_aer_dst)*1e-3
205 pflux(:,i_ch_dstj) = pflux(:,i_ch_dstj) / zconversion(:) * zmi(jp_aer_dst)*1e-3
210 zfctota(:,jp_aer_so4,1) = pflux(:,i_ch_so4i) *1e+9 * prhodref(:)
211 zfctota(:,jp_aer_so4,2) = pflux(:,i_ch_so4j) *1e+9 * prhodref(:)
213 zfctota(:,jp_aer_nh3,1) = pflux(:,i_ch_nh3i) *1e+9 * prhodref(:)
214 zfctota(:,jp_aer_nh3,2) = pflux(:,i_ch_nh3j) *1e+9 * prhodref(:)
216 zfctota(:,jp_aer_no3,1) = pflux(:,i_ch_no3i) *1e+9 * prhodref(:)
217 zfctota(:,jp_aer_no3,2) = pflux(:,i_ch_no3j) *1e+9 * prhodref(:)
219 zfctota(:,jp_aer_h2o,1) = pflux(:,i_ch_h2oi) *1e+9 * prhodref(:)
220 zfctota(:,jp_aer_h2o,2) = pflux(:,i_ch_h2oj) *1e+9 * prhodref(:)
222 zfctota(:,jp_aer_oc,1) = pflux(:,i_ch_oci) *1e+9 * prhodref(:)
223 zfctota(:,jp_aer_oc,2) = pflux(:,i_ch_ocj) *1e+9 * prhodref(:)
225 zfctota(:,jp_aer_bc,1) = pflux(:,i_ch_bci) *1e+9 * prhodref(:)
226 zfctota(:,jp_aer_bc,2) = pflux(:,i_ch_bcj) *1e+9 * prhodref(:)
228 zfctota(:,jp_aer_dst,1) = pflux(:,i_ch_dsti) *1e+9 * prhodref(:)
229 zfctota(:,jp_aer_dst,2) = pflux(:,i_ch_dstj) *1e+9 * prhodref(:)
235 DO jj = 1,nsp+ncarb+nsoa
236 zfm(:,2) = zfm(:,2)+zfctota(:,jj,1)/zfac(jj)
237 zfm(:,5) = zfm(:,5)+zfctota(:,jj,2)/zfac(jj)
242 zfm(:,1)= zfm(:,2) / ((zemisradiusi**3)*exp(4.5 * (log(xemissigi))**2))
244 zfm(:,4)= zfm(:,5) / ((zemisradiusj**3)*exp(4.5 * (log(xemissigj))**2))
248 zfm(:,3) = zfm(:,1) * (zemisradiusi**6) *exp(18 *(log(xemissigi))**2)
250 zfm(:,6) = zfm(:,4) * (zemisradiusj**6) *exp(18 *(log(xemissigj))**2)
255 pflux(:,i_ch_m0i) = zfm(:,1) * 1e-6 / (zden2mol * prhodref(:))
256 pflux(:,i_ch_m0j) = zfm(:,4) * 1e-6 / (zden2mol * prhodref(:))
258 IF (lvarsigi) pflux(:,i_ch_m6i) = zfm(:,3) / (zden2mol * prhodref(:))
259 IF (lvarsigj) pflux(:,i_ch_m6j) = zfm(:,6) / (zden2mol * prhodref(:))
262 pflux(:,i_ch_so4i) = pflux(:,i_ch_so4i) * xmd / (zmi(jp_aer_so4)*1e-3)
263 pflux(:,i_ch_so4j) = pflux(:,i_ch_so4j) * xmd / (zmi(jp_aer_so4)*1e-3)
264 pflux(:,i_ch_no3i) = pflux(:,i_ch_no3i) * xmd / (zmi(jp_aer_no3)*1e-3)
265 pflux(:,i_ch_no3j) = pflux(:,i_ch_no3j) * xmd / (zmi(jp_aer_no3)*1e-3)
266 pflux(:,i_ch_nh3i) = pflux(:,i_ch_nh3i) * xmd / (zmi(jp_aer_nh3)*1e-3)
267 pflux(:,i_ch_nh3j) = pflux(:,i_ch_nh3j) * xmd / (zmi(jp_aer_nh3)*1e-3)
268 pflux(:,i_ch_h2oi) = pflux(:,i_ch_h2oi) * xmd / (zmi(jp_aer_h2o)*1e-3)
269 pflux(:,i_ch_h2oj) = pflux(:,i_ch_h2oj) * xmd / (zmi(jp_aer_h2o)*1e-3)
271 pflux(:,i_ch_oci) = pflux(:,i_ch_oci) * xmd / (zmi(jp_aer_oc)*1e-3)
272 pflux(:,i_ch_ocj) = pflux(:,i_ch_ocj) * xmd / (zmi(jp_aer_oc)*1e-3)
273 pflux(:,i_ch_bci) = pflux(:,i_ch_bci) * xmd / (zmi(jp_aer_bc)*1e-3)
274 pflux(:,i_ch_bcj) = pflux(:,i_ch_bcj) * xmd / (zmi(jp_aer_bc)*1e-3)
275 pflux(:,i_ch_dsti) = pflux(:,i_ch_dsti) * xmd / (zmi(jp_aer_dst)*1e-3)
276 pflux(:,i_ch_dstj) = pflux(:,i_ch_dstj) * xmd / (zmi(jp_aer_dst)*1e-3)
279 pflux(:,i_ch_m0i) = pflux(:,i_ch_m0i) * zconversion(:)
280 pflux(:,i_ch_m0j) = pflux(:,i_ch_m0j) * zconversion(:)
282 IF (lvarsigi) pflux(:,i_ch_m6i) = pflux(:,i_ch_m6i) * zconversion(:)
283 IF (lvarsigj) pflux(:,i_ch_m6j) = pflux(:,i_ch_m6j) * zconversion(:)
285 pflux(:,i_ch_so4i) = pflux(:,i_ch_so4i) * zconversion(:) / (zmi(jp_aer_so4)*1e-3)
286 pflux(:,i_ch_so4j) = pflux(:,i_ch_so4j) * zconversion(:) / (zmi(jp_aer_so4)*1e-3)
287 pflux(:,i_ch_no3i) = pflux(:,i_ch_no3i) * zconversion(:) / (zmi(jp_aer_no3)*1e-3)
288 pflux(:,i_ch_no3j) = pflux(:,i_ch_no3j) * zconversion(:) / (zmi(jp_aer_no3)*1e-3)
289 pflux(:,i_ch_nh3i) = pflux(:,i_ch_nh3i) * zconversion(:) / (zmi(jp_aer_nh3)*1e-3)
290 pflux(:,i_ch_nh3j) = pflux(:,i_ch_nh3j) * zconversion(:) / (zmi(jp_aer_nh3)*1e-3)
291 pflux(:,i_ch_h2oi) = pflux(:,i_ch_h2oi) * zconversion(:) / (zmi(jp_aer_h2o)*1e-3)
292 pflux(:,i_ch_h2oj) = pflux(:,i_ch_h2oj) * zconversion(:) / (zmi(jp_aer_h2o)*1e-3)
293 pflux(:,i_ch_oci) = pflux(:,i_ch_oci) * zconversion(:) / (zmi(jp_aer_oc)*1e-3)
294 pflux(:,i_ch_ocj) = pflux(:,i_ch_ocj) * zconversion(:) / (zmi(jp_aer_oc)*1e-3)
295 pflux(:,i_ch_bci) = pflux(:,i_ch_bci) * zconversion(:) / (zmi(jp_aer_bc)*1e-3)
296 pflux(:,i_ch_bcj) = pflux(:,i_ch_bcj) * zconversion(:) / (zmi(jp_aer_bc)*1e-3)
297 pflux(:,i_ch_dsti) = pflux(:,i_ch_dsti) * zconversion(:) / (zmi(jp_aer_dst)*1e-3)
298 pflux(:,i_ch_dstj) = pflux(:,i_ch_dstj) * zconversion(:) / (zmi(jp_aer_dst)*1e-3)
300 IF (lhook) CALL dr_hook(
'CH_AER_EMISSION',1,zhook_handle)
subroutine abor1_sfx(YTEXT)
subroutine ch_aer_emission(PFLUX, PRHODREF, HSV, KSV_CHSBEG, PFCO)