1 |
jscott |
1.1 |
|
2 |
|
|
#include "ctrparam.h" |
3 |
|
|
|
4 |
|
|
! ============================================================ |
5 |
|
|
! |
6 |
|
|
! CHEMMETA.F: Interface between CliChem and META Models. |
7 |
|
|
! |
8 |
|
|
! ------------------------------------------------------------ |
9 |
|
|
! |
10 |
|
|
! Author: Chien Wang |
11 |
|
|
! MIT Joint Program on Science and Policy |
12 |
|
|
! of Global Change |
13 |
|
|
! |
14 |
|
|
! ---------------------------------------------------------- |
15 |
|
|
! |
16 |
|
|
! Revision History: |
17 |
|
|
! |
18 |
|
|
! When Who What |
19 |
|
|
! ---- ---------- ------- |
20 |
|
|
! 062999 Chien Wang using time evolution data |
21 |
|
|
! for urban partition |
22 |
|
|
! 120799 Chien Wang use real temperature in meta |
23 |
|
|
! 052200 Chien Wang use urban daily emission data |
24 |
|
|
! 080200 Chien Wang repack based on CliChem3 & add cpp |
25 |
|
|
! 051804 Chien Wang back to the v58 |
26 |
|
|
! |
27 |
|
|
! ========================================================== |
28 |
|
|
|
29 |
|
|
! =================== |
30 |
|
|
subroutine chemmeta |
31 |
|
|
! =================== |
32 |
|
|
|
33 |
|
|
parameter (ktop = 2) |
34 |
|
|
|
35 |
|
|
#include "chem_para" |
36 |
|
|
#include "chem_const1" |
37 |
|
|
|
38 |
|
|
#include "chem_com" |
39 |
|
|
#include "chem_meta" |
40 |
|
|
#include "BD2G04.COM" |
41 |
|
|
|
42 |
|
|
common U,V,T,P,Q |
43 |
|
|
|
44 |
|
|
real Temp |
45 |
|
|
real tmp(meta_nvar), conv0, conv, x11(ktop), xxx |
46 |
|
|
real r_so2, r_co, r_nox, r_voc |
47 |
|
|
real ymass_no, ymass_no2, ymass_o3, ymass_hno3, |
48 |
|
|
& ymass_n2o5,ymass_co, ymass_ch2o |
49 |
|
|
real yflux_no, yflux_no2, yflux_o3, yflux_hno3, |
50 |
|
|
& yflux_n2o5,yflux_co, yflux_ch2o |
51 |
|
|
real urban_area,rural_area,total_area |
52 |
|
|
|
53 |
|
|
integer ind_lat(nlat), id_lat, jid |
54 |
|
|
|
55 |
|
|
! -------------------------------------------- |
56 |
|
|
! rlati: |lat| in degree (0:65) |
57 |
|
|
! rtemp: deviation from normal temperature (-10:10) |
58 |
|
|
! rclou: tenth of mean cloud coverage (0:10) |
59 |
|
|
! rmixi: maximum mixing layer top in meter (200:2000) |
60 |
|
|
! rtime: residence time 200km/U in second (21600:259200) |
61 |
|
|
! rso2: emission of SO2 in kg/km^2/day |
62 |
|
|
! rco: emission of SO2 in kg/km^2/day |
63 |
|
|
! rnox: emission of SO2 in kg/km^2/day |
64 |
|
|
! rvoc: deviation from total daily VOC emission (-0.7:0.7) |
65 |
|
|
! raqino |
66 |
|
|
! raqinoo |
67 |
|
|
! raqivoc |
68 |
|
|
! raqiozo |
69 |
|
|
! raqisox |
70 |
|
|
! results(meta_nvar) |
71 |
|
|
! |
72 |
|
|
! --- Order of results and others: |
73 |
|
|
! --- |
74 |
|
|
! --- 1: NO mass |
75 |
|
|
! --- 2: NO flux |
76 |
|
|
! --- 3: NO2 mass |
77 |
|
|
! --- 4: NO2 flux |
78 |
|
|
! --- 5: O3 mass |
79 |
|
|
! --- 6: O3 flux |
80 |
|
|
! --- 7: HONO flux |
81 |
|
|
! --- 8: HNO3 flux |
82 |
|
|
! --- 9: N2O5 flux |
83 |
|
|
! --- 10: CO mass |
84 |
|
|
! --- 11: CO flux |
85 |
|
|
! --- 12: HCHO mass |
86 |
|
|
! --- 13: HCHO flux |
87 |
|
|
! --- 14: ALD2 mass |
88 |
|
|
! --- 15: MEK mass |
89 |
|
|
! --- 16: PAN flux |
90 |
|
|
! --- 17: ALKA mass |
91 |
|
|
! --- 18: ETHE mass |
92 |
|
|
! --- 19: ALKE mass |
93 |
|
|
! --- 20: TOLU mass |
94 |
|
|
! --- 21: AROM mass |
95 |
|
|
! --- 22: SO2 mass |
96 |
|
|
! --- 23: SO2 flux |
97 |
|
|
! --- 24: SO3 mass |
98 |
|
|
! --- 25: SO3 flux |
99 |
|
|
! --- 26: O3 max |
100 |
|
|
! --- 27: O3 peak hour |
101 |
|
|
! --- Daily averaged mass |
102 |
|
|
! --- 28: NO |
103 |
|
|
! --- 29: NO2 |
104 |
|
|
! --- 30: O3 |
105 |
|
|
! --- 31: HONO |
106 |
|
|
! --- 32: HNO3 |
107 |
|
|
! --- 33: HNO4 |
108 |
|
|
! --- 34: N2O5 |
109 |
|
|
! --- 35: NO3 |
110 |
|
|
! --- 36: HO2 |
111 |
|
|
! --- 37: CO |
112 |
|
|
! --- 38: HCHO |
113 |
|
|
! --- 39: ALD2 |
114 |
|
|
! --- 40: MEK |
115 |
|
|
! --- 41: MGLY |
116 |
|
|
! --- 42: PAN |
117 |
|
|
! --- 43: RO2 |
118 |
|
|
! --- 44: MCO3 |
119 |
|
|
! --- 45: ALKN |
120 |
|
|
! --- 46: ALKA |
121 |
|
|
! --- 47: ETHE |
122 |
|
|
! --- 48: ALKE |
123 |
|
|
! --- 49: TOLU |
124 |
|
|
! --- 50: AROM |
125 |
|
|
! --- 51: DIAL |
126 |
|
|
! --- 52: CRES |
127 |
|
|
! --- 53: NPHE |
128 |
|
|
! --- 54: H2O2 |
129 |
|
|
! --- 55: MEOH |
130 |
|
|
! --- 56: ETOH |
131 |
|
|
! --- 57: SO2 |
132 |
|
|
! --- 58: SO3 |
133 |
|
|
! ---------------------------------------------------- |
134 |
|
|
! |
135 |
|
|
#if ( defined CPL_CHEM ) && ( defined CPL_META ) |
136 |
|
|
|
137 |
|
|
! --- All metamodel calls and calculations are applied |
138 |
|
|
! --- to latitudes ranged from -39 to 63 degree |
139 |
|
|
! --- or j=8,20 in GACM grid index, though arrays |
140 |
|
|
! --- are still indexed from 1 to nlat. |
141 |
|
|
id_lat = 0 |
142 |
|
|
do j=1,nlat |
143 |
|
|
ind_lat(j) = 0 |
144 |
|
|
end do |
145 |
|
|
|
146 |
|
|
#if ( N_LAT == 24 ) |
147 |
|
|
do j=8,20 |
148 |
|
|
#endif |
149 |
|
|
#if ( N_LAT == 46 ) |
150 |
|
|
do j=14,39 |
151 |
|
|
#endif |
152 |
|
|
if ( n_total_urban(j,myyear) .ne. 0 ) then |
153 |
|
|
id_lat = id_lat + 1 |
154 |
|
|
ind_lat(id_lat) = j |
155 |
|
|
endif |
156 |
|
|
end do |
157 |
|
|
|
158 |
|
|
do 10 jid = 1,id_lat |
159 |
|
|
j = ind_lat(jid) |
160 |
|
|
|
161 |
|
|
do ntype = 1,3 |
162 |
|
|
do iii = 1,meta_nvar |
163 |
|
|
results_meta(iii,ntype,j) = 0.0 |
164 |
|
|
end do |
165 |
|
|
end do |
166 |
|
|
|
167 |
|
|
cldcvr = 0.0 |
168 |
|
|
do k=2,6 |
169 |
|
|
xxx = chem_cldss(1,j,k) + chem_cldmc(1,j,k) |
170 |
|
|
& - chem_cldss(1,j,k) * chem_cldmc(1,j,k) |
171 |
|
|
! if(xxx.gt.1.0) xxx = 1.0 |
172 |
|
|
if(xxx.gt.0.9) xxx = 0.9 |
173 |
|
|
if(xxx.lt.0.0) xxx = 0.0 |
174 |
|
|
if(xxx.gt.cldcvr)cldcvr = xxx |
175 |
|
|
end do |
176 |
|
|
|
177 |
|
|
rtemp(j) = 0.0 |
178 |
|
|
|
179 |
|
|
! --- cloud coverage in tenth |
180 |
|
|
rclou(j) = cldcvr*10.0 |
181 |
|
|
|
182 |
|
|
! --- m, top of layer 2 |
183 |
|
|
rmixi(j) = 1500.0 |
184 |
|
|
|
185 |
|
|
! --- 21600 < time < 259200, fixed size of 200 km |
186 |
|
|
rtime(j) = 2.e5/max(0.771605, abs(pvv(1,j,1))) |
187 |
|
|
if(rtime(j).lt. 21600.0) rtime(j) = 21600.0 |
188 |
|
|
if(rtime(j).gt.259200.0) rtime(j) = 259200.0 |
189 |
|
|
|
190 |
|
|
urban_area = float(n_total_urban(j,myyear))*4.e10 |
191 |
|
|
total_area = 1./dxyp(j) |
192 |
|
|
urban_area = urban_area*total_area |
193 |
|
|
rural_area = 1.0 - urban_area |
194 |
|
|
if (rural_area .le. 0.0) then |
195 |
|
|
rural_area = 0.0 |
196 |
|
|
urban_area = 1.0 |
197 |
|
|
end if |
198 |
|
|
|
199 |
|
|
tmass = 0.0 !Total air mass in kg |
200 |
|
|
do k=1,ktop |
201 |
|
|
tmass = tmass + airmass(1,j,k) |
202 |
|
|
enddo |
203 |
|
|
tmass = 1./tmass |
204 |
|
|
|
205 |
|
|
ymass_no = 0.0 |
206 |
|
|
ymass_no2 = 0.0 |
207 |
|
|
ymass_o3 = 0.0 |
208 |
|
|
ymass_hno3 = 0.0 |
209 |
|
|
ymass_n2o5 = 0.0 |
210 |
|
|
ymass_co = 0.0 |
211 |
|
|
ymass_ch2o = 0.0 |
212 |
|
|
yflux_no = 0.0 |
213 |
|
|
yflux_no2 = 0.0 |
214 |
|
|
yflux_o3 = 0.0 |
215 |
|
|
yflux_hno3 = 0.0 |
216 |
|
|
yflux_n2o5 = 0.0 |
217 |
|
|
yflux_co = 0.0 |
218 |
|
|
yflux_ch2o = 0.0 |
219 |
|
|
|
220 |
|
|
! --- convert daily emission for a 95x95 km^2 "core" |
221 |
|
|
! from 10^-9 kg to kg/km^2 |
222 |
|
|
! conv0 = 1.e-9/(95x95)/n |
223 |
|
|
! |
224 |
|
|
conv0 = 1.10803e-13 |
225 |
|
|
& /(float(n_total_urban(j,myyear))) |
226 |
|
|
|
227 |
|
|
do 20 ntype=1,3 ! 3 different types |
228 |
|
|
|
229 |
|
|
if (n_urban(ntype,j,myyear).ne.0) then |
230 |
|
|
|
231 |
|
|
! --- decide the emission strength of |
232 |
|
|
! --- different types of cities |
233 |
|
|
if (n_total_urban(j,myyear).lt.4)then |
234 |
|
|
conv = conv0*urban_beta_1(ntype) |
235 |
|
|
else if (n_total_urban(j,myyear).lt.20)then |
236 |
|
|
conv = conv0*urban_beta_2(ntype) |
237 |
|
|
else |
238 |
|
|
conv = conv0*urban_beta_3(ntype) |
239 |
|
|
end if |
240 |
|
|
|
241 |
|
|
! r_so2 = edailyso2(1,j,myyear)*alpha_so2(j) |
242 |
|
|
r_so2 = edailyusox(1,j,myyear) |
243 |
|
|
& * conv |
244 |
|
|
|
245 |
|
|
! r_co = edailyco (1,j,myyear)*alpha_co (j,myyear) |
246 |
|
|
r_co = edailyuco (1,j,myyear) |
247 |
|
|
& * conv |
248 |
|
|
|
249 |
|
|
! r_nox = edailynox(1,j,myyear)*alpha_nox(j,myyear) |
250 |
|
|
r_nox = edailyunox(1,j,myyear) |
251 |
|
|
& * conv |
252 |
|
|
|
253 |
|
|
! r_voc = 0.0 |
254 |
|
|
r_voc = edailyunmv(1,j,myyear) |
255 |
|
|
& * conv |
256 |
|
|
|
257 |
|
|
Temp = T(1,j,1)*airpress(1)**0.286 |
258 |
|
|
|
259 |
|
|
! --- jday =julian day [1,365] |
260 |
|
|
xxx = float(jday) |
261 |
|
|
|
262 |
|
|
call metamodel( Temp, j_date, |
263 |
|
|
& rlati(j),rtemp(j),rclou(j), |
264 |
|
|
& rmixi(j),rtime(j), |
265 |
|
|
& r_so2, r_co, r_nox, r_voc, |
266 |
|
|
& raqino (ntype,j),raqinoo(ntype,j), |
267 |
|
|
& raqivoc(ntype,j),raqiozo(ntype,j), |
268 |
|
|
& raqisox(ntype,j),tmp) |
269 |
|
|
|
270 |
|
|
! |
271 |
|
|
! if(myyear.eq.1.and.mymonth.eq.8)then |
272 |
|
|
! print *,"ntype = ",ntype, "j = ",j |
273 |
|
|
! print *,"AQINO = ",raqino(ntype,j),"AQINO2 = ",raqinoo(ntype,j) |
274 |
|
|
! print *,"AQIVOC = ",raqivoc(ntype,j),"AQIOZO = ",raqiozo(ntype,j) |
275 |
|
|
! print *,"AQISOX = ",raqisox(ntype,j) |
276 |
|
|
! endif |
277 |
|
|
! |
278 |
|
|
|
279 |
|
|
! --- convert mass and flux from kg/km^2 to kg |
280 |
|
|
do iii=1,25 |
281 |
|
|
results_meta(iii,ntype,j)= |
282 |
|
|
& tmp(iii)*n_urban(ntype,j,myyear)*4.e4 |
283 |
|
|
& *( 1.0 + sin(3.1415926 |
284 |
|
|
& *(xxx - xc_meta(iii))/w_meta(iii)) |
285 |
|
|
& /c_meta(iii) ) |
286 |
|
|
& |
287 |
|
|
end do |
288 |
|
|
results_meta(26,ntype,j) = tmp(26) |
289 |
|
|
& *( 1.0 + sin(3.1415926 |
290 |
|
|
& *(xxx - xc_meta(26))/w_meta(26)) |
291 |
|
|
& /c_meta(26) ) |
292 |
|
|
results_meta(27,ntype,j) = tmp(27) |
293 |
|
|
|
294 |
|
|
do iii=28,meta_nvar |
295 |
|
|
results_meta(iii,ntype,j)= |
296 |
|
|
& tmp(iii)*n_urban(ntype,j,myyear)*4.e4 |
297 |
|
|
& *( 1.0 + sin(3.1415926 |
298 |
|
|
& *(xxx - xc_meta(iii))/w_meta(iii))/c_meta(iii) ) |
299 |
|
|
end do |
300 |
|
|
|
301 |
|
|
|
302 |
|
|
! --- all results should be positive definite |
303 |
|
|
do iii=1,meta_nvar |
304 |
|
|
if(results_meta(iii,ntype,j).le.0.0) |
305 |
|
|
& results_meta(iii,ntype,j) = 0.0 |
306 |
|
|
end do |
307 |
|
|
|
308 |
|
|
! --- convert flux to kg (mass is already in kg) |
309 |
|
|
! Note: CO and NO fluxes have been included |
310 |
|
|
! in chememission.F, they should not be recounted here |
311 |
|
|
! Note also: ymass mixing with the grid model is no longer |
312 |
|
|
! needed so that both meta and grid calculates its own |
313 |
|
|
! concentration, only connection is the yflux |
314 |
|
|
! This has been tested via eppa02 May 2004. |
315 |
|
|
! Chien Wang 062304 |
316 |
|
|
! |
317 |
|
|
! ymass_no = ymass_no |
318 |
|
|
! & + results_meta(1,ntype,j) |
319 |
|
|
! ymass_no2 = ymass_no2 |
320 |
|
|
! & + results_meta(3,ntype,j) |
321 |
|
|
yflux_no2 = yflux_no2 |
322 |
|
|
& + results_meta(4,ntype,j) |
323 |
|
|
! ymass_o3 = ymass_o3 |
324 |
|
|
! & + results_meta(5,ntype,j) |
325 |
|
|
yflux_o3 = yflux_o3 |
326 |
|
|
& + results_meta(6,ntype,j) |
327 |
|
|
yflux_hno3 = yflux_hno3 |
328 |
|
|
& + results_meta(8,ntype,j) |
329 |
|
|
yflux_n2o5 = yflux_n2o5 |
330 |
|
|
& + results_meta(9,ntype,j) |
331 |
|
|
! ymass_co = ymass_co |
332 |
|
|
! & + results_meta(10,ntype,j) |
333 |
|
|
! ymass_ch2o = ymass_ch2o |
334 |
|
|
! & + results_meta(12,ntype,j) |
335 |
|
|
yflux_ch2o = yflux_ch2o |
336 |
|
|
& + results_meta(13,ntype,j) |
337 |
|
|
end if |
338 |
|
|
|
339 |
|
|
20 continue |
340 |
|
|
|
341 |
|
|
! --- |
342 |
|
|
! --- incorperating meta results into mixing ratios: |
343 |
|
|
! --- |
344 |
|
|
! --- NO |
345 |
|
|
do k=1,ktop |
346 |
|
|
x11(k) = xno (1,j,k) |
347 |
|
|
enddo |
348 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
349 |
|
|
& urban_area,rural_area, |
350 |
|
|
& ymass_no,yflux_no,x11) |
351 |
|
|
do k=1,ktop |
352 |
|
|
xno(1,j,k) = x11(k) |
353 |
|
|
enddo |
354 |
|
|
|
355 |
|
|
! --- NO2 |
356 |
|
|
do k=1,ktop |
357 |
|
|
x11(k) = xno2(1,j,k) |
358 |
|
|
enddo |
359 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
360 |
|
|
& urban_area,rural_area, |
361 |
|
|
& ymass_no2,yflux_no2,x11) |
362 |
|
|
do k=1,ktop |
363 |
|
|
xno2(1,j,k) = x11(k) |
364 |
|
|
enddo |
365 |
|
|
|
366 |
|
|
! --- O3 |
367 |
|
|
do k=1,ktop |
368 |
|
|
x11(k) = o3 (1,j,k) |
369 |
|
|
enddo |
370 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
371 |
|
|
& urban_area,rural_area, |
372 |
|
|
& ymass_o3,yflux_o3,x11) |
373 |
|
|
do k=1,ktop |
374 |
|
|
o3 (1,j,k) = x11(k) |
375 |
|
|
enddo |
376 |
|
|
|
377 |
|
|
! --- HNO3 |
378 |
|
|
do k=1,ktop |
379 |
|
|
x11(k) = hno3 (1,j,k) |
380 |
|
|
enddo |
381 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
382 |
|
|
& urban_area,rural_area, |
383 |
|
|
& ymass_hno3,yflux_hno3,x11) |
384 |
|
|
do k=1,ktop |
385 |
|
|
hno3(1,j,k) = x11(k) |
386 |
|
|
enddo |
387 |
|
|
|
388 |
|
|
! --- N2O5 |
389 |
|
|
do k=1,ktop |
390 |
|
|
x11(k) = xn2o5(1,j,k) |
391 |
|
|
enddo |
392 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
393 |
|
|
& urban_area,rural_area, |
394 |
|
|
& ymass_n2o5,yflux_n2o5,x11) |
395 |
|
|
do k=1,ktop |
396 |
|
|
xn2o5(1,j,k) = x11(k) |
397 |
|
|
enddo |
398 |
|
|
|
399 |
|
|
! --- CO |
400 |
|
|
do k=1,ktop |
401 |
|
|
x11(k) = co(1,j,k) |
402 |
|
|
enddo |
403 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
404 |
|
|
& urban_area,rural_area, |
405 |
|
|
& ymass_co,yflux_co,x11) |
406 |
|
|
do k=1,ktop |
407 |
|
|
co(1,j,k) = x11(k) |
408 |
|
|
enddo |
409 |
|
|
|
410 |
|
|
! --- HCHO |
411 |
|
|
do k=1,ktop |
412 |
|
|
x11(k) = ch2o(1,j,k) |
413 |
|
|
enddo |
414 |
|
|
call chemmeta_mass(1,j,ktop,tmass, |
415 |
|
|
& urban_area,rural_area, |
416 |
|
|
& ymass_ch2o,yflux_ch2o,x11) |
417 |
|
|
do k=1,ktop |
418 |
|
|
ch2o(1,j,k) = x11(k) |
419 |
|
|
enddo |
420 |
|
|
|
421 |
|
|
! === |
422 |
|
|
! === convert mass into mole fraction in ppb |
423 |
|
|
! === |
424 |
|
|
conv0 = tmass/urban_area*28.97296245*1.e9 |
425 |
|
|
do ntype=1,3 |
426 |
|
|
if(n_urban(ntype,j,myyear).gt.0)then |
427 |
|
|
conv = conv0*float(n_total_urban(j,myyear)) |
428 |
|
|
& /float(n_urban(ntype,j,myyear)) |
429 |
|
|
! --- 1: NO mass |
430 |
|
|
results_meta(1,ntype,j) = |
431 |
|
|
& results_meta(1,ntype,j) |
432 |
|
|
& /awNO*conv |
433 |
|
|
! --- 3: NO2 mass |
434 |
|
|
results_meta(3,ntype,j) = |
435 |
|
|
& results_meta(3,ntype,j) |
436 |
|
|
& /awNO2*conv |
437 |
|
|
! --- 5: O3 mass |
438 |
|
|
results_meta(5,ntype,j) = |
439 |
|
|
& results_meta(5,ntype,j) |
440 |
|
|
& /awO3*conv |
441 |
|
|
! --- 10: CO mass |
442 |
|
|
results_meta(10,ntype,j) = |
443 |
|
|
& results_meta(10,ntype,j) |
444 |
|
|
& /awCO*conv |
445 |
|
|
! --- 12: HCHO mass |
446 |
|
|
results_meta(12,ntype,j) = |
447 |
|
|
& results_meta(12,ntype,j) |
448 |
|
|
& /awCH2O*conv |
449 |
|
|
! --- 14: ALD2 mass |
450 |
|
|
results_meta(14,ntype,j) = |
451 |
|
|
& results_meta(14,ntype,j) |
452 |
|
|
& /awALD2*conv |
453 |
|
|
! --- 15: MEK mass |
454 |
|
|
results_meta(15,ntype,j) = |
455 |
|
|
& results_meta(15,ntype,j) |
456 |
|
|
& /awMEK*conv |
457 |
|
|
! --- 17: ALKA mass |
458 |
|
|
results_meta(17,ntype,j) = |
459 |
|
|
& results_meta(17,ntype,j) |
460 |
|
|
& /awALKA*conv |
461 |
|
|
! --- 18: ETHE mass |
462 |
|
|
results_meta(18,ntype,j) = |
463 |
|
|
& results_meta(18,ntype,j) |
464 |
|
|
& /awETHE*conv |
465 |
|
|
! --- 19: ALKE mass |
466 |
|
|
results_meta(19,ntype,j) = |
467 |
|
|
& results_meta(19,ntype,j) |
468 |
|
|
& /awALKE*conv |
469 |
|
|
! --- 20: TOLU mass |
470 |
|
|
results_meta(20,ntype,j) = |
471 |
|
|
& results_meta(20,ntype,j) |
472 |
|
|
& /awTOLU*conv |
473 |
|
|
! --- 21: AROM mass |
474 |
|
|
results_meta(21,ntype,j) = |
475 |
|
|
& results_meta(21,ntype,j) |
476 |
|
|
& /awAROM*conv |
477 |
|
|
! --- 22: SO2 mass |
478 |
|
|
results_meta(22,ntype,j) = |
479 |
|
|
& results_meta(22,ntype,j) |
480 |
|
|
& /awSO2*conv |
481 |
|
|
! --- 24: SO3 mass |
482 |
|
|
results_meta(24,ntype,j) = |
483 |
|
|
& results_meta(24,ntype,j) |
484 |
|
|
& /awSO3*conv |
485 |
|
|
! --- 28: NO daily-mean mass |
486 |
|
|
results_meta(28,ntype,j) = |
487 |
|
|
& results_meta(28,ntype,j) |
488 |
|
|
& /awNO*conv |
489 |
|
|
! --- 29: NO2 daily-mean mass |
490 |
|
|
results_meta(29,ntype,j) = |
491 |
|
|
& results_meta(29,ntype,j) |
492 |
|
|
& /awNO2*conv |
493 |
|
|
! --- 30: O3 daily-mean mass |
494 |
|
|
results_meta(30,ntype,j) = |
495 |
|
|
& results_meta(30,ntype,j) |
496 |
|
|
& /awO3*conv |
497 |
|
|
! --- 31: HONO daily-mean mass |
498 |
|
|
results_meta(31,ntype,j) = |
499 |
|
|
& results_meta(31,ntype,j) |
500 |
|
|
& /awHONO*conv |
501 |
|
|
! --- 32: HNO3 daily-mean mass |
502 |
|
|
results_meta(32,ntype,j) = |
503 |
|
|
& results_meta(32,ntype,j) |
504 |
|
|
& /awHNO3*conv |
505 |
|
|
! --- 33: HNO4 daily-mean mass |
506 |
|
|
results_meta(33,ntype,j) = |
507 |
|
|
& results_meta(33,ntype,j) |
508 |
|
|
& /awHNO4*conv |
509 |
|
|
! --- 34: N2O5 daily-mean mass |
510 |
|
|
results_meta(34,ntype,j) = |
511 |
|
|
& results_meta(34,ntype,j) |
512 |
|
|
& /awN2O5*conv |
513 |
|
|
! --- 35: NO3 daily-mean mass |
514 |
|
|
results_meta(35,ntype,j) = |
515 |
|
|
& results_meta(35,ntype,j) |
516 |
|
|
& /awNO3*conv |
517 |
|
|
! --- 36: HO2 daily-mean mass |
518 |
|
|
results_meta(36,ntype,j) = |
519 |
|
|
& results_meta(36,ntype,j) |
520 |
|
|
& /awHO2*conv |
521 |
|
|
! --- 37: CO daily-mean mass |
522 |
|
|
results_meta(37,ntype,j) = |
523 |
|
|
& results_meta(37,ntype,j) |
524 |
|
|
& /awCO*conv |
525 |
|
|
! --- 38: HCHO daily-mean mass |
526 |
|
|
results_meta(38,ntype,j) = |
527 |
|
|
& results_meta(38,ntype,j) |
528 |
|
|
& /awCH2O*conv |
529 |
|
|
! --- 39: ALD2 daily-mean mass |
530 |
|
|
results_meta(39,ntype,j) = |
531 |
|
|
& results_meta(39,ntype,j) |
532 |
|
|
& /awALD2*conv |
533 |
|
|
! --- 40: MEK daily-mean mass |
534 |
|
|
results_meta(40,ntype,j) = |
535 |
|
|
& results_meta(40,ntype,j) |
536 |
|
|
& /awMEK*conv |
537 |
|
|
! --- 42: PAN daily-mean mass |
538 |
|
|
results_meta(42,ntype,j) = |
539 |
|
|
& results_meta(42,ntype,j) |
540 |
|
|
& /awPAN*conv |
541 |
|
|
! --- 46: ALKA daily-mean mass |
542 |
|
|
results_meta(46,ntype,j) = |
543 |
|
|
& results_meta(46,ntype,j) |
544 |
|
|
& /awALKA*conv |
545 |
|
|
! --- 47: ETHE daily-mean mass |
546 |
|
|
results_meta(47,ntype,j) = |
547 |
|
|
& results_meta(47,ntype,j) |
548 |
|
|
& /awETHE*conv |
549 |
|
|
! --- 48: ALKE daily-mean mass |
550 |
|
|
results_meta(48,ntype,j) = |
551 |
|
|
& results_meta(48,ntype,j) |
552 |
|
|
& /awALKE*conv |
553 |
|
|
! --- 49: TOLU daily-mean mass |
554 |
|
|
results_meta(49,ntype,j) = |
555 |
|
|
& results_meta(49,ntype,j) |
556 |
|
|
& /awTOLU*conv |
557 |
|
|
! --- 50: AROM daily-mean mass |
558 |
|
|
results_meta(50,ntype,j) = |
559 |
|
|
& results_meta(50,ntype,j) |
560 |
|
|
& /awAROM*conv |
561 |
|
|
! --- 54: H2O2 daily-mean mass |
562 |
|
|
results_meta(54,ntype,j) = |
563 |
|
|
& results_meta(54,ntype,j) |
564 |
|
|
& /awH2O2*conv |
565 |
|
|
! --- 57: SO2 daily-mean mass |
566 |
|
|
results_meta(57,ntype,j) = |
567 |
|
|
& results_meta(57,ntype,j) |
568 |
|
|
& /awSO2*conv |
569 |
|
|
! --- 58: SO3 daily-mean mass |
570 |
|
|
results_meta(58,ntype,j) = |
571 |
|
|
& results_meta(58,ntype,j) |
572 |
|
|
& /awSO3*conv |
573 |
|
|
else |
574 |
|
|
results_meta(1, ntype,j) = 0.0 |
575 |
|
|
results_meta(3, ntype,j) = 0.0 |
576 |
|
|
results_meta(5, ntype,j) = 0.0 |
577 |
|
|
results_meta(10,ntype,j) = 0.0 |
578 |
|
|
results_meta(12,ntype,j) = 0.0 |
579 |
|
|
results_meta(14,ntype,j) = 0.0 |
580 |
|
|
results_meta(15,ntype,j) = 0.0 |
581 |
|
|
results_meta(17,ntype,j) = 0.0 |
582 |
|
|
results_meta(18,ntype,j) = 0.0 |
583 |
|
|
results_meta(19,ntype,j) = 0.0 |
584 |
|
|
results_meta(20,ntype,j) = 0.0 |
585 |
|
|
results_meta(21,ntype,j) = 0.0 |
586 |
|
|
results_meta(22,ntype,j) = 0.0 |
587 |
|
|
results_meta(24,ntype,j) = 0.0 |
588 |
|
|
results_meta(28,ntype,j) = 0.0 |
589 |
|
|
results_meta(29,ntype,j) = 0.0 |
590 |
|
|
results_meta(30,ntype,j) = 0.0 |
591 |
|
|
results_meta(31,ntype,j) = 0.0 |
592 |
|
|
results_meta(32,ntype,j) = 0.0 |
593 |
|
|
results_meta(33,ntype,j) = 0.0 |
594 |
|
|
results_meta(34,ntype,j) = 0.0 |
595 |
|
|
results_meta(35,ntype,j) = 0.0 |
596 |
|
|
results_meta(36,ntype,j) = 0.0 |
597 |
|
|
results_meta(37,ntype,j) = 0.0 |
598 |
|
|
results_meta(38,ntype,j) = 0.0 |
599 |
|
|
results_meta(39,ntype,j) = 0.0 |
600 |
|
|
results_meta(40,ntype,j) = 0.0 |
601 |
|
|
results_meta(42,ntype,j) = 0.0 |
602 |
|
|
results_meta(46,ntype,j) = 0.0 |
603 |
|
|
results_meta(47,ntype,j) = 0.0 |
604 |
|
|
results_meta(48,ntype,j) = 0.0 |
605 |
|
|
results_meta(49,ntype,j) = 0.0 |
606 |
|
|
results_meta(50,ntype,j) = 0.0 |
607 |
|
|
results_meta(54,ntype,j) = 0.0 |
608 |
|
|
results_meta(57,ntype,j) = 0.0 |
609 |
|
|
results_meta(58,ntype,j) = 0.0 |
610 |
|
|
endif |
611 |
|
|
end do |
612 |
|
|
|
613 |
|
|
10 continue |
614 |
|
|
|
615 |
|
|
do j=1,nlat |
616 |
|
|
do ntype=1,3 |
617 |
|
|
do i=1,meta_nvar |
618 |
|
|
results_mon(i,ntype,j) = results_mon (i,ntype,j) |
619 |
|
|
& + results_meta(i,ntype,j) |
620 |
|
|
end do |
621 |
|
|
end do |
622 |
|
|
end do |
623 |
|
|
|
624 |
|
|
nstep_meta = nstep_meta + 1 |
625 |
|
|
|
626 |
|
|
#endif |
627 |
|
|
|
628 |
|
|
return |
629 |
|
|
end |
630 |
|
|
|
631 |
|
|
|
632 |
|
|
! =============================================== |
633 |
|
|
subroutine chemmeta_mass(i,j,ktop,tmass1, |
634 |
|
|
& urban_area,rural_area, |
635 |
|
|
& ymass, yflux, x11) |
636 |
|
|
! =============================================== |
637 |
|
|
|
638 |
|
|
! -------------------------------------------------------- |
639 |
|
|
! A subroutine for recalculating zonal mean mixing ratrios |
640 |
|
|
! by incorperating GACM and META results |
641 |
|
|
! -------------------------------------------------------- |
642 |
|
|
|
643 |
|
|
#include "chem_para" |
644 |
|
|
#include "chem_com" |
645 |
|
|
|
646 |
|
|
#include "chem_meta" |
647 |
|
|
|
648 |
|
|
#include "BD2G04.COM" |
649 |
|
|
|
650 |
|
|
dimension x11(ktop) |
651 |
|
|
real urban_area, rural_area, xmass, xmix |
652 |
|
|
|
653 |
|
|
#if ( defined CPL_CHEM ) && ( defined CPL_META ) |
654 |
|
|
|
655 |
|
|
xmass = 0.0 !rural tracer mass in 10^-9 kg |
656 |
|
|
do k=1,ktop |
657 |
|
|
xmass = xmass |
658 |
|
|
& + airmass(i,j,k)*x11(k) |
659 |
|
|
end do |
660 |
|
|
|
661 |
|
|
! === PM scheme |
662 |
|
|
! xmix = ( rural_area*xmass + |
663 |
|
|
!! & (urban_area*ymass + yflux)*1.e9 ) |
664 |
|
|
! & (ymass + yflux)*1.e9 ) |
665 |
|
|
! & * tmass1 !ppbm |
666 |
|
|
! === FM scheme |
667 |
|
|
xmix = ( xmass + |
668 |
|
|
& (ymass + yflux)*1.e9 ) |
669 |
|
|
& * tmass1 !ppbm |
670 |
|
|
|
671 |
|
|
do k=1,ktop |
672 |
|
|
x11(k) = xmix |
673 |
|
|
end do |
674 |
|
|
|
675 |
|
|
#endif |
676 |
|
|
|
677 |
|
|
return |
678 |
|
|
end |
679 |
|
|
|
680 |
|
|
! ==================== |
681 |
|
|
Block Data Meta_data |
682 |
|
|
! ==================== |
683 |
|
|
|
684 |
|
|
#include "chem_para" |
685 |
|
|
#include "chem_meta" |
686 |
|
|
|
687 |
|
|
#if ( defined CPL_CHEM ) && ( defined CPL_META ) |
688 |
|
|
|
689 |
|
|
#if ( N_LAT == 24 ) |
690 |
|
|
data rlati/90.0,82.2,74.3,66.5,58.7,50.9, |
691 |
|
|
& 43.0,35.2,27.4,19.6,11.7, 3.9, |
692 |
|
|
& 3.9,11.7,19.6,27.4,35.2,43.0, |
693 |
|
|
& 50.9,58.7,66.5,74.3,82.2,90.0/ |
694 |
|
|
|
695 |
|
|
|
696 |
|
|
data results_mon/4176*0.0/ |
697 |
|
|
|
698 |
|
|
data raqino /72*0.1/ |
699 |
|
|
data raqinoo/72*0.1/ |
700 |
|
|
data raqivoc/72*0.1/ |
701 |
|
|
data raqiozo/72*0.1/ |
702 |
|
|
data raqisox/72*0.1/ |
703 |
|
|
#endif |
704 |
|
|
|
705 |
|
|
#if ( N_LAT == 46 ) |
706 |
|
|
data rlati |
707 |
|
|
& / |
708 |
|
|
& 90.0, 86.0, 82.0, 78.0, 74.0, |
709 |
|
|
& 70.0, 66.0, 62.0, 58.0, 54.0, |
710 |
|
|
& 50.0, 46.0, 42.0, 38.0, 34.0, |
711 |
|
|
& 30.0, 26.0, 22.0, 18.0, 14.0, |
712 |
|
|
& 10.0, 6.0, 2.0, 2.0, 6.0, |
713 |
|
|
& 10.0, 14.0, 18.0, 22.0, 26.0, |
714 |
|
|
& 30.0, 34.0, 38.0, 42.0, 46.0, |
715 |
|
|
& 50.0, 54.0, 58.0, 62.0, 66.0, |
716 |
|
|
& 70.0, 74.0, 78.0, 82.0, 86.0, |
717 |
|
|
& 90.0 |
718 |
|
|
& / |
719 |
|
|
|
720 |
|
|
data results_mon/8004*0.0/ |
721 |
|
|
|
722 |
|
|
data raqino /138*0.1/ |
723 |
|
|
data raqinoo/138*0.1/ |
724 |
|
|
data raqivoc/138*0.1/ |
725 |
|
|
data raqiozo/138*0.1/ |
726 |
|
|
data raqisox/138*0.1/ |
727 |
|
|
#endif |
728 |
|
|
|
729 |
|
|
data nstep_meta/0/ |
730 |
|
|
|
731 |
|
|
data xc_meta/ -86.4, -88.4,-117.6, |
732 |
|
|
& -111.8, 71.2, 81.1, |
733 |
|
|
& 198.9, 82.7,-101.0, |
734 |
|
|
& 86.6, 89.7, 95.7, |
735 |
|
|
& 104.6,-126.0, 47.9, |
736 |
|
|
& -74.5,-114.3,-124.8, |
737 |
|
|
& -106.5,-121.6,-115.6, |
738 |
|
|
& -108.7,-102.3, 73.8, |
739 |
|
|
& 85.7, 76.7, 0.0, |
740 |
|
|
& -84.4,-112.5, 81.9, |
741 |
|
|
& 6*0.0, |
742 |
|
|
& 97.9, 99.4,20*0.0/ |
743 |
|
|
|
744 |
|
|
data w_meta /183.6,184.3,184.8, |
745 |
|
|
& 184.2,183.9,184.0, |
746 |
|
|
& 183.6,183.1,184.9, |
747 |
|
|
& 185.7,181.0,182.9, |
748 |
|
|
& 183.9,184.1,189.3, |
749 |
|
|
& 183.8,184.1,184.9, |
750 |
|
|
& 183.0,184.6,182.9, |
751 |
|
|
& 183.1,184.6,184.0, |
752 |
|
|
& 182.1,184.2, 0.0, |
753 |
|
|
& 183.3,183.4,183.3, |
754 |
|
|
& 6* 0.0, |
755 |
|
|
& 184.7,183.1,20*0.0/ |
756 |
|
|
|
757 |
|
|
data a_meta / 0.015,0.153,0.288, |
758 |
|
|
& 0.466,8.040,9.880, |
759 |
|
|
& 0.007,0.797,0.014, |
760 |
|
|
& 0.886,1.016,0.154, |
761 |
|
|
& 0.235,0.013,0.044, |
762 |
|
|
& 0.323,0.188,0.007, |
763 |
|
|
& 0.004,0.028,0.009, |
764 |
|
|
& 0.042,0.052,0.053, |
765 |
|
|
& 0.080,0.006, 0.0, |
766 |
|
|
& 0.141,0.242,6.485, |
767 |
|
|
& 6*0.0, |
768 |
|
|
& 0.496,0.184,20*0.0/ |
769 |
|
|
|
770 |
|
|
data c_meta / 11.4, -0.8, 4.0, |
771 |
|
|
& 4.5, 3.6, 3.9, |
772 |
|
|
& 10.5, 4.2, 1.1, |
773 |
|
|
& 79.0, 87.0, 11.2, |
774 |
|
|
& 7.6, 6.5, 10.3, |
775 |
|
|
& 2.6, 5.3, 6.7, |
776 |
|
|
& 12.4, 5.7, 12.8, |
777 |
|
|
& 15.5, 10.1, 2.8, |
778 |
|
|
& 2.0, 3.1, 0.0, |
779 |
|
|
& 10.2, 8.8, 4.1, |
780 |
|
|
& 6*0.0, |
781 |
|
|
& 227.5, 7.6,20*0.0/ |
782 |
|
|
|
783 |
|
|
data urban_beta_1/1.0, 0.0, 0.0/ |
784 |
|
|
data urban_beta_2/0.9, 1.3, 0.0/ |
785 |
|
|
data urban_beta_3/0.8, 1.25, 3.0/ |
786 |
|
|
|
787 |
|
|
#endif |
788 |
|
|
|
789 |
|
|
end |
790 |
|
|
|
791 |
|
|
|
792 |
|
|
|