1 |
|
2 |
#include "ctrparam.h" |
3 |
|
4 |
! ============================================================ |
5 |
! |
6 |
! CHEMTROP0.F: Interface for subroutine CHEMTROP.F |
7 |
! of MIT Global Chemistry Model |
8 |
! |
9 |
! ------------------------------------------------------------ |
10 |
! |
11 |
! Author: Chien Wang |
12 |
! MIT Joint Program on Science and Policy |
13 |
! of Global Change |
14 |
! |
15 |
! ---------------------------------------------------------- |
16 |
! |
17 |
! Revision History: |
18 |
! |
19 |
! When Who What |
20 |
! ---- ---------- ------- |
21 |
! 052300 Chien Wang rev. |
22 |
! 080200 Chien Wang repack based on CliChem3 & add cpp |
23 |
! 092801 Chien Wang add bc and oc |
24 |
! 093001 Chien Wang add S(VI) RH dependency |
25 |
! 051904 Chien Wang rev. |
26 |
! |
27 |
! ========================================================== |
28 |
|
29 |
! |
30 |
subroutine chemtrop0(ifss, pT, qv, dtr, nloop) |
31 |
! ============================================= |
32 |
|
33 |
#include "chem_para" |
34 |
#include "chem_com" |
35 |
|
36 |
#include "BD2G04.COM" |
37 |
|
38 |
common U,V,T,P,Q |
39 |
|
40 |
dimension pT (nlon,nlat,nlev) |
41 |
dimension Temp(nlon,nlat,nlev) |
42 |
dimension qv (nlon,nlat,nlev) |
43 |
dimension den (nlon,nlat,nlev) |
44 |
dimension rh (nlon,nlat,nlev) |
45 |
|
46 |
dimension tmp_co (nlon,nlat,nlev) |
47 |
dimension tmp_ch4 (nlon,nlat,nlev) |
48 |
dimension tmp_o3 (nlon,nlat,nlev) |
49 |
dimension tmp_svi (nlon,nlat,nlev) |
50 |
dimension tmp_no (nlon,nlat,nlev) |
51 |
dimension tmp_no2 (nlon,nlat,nlev) |
52 |
dimension tmp_nv (nlon,nlat,nlev) |
53 |
dimension tmp_ch2o(nlon,nlat,nlev) |
54 |
|
55 |
! -------------------------------------------- |
56 |
|
57 |
#if ( defined CPL_CHEM ) |
58 |
|
59 |
ktrop = n_tropopause |
60 |
|
61 |
c === 032697 |
62 |
c === add diagnostic procedure: |
63 |
c |
64 |
do k=1,ktrop |
65 |
do j=1,nlat |
66 |
tmp_co (1,j,k) = co (1,j,k) |
67 |
tmp_ch4 (1,j,k) = ch4 (1,j,k) |
68 |
tmp_o3 (1,j,k) = o3 (1,j,k) |
69 |
tmp_svi (1,j,k) = h2so4(1,j,k) |
70 |
tmp_no (1,j,k) = xno (1,j,k) |
71 |
tmp_no2 (1,j,k) = xno2 (1,j,k) |
72 |
tmp_nv (1,j,k) = hno3 (1,j,k) |
73 |
tmp_ch2o(1,j,k) = ch2o (1,j,k) |
74 |
enddo |
75 |
enddo |
76 |
|
77 |
c--------- |
78 |
c Note the T from |
79 |
c main.f is a fraction of potential temprerature |
80 |
c |
81 |
do k = 1, nlev |
82 |
do j = 1,n2dh |
83 |
airptmp1 = (sig(k)*p(1,j) + 10.0) |
84 |
Temp(1,j,k) = T(1,j,k)*airptmp1**0.286 |
85 |
den(1,j,k) = airptmp1/(2.87*Temp(1,j,k)) |
86 |
rh (1,j,k) = 3.80/airpress(k) |
87 |
& *exp(17.67*(Temp(1,j,k) - 273.15) |
88 |
& /(Temp(1,j,k) - 29.65)) |
89 |
rh (1,j,k) = qv(1,j,k)/rh(1,j,k)*100.0 |
90 |
end do |
91 |
end do |
92 |
|
93 |
c do 2 ntime =1,nloop |
94 |
|
95 |
call chemtrop(dtr, 0, ktrop, Temp, qv, den) |
96 |
|
97 |
c2 continue |
98 |
|
99 |
c === 032697 |
100 |
c === add diagnostic procedure: |
101 |
c |
102 |
do k=1,ktrop |
103 |
do j=1,nlat |
104 |
photo_co (1,j,k) = photo_co (1,j,k) |
105 |
& + (co (1,j,k) - tmp_co (1,j,k)) |
106 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
107 |
photo_ch4 (1,j,k) = photo_ch4 (1,j,k) |
108 |
& + (ch4 (1,j,k) - tmp_ch4 (1,j,k)) |
109 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
110 |
photo_o3 (1,j,k) = photo_o3 (1,j,k) |
111 |
& + (o3 (1,j,k) - tmp_o3 (1,j,k)) |
112 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
113 |
photo_svi (1,j,k) = photo_svi (1,j,k) |
114 |
& + (h2so4(1,j,k) - tmp_svi (1,j,k)) |
115 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
116 |
photo_no (1,j,k) = photo_no (1,j,k) |
117 |
& + (xno (1,j,k) - tmp_no (1,j,k)) |
118 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
119 |
photo_no2 (1,j,k) = photo_no2 (1,j,k) |
120 |
& + (xno2 (1,j,k) - tmp_no2 (1,j,k)) |
121 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
122 |
photo_nv (1,j,k) = photo_nv (1,j,k) |
123 |
& + (hno3 (1,j,k) - tmp_nv (1,j,k)) |
124 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
125 |
photo_ch2o (1,j,k) = photo_ch2o(1,j,k) |
126 |
& + (ch2o (1,j,k) - tmp_ch2o(1,j,k)) |
127 |
& *airmass(1,j,k)*1.e-18 !TGspecies |
128 |
enddo |
129 |
enddo |
130 |
|
131 |
|
132 |
i = 1 |
133 |
|
134 |
do j=1,nlat |
135 |
sviod(i,j,nlev ) = 0.0 |
136 |
sviod(i,j,nlev1) = 0.0 |
137 |
bcod (i,j,nlev ) = 0.0 |
138 |
bcod (i,j,nlev1) = 0.0 |
139 |
ocod (i,j,nlev ) = 0.0 |
140 |
ocod (i,j,nlev1) = 0.0 |
141 |
end do |
142 |
|
143 |
do k=nlev1,1,-1 |
144 |
do j=1,nlat |
145 |
! ===== |
146 |
! Calculate optical depth of S(VI) aerosols: |
147 |
! ref. Charlson et al., 1992 |
148 |
! |
149 |
! Qex*f(rh) = 5.0*1.7 for rh = 80% |
150 |
!qex_svi = 8.5e-6/dxyp(j) |
151 |
! |
152 |
! === add frh based on calculated rh |
153 |
! |
154 |
if ( rh(i,j,k) .le. 60.0 ) then |
155 |
frh = 1.0 |
156 |
else if ( rh(i,j,k) .ge. 80.0 ) then |
157 |
frh = 2.8 |
158 |
else |
159 |
frh = rh(i,j,k) |
160 |
frh = -9.2906106183 |
161 |
& + frh*(0.52570211505 |
162 |
& + frh*(-0.0089285760691+5.0877212432e-05*frh)) |
163 |
end if |
164 |
qex_svi = 5.0e-6*frh/dxyp(j) |
165 |
& |
166 |
|
167 |
! === bc |
168 |
! Qex*f(rh) = 9.0*1.0 (550 micron) |
169 |
qex_bc = 8.0e-6/dxyp(j) ! normal |
170 |
!qex_bc = 11.0e-6/dxyp(j) ! high |
171 |
|
172 |
! === oc |
173 |
! Qex*f(rh) = 6.8*1.0 (550 micron), assume rh factor |
174 |
qex_oc = 6.8e-6/dxyp(j) |
175 |
|
176 |
sviod(i,j,k) = sviod(i,j,k+1) |
177 |
& + airmass(i,j,k)*h2so4(i,j,k)*qex_svi |
178 |
! if( j.eq.33.and.k.eq.1) then |
179 |
! print *,airmass(i,j,k),rh(i,j,k),qex_svi |
180 |
! print *,h2so4(i,j,k),sviod(i,j,k+1),sviod(i,j,k) |
181 |
! endif |
182 |
bcod(i,j,k) = bcod(i,j,k+1) |
183 |
& + airmass(i,j,k)*bcarbon(i,j,k)*qex_bc |
184 |
ocod(i,j,k) = ocod(i,j,k+1) |
185 |
& + airmass(i,j,k)*ocarbon(i,j,k)*qex_oc |
186 |
end do |
187 |
end do |
188 |
#endif |
189 |
|
190 |
return |
191 |
end |
192 |
|