1 | SUBROUTINE AEROPT_2BANDS( & |
---|
2 | pdel, m_allaer, delt, RHcl, & |
---|
3 | tau_allaer, piz_allaer, & |
---|
4 | cg_allaer, fractnat_allaer, & |
---|
5 | flag_aerosol, pplay, t_seri) |
---|
6 | |
---|
7 | USE dimphy |
---|
8 | USE aero_mod |
---|
9 | |
---|
10 | ! Yves Balkanski le 12 avril 2006 |
---|
11 | ! Celine Deandreis |
---|
12 | ! Anne Cozic Avril 2009 |
---|
13 | ! a partir d'une sous-routine de Johannes Quaas pour les sulfates |
---|
14 | ! |
---|
15 | IMPLICIT NONE |
---|
16 | |
---|
17 | INCLUDE "YOMCST.h" |
---|
18 | INCLUDE "iniprint.h" |
---|
19 | |
---|
20 | ! |
---|
21 | ! Input arguments: |
---|
22 | ! |
---|
23 | REAL, INTENT(in) :: pdel(KLON,KLEV) |
---|
24 | REAL, INTENT(in) :: delt |
---|
25 | REAL, DIMENSION(klon,klev,naero_spc), INTENT(in) :: m_allaer |
---|
26 | REAL, INTENT(in) :: RHcl(KLON,KLEV) ! humidite relative ciel clair |
---|
27 | REAL, DIMENSION(klon,naero_tot),INTENT(in) :: fractnat_allaer |
---|
28 | INTEGER, INTENT(in) :: flag_aerosol |
---|
29 | REAL, INTENT(in) :: pplay(klon,klev) |
---|
30 | REAL, INTENT(in) :: t_seri(klon,klev) |
---|
31 | |
---|
32 | ! |
---|
33 | ! Output arguments: |
---|
34 | ! |
---|
35 | REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: tau_allaer ! epaisseur optique aerosol |
---|
36 | REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: piz_allaer ! single scattering albedo aerosol |
---|
37 | REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: cg_allaer ! asymmetry parameter aerosol |
---|
38 | |
---|
39 | ! |
---|
40 | ! Local |
---|
41 | ! |
---|
42 | REAL, DIMENSION(klon,klev,naero_tot,nbands) :: tau_ae |
---|
43 | REAL, DIMENSION(klon,klev,naero_tot,nbands) :: piz_ae |
---|
44 | REAL, DIMENSION(klon,klev,naero_tot,nbands) :: cg_ae |
---|
45 | LOGICAL :: soluble |
---|
46 | INTEGER :: i, k, inu, m, mrfspecies |
---|
47 | INTEGER :: spsol, spinsol |
---|
48 | INTEGER :: RH_num, nbre_RH, nbsol_compaer, nbinsol_compaer |
---|
49 | |
---|
50 | PARAMETER (nbre_RH=12) |
---|
51 | PARAMETER (nbsol_compaer=5) ! 1- Seasalt AS; 2- Sesalt CS; 3- BC soluble; 4- POM soluble; 5- SO4. |
---|
52 | PARAMETER (nbinsol_compaer=3) ! 1- Dust; 2- BC insoluble; 3- POM insoluble |
---|
53 | REAL:: RH_tab(nbre_RH) |
---|
54 | REAL:: RH_MAX, DELTA, rh |
---|
55 | REAL:: tau_ae2b_int(KLON,KLEV,nbands) ! Intermediate computation of epaisseur optique aerosol |
---|
56 | REAL:: piz_ae2b_int(KLON,KLEV,nbands) ! Intermediate computation of Single scattering albedo |
---|
57 | REAL:: cg_ae2b_int(KLON,KLEV,nbands) ! Intermediate computation of Assymetry parameter |
---|
58 | PARAMETER (RH_MAX=95.) |
---|
59 | DATA RH_tab/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./ |
---|
60 | REAL :: zrho |
---|
61 | REAL :: fac |
---|
62 | REAL :: zdp1(klon,klev) |
---|
63 | REAL, PARAMETER :: gravit = 9.80616 ! m2/s |
---|
64 | INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name |
---|
65 | INTEGER :: nb_aer |
---|
66 | REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp |
---|
67 | |
---|
68 | ! |
---|
69 | ! Proprietes optiques |
---|
70 | ! |
---|
71 | REAL:: alpha_aers_2bands(nbre_RH,nbands,nbsol_compaer) !--unit m2/g SO4 |
---|
72 | REAL:: alpha_aeri_2bands(nbands,nbinsol_compaer) |
---|
73 | REAL:: cg_aers_2bands(nbre_RH,nbands,nbsol_compaer) !--unit |
---|
74 | REAL:: cg_aeri_2bands(nbands,nbinsol_compaer) |
---|
75 | REAL:: piz_aers_2bands(nbre_RH,nbands,nbsol_compaer) !-- unit |
---|
76 | REAL:: piz_aeri_2bands(nbands,nbinsol_compaer) !-- unit |
---|
77 | |
---|
78 | |
---|
79 | spsol = 0 |
---|
80 | spinsol = 0 |
---|
81 | |
---|
82 | |
---|
83 | DATA alpha_aers_2bands/ & |
---|
84 | ! seasalt soluble Coarse Soluble (CS) |
---|
85 | 0.5090,0.6554,0.7129,0.7767,0.8529,1.2728, & |
---|
86 | 1.3820,1.5792,1.9173,2.2002,2.7173,4.1487, & |
---|
87 | 0.5167,0.6613,0.7221,0.7868,0.8622,1.3027, & |
---|
88 | 1.4227,1.6317,1.9887,2.2883,2.8356,4.3453, & |
---|
89 | ! seasalt soluble Accumulation Soluble (AS) |
---|
90 | 4.125, 4.674, 5.005, 5.434, 5.985, 10.006, & |
---|
91 | 11.175,13.376,17.264,20.540,26.604, 42.349,& |
---|
92 | 4.187, 3.939, 3.919, 3.937, 3.995, 5.078, & |
---|
93 | 5.511, 6.434, 8.317,10.152,14.024, 26.537, & |
---|
94 | ! bc soluble |
---|
95 | 7.675,7.675,7.675,7.675,7.675,7.675, & |
---|
96 | 7.675,7.675,10.433,11.984,13.767,15.567,& |
---|
97 | 4.720,4.720,4.720,4.720,4.720,4.720, & |
---|
98 | 4.720,4.720,6.081,6.793,7.567,9.344, & |
---|
99 | ! pom soluble |
---|
100 | 5.503,5.503,5.503,5.503,5.588,5.957, & |
---|
101 | 6.404,7.340,8.545,10.319,13.595,20.398, & |
---|
102 | 1.402,1.402,1.402,1.402,1.431,1.562, & |
---|
103 | 1.715,2.032,2.425,2.991,4.193,7.133, & |
---|
104 | ! sulfate |
---|
105 | 4.681,5.062,5.460,5.798,6.224,6.733, & |
---|
106 | 7.556,8.613,10.687,12.265,16.32,21.692, & |
---|
107 | 1.107,1.239,1.381,1.490,1.635,1.8030, & |
---|
108 | 2.071,2.407,3.126,3.940,5.539,7.921/ |
---|
109 | |
---|
110 | |
---|
111 | DATA alpha_aeri_2bands/ & |
---|
112 | ! dust insoluble |
---|
113 | 0.7661,0.7123,& |
---|
114 | ! bc insoluble |
---|
115 | 10.360,4.437, & |
---|
116 | ! pom insoluble |
---|
117 | 3.741,0.606/ |
---|
118 | |
---|
119 | |
---|
120 | DATA cg_aers_2bands/ & |
---|
121 | ! seasalt Coarse soluble (CS) |
---|
122 | 0.727, 0.747, 0.755, 0.761, 0.770, 0.788, & |
---|
123 | 0.792, 0.799, 0.805, 0.809, 0.815, 0.826, & |
---|
124 | 0.717, 0.738, 0.745, 0.752, 0.761, 0.779, & |
---|
125 | 0.781, 0.786, 0.793, 0.797, 0.803, 0.813, & |
---|
126 | ! Sesalt Accumulation Soluble (AS) |
---|
127 | 0.727, 0.741, 0.748, 0.754, 0.761, 0.782, & |
---|
128 | 0.787, 0.792, 0.797, 0.799, 0.801, 0.799, & |
---|
129 | 0.606, 0.645, 0.658, 0.669, 0.681, 0.726, & |
---|
130 | 0.734, 0.746, 0.761, 0.770, 0.782, 0.798, & |
---|
131 | ! bc soluble |
---|
132 | .612, .612, .612, .612, .612, .612, & |
---|
133 | .612, .612, .702, .734, .760, .796, & |
---|
134 | .433, .433, .433, .433, .433, .433, & |
---|
135 | .433, .433, .534, .575, .613, .669, & |
---|
136 | ! pom soluble |
---|
137 | .663, .663, .663, .663, .666, .674, & |
---|
138 | .685, .702, .718, .737, .757, .777, & |
---|
139 | .544, .544, .544, .544, .547, .554, & |
---|
140 | .565, .583, .604, .631, .661, .698, & |
---|
141 | ! sulfate |
---|
142 | .658, .669, .680, .688, .698, .707, & |
---|
143 | .719, .733, .752, .760, .773, .786, & |
---|
144 | .544, .555, .565, .573, .583, .593, & |
---|
145 | .610, .628, .655, .666, .692, .719/ |
---|
146 | |
---|
147 | |
---|
148 | DATA cg_aeri_2bands/ & |
---|
149 | ! dust insoluble |
---|
150 | .701, .670, & |
---|
151 | ! bc insoluble |
---|
152 | .471, .297, & |
---|
153 | ! pom insoluble |
---|
154 | .568, .365/ |
---|
155 | |
---|
156 | DATA piz_aers_2bands/& |
---|
157 | ! seasalt Coarse soluble (CS) |
---|
158 | 1.000,1.000,1.000,1.000,1.000,1.000, & |
---|
159 | 1.000,1.000,1.000,1.000,1.000,1.000, & |
---|
160 | 0.992,0.989,0.987,0.986,0.986,0.980, & |
---|
161 | 0.980,0.978,0.976,0.976,0.974,0.971, & |
---|
162 | ! seasalt Accumulation Soluble (AS) |
---|
163 | 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, & |
---|
164 | 1.000, 1.000, 1.000, 1.000, 1.000, 1.000, & |
---|
165 | 0.970, 0.975, 0.976, 0.977, 0.978, 0.982, & |
---|
166 | 0.982, 0.983, 0.984, 0.984, 0.985, 0.985, & |
---|
167 | ! bc soluble |
---|
168 | .445, .445, .445, .445, .445, .445, & |
---|
169 | .445, .445, .461, .480, .505, .528, & |
---|
170 | .362, .362, .362, .362, .362, .362, & |
---|
171 | .362, .362, .381, .405, .437, .483, & |
---|
172 | ! pom soluble |
---|
173 | .972, .972, .972, .972, .972, .974, & |
---|
174 | .976, .979, .982, .986, .989, .992, & |
---|
175 | .924, .924, .924, .924, .925, .927, & |
---|
176 | .932, .938, .945, .952, .961, .970, & |
---|
177 | ! sulfate |
---|
178 | 1.000,1.000,1.000,1.000,1.000,1.000, & |
---|
179 | 1.000,1.000,1.000,1.000,1.000,1.000, & |
---|
180 | .992, .988, .988, .987, .986, .985, & |
---|
181 | .985, .985, .984, .984, .984, .984 / |
---|
182 | |
---|
183 | |
---|
184 | DATA piz_aeri_2bands/ & |
---|
185 | ! dust insoluble |
---|
186 | .963, .987, & |
---|
187 | ! bc insoluble |
---|
188 | .395, .264, & |
---|
189 | ! pom insoluble |
---|
190 | .966, .859/ |
---|
191 | |
---|
192 | |
---|
193 | DO k=1, klev |
---|
194 | DO i=1, klon |
---|
195 | IF (t_seri(i,k).EQ.0.) THEN |
---|
196 | WRITE(lunout,*) 't_seri(i,k)=0 for i=',i,'k=',k |
---|
197 | CALL abort_gcm('aeropt_2bands','t_seri=0',1) |
---|
198 | END IF |
---|
199 | IF (pplay(i,k).EQ.0.) THEN |
---|
200 | WRITE(lunout,*) 'pplay(i,k)=0 for i=',i,'k=',k |
---|
201 | CALL abort_gcm('aeropt_2bands','pplay=0',1) |
---|
202 | END IF |
---|
203 | |
---|
204 | zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 |
---|
205 | mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 |
---|
206 | |
---|
207 | ENDDO |
---|
208 | ENDDO |
---|
209 | |
---|
210 | IF (flag_aerosol .EQ. 1) THEN |
---|
211 | nb_aer = 1 |
---|
212 | ALLOCATE (aerosol_name(nb_aer)) |
---|
213 | aerosol_name(1) = id_ASSO4M |
---|
214 | ELSEIF (flag_aerosol .EQ. 2) THEN |
---|
215 | nb_aer = 2 |
---|
216 | ALLOCATE (aerosol_name(nb_aer)) |
---|
217 | aerosol_name(1) = id_ASBCM |
---|
218 | aerosol_name(2) = id_AIBCM |
---|
219 | ELSEIF (flag_aerosol .EQ. 3) THEN |
---|
220 | nb_aer = 2 |
---|
221 | ALLOCATE (aerosol_name(nb_aer)) |
---|
222 | aerosol_name(1) = id_ASPOMM |
---|
223 | aerosol_name(2) = id_AIPOMM |
---|
224 | ELSEIF (flag_aerosol .EQ. 4) THEN |
---|
225 | nb_aer = 3 |
---|
226 | ALLOCATE (aerosol_name(nb_aer)) |
---|
227 | aerosol_name(1) = id_CSSSM |
---|
228 | aerosol_name(2) = id_SSSSM |
---|
229 | aerosol_name(3) = id_ASSSM |
---|
230 | ELSEIF (flag_aerosol .EQ. 5) THEN |
---|
231 | nb_aer = 1 |
---|
232 | ALLOCATE (aerosol_name(nb_aer)) |
---|
233 | aerosol_name(1) = id_CIDUSTM |
---|
234 | ELSEIF (flag_aerosol .EQ. 6) THEN |
---|
235 | nb_aer = 9 |
---|
236 | ALLOCATE (aerosol_name(nb_aer)) |
---|
237 | aerosol_name(1) = id_ASSO4M |
---|
238 | aerosol_name(2) = id_ASBCM |
---|
239 | aerosol_name(3) = id_AIBCM |
---|
240 | aerosol_name(4) = id_ASPOMM |
---|
241 | aerosol_name(5) = id_AIPOMM |
---|
242 | aerosol_name(6) = id_CSSSM |
---|
243 | aerosol_name(7) = id_SSSSM |
---|
244 | aerosol_name(8) = id_ASSSM |
---|
245 | aerosol_name(9) = id_CIDUSTM |
---|
246 | ENDIF |
---|
247 | |
---|
248 | |
---|
249 | ! |
---|
250 | ! loop over modes, use of precalculated nmd and corresponding sigma |
---|
251 | ! loop over wavelengths |
---|
252 | ! for each mass species in mode |
---|
253 | ! interpolate from Sext to retrieve Sext_at_gridpoint_per_species |
---|
254 | ! compute optical_thickness_at_gridpoint_per_species |
---|
255 | |
---|
256 | tau_ae(:,:,:,:)=0. |
---|
257 | piz_ae(:,:,:,:)=0. |
---|
258 | cg_ae(:,:,:,:)=0. |
---|
259 | tau_allaer(:,:,:,:)=0. |
---|
260 | piz_allaer(:,:,:,:)=0. |
---|
261 | cg_allaer(:,:,:,:)=0. |
---|
262 | |
---|
263 | ! |
---|
264 | ! Calculations that need to be done since we are not in the subroutines INCA |
---|
265 | ! |
---|
266 | ! air mass auxiliary variable --> zdp1 [kg/(m^2 *s)] |
---|
267 | zdp1(:,:)=pdel(:,:)/(gravit*delt) |
---|
268 | |
---|
269 | |
---|
270 | DO m=1,nb_aer ! tau is only computed for each mass |
---|
271 | |
---|
272 | fac=1.0 |
---|
273 | IF (aerosol_name(m).EQ.id_SSSSM) THEN ! for now |
---|
274 | soluble=.TRUE. |
---|
275 | spsol=1 |
---|
276 | ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN |
---|
277 | soluble=.TRUE. |
---|
278 | spsol=1 |
---|
279 | ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN |
---|
280 | soluble=.TRUE. |
---|
281 | spsol=2 |
---|
282 | ELSEIF (aerosol_name(m).EQ.id_ASBCM) THEN |
---|
283 | soluble=.TRUE. |
---|
284 | spsol=3 |
---|
285 | ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN |
---|
286 | soluble=.TRUE. |
---|
287 | spsol=4 |
---|
288 | ELSEIF ((aerosol_name(m).EQ.id_ASSO4M) .OR. (aerosol_name(m).EQ.id_CSSO4M)) THEN |
---|
289 | soluble=.TRUE. |
---|
290 | spsol=5 |
---|
291 | fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD |
---|
292 | ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN |
---|
293 | soluble=.FALSE. |
---|
294 | spinsol=1 |
---|
295 | ELSEIF (aerosol_name(m).EQ.id_AIBCM) THEN |
---|
296 | soluble=.FALSE. |
---|
297 | spinsol=2 |
---|
298 | ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN |
---|
299 | soluble=.FALSE. |
---|
300 | spinsol=3 |
---|
301 | ELSE |
---|
302 | CYCLE |
---|
303 | ENDIF |
---|
304 | |
---|
305 | |
---|
306 | tau_ae2b_int(:,:,:)=0. |
---|
307 | piz_ae2b_int(:,:,:)=0. |
---|
308 | cg_ae2b_int(:,:,:)=0. |
---|
309 | |
---|
310 | DO k=1, KLEV |
---|
311 | DO i=1, KLON |
---|
312 | |
---|
313 | rh=MIN(RHcl(i,k)*100.,RH_MAX) |
---|
314 | RH_num = INT( rh/10. + 1.) |
---|
315 | |
---|
316 | IF (rh.GT.85.) RH_num=10 |
---|
317 | IF (rh.GT.90.) RH_num=11 |
---|
318 | DELTA=(rh-RH_tab(RH_num))/(RH_tab(RH_num+1)-RH_tab(RH_num)) |
---|
319 | |
---|
320 | DO inu=1,nbands |
---|
321 | IF (soluble) THEN |
---|
322 | tau_ae2b_int(i,k,inu)= & |
---|
323 | alpha_aers_2bands(RH_num,inu,spsol)+ & |
---|
324 | DELTA* (alpha_aers_2bands(RH_num+1,inu,spsol) - & |
---|
325 | alpha_aers_2bands(RH_num,inu,spsol)) |
---|
326 | |
---|
327 | piz_ae2b_int(i,k,inu)= & |
---|
328 | piz_aers_2bands(RH_num,inu,spsol) + & |
---|
329 | DELTA* (piz_aers_2bands(RH_num+1,inu,spsol) - & |
---|
330 | piz_aers_2bands(RH_num,inu,spsol)) |
---|
331 | |
---|
332 | cg_ae2b_int(i,k,inu)= & |
---|
333 | cg_aers_2bands(RH_num,inu,spsol) + & |
---|
334 | DELTA* (cg_aers_2bands(RH_num+1,inu,spsol) - & |
---|
335 | cg_aers_2bands(RH_num,inu,spsol)) |
---|
336 | |
---|
337 | tau_ae(i,k,aerosol_name(m),inu) = & |
---|
338 | mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*tau_ae2b_int(i,k,inu)*fac |
---|
339 | |
---|
340 | ELSE |
---|
341 | tau_ae2b_int(i,k,inu) = alpha_aeri_2bands(inu,spinsol) |
---|
342 | piz_ae2b_int(i,k,inu) = piz_aeri_2bands(inu,spinsol) |
---|
343 | cg_ae2b_int(i,k,inu) = cg_aeri_2bands(inu,spinsol) |
---|
344 | |
---|
345 | tau_ae(i,k,aerosol_name(m),inu) = & |
---|
346 | mass_temp(i,k,5+ spinsol)*1000.*zdp1(i,k)*delt*tau_ae2b_int(i,k,inu)*fac |
---|
347 | ENDIF |
---|
348 | |
---|
349 | piz_ae(i,k,aerosol_name(m),inu) = piz_ae2b_int(i,k,inu) |
---|
350 | |
---|
351 | cg_ae(i,k,aerosol_name(m),inu)= cg_ae2b_int(i,k,inu) |
---|
352 | |
---|
353 | |
---|
354 | ENDDO ! boucle sur les bandes spectrale |
---|
355 | ENDDO ! Boucle sur les points géographiques (grille horizontale) |
---|
356 | ENDDO ! Boucle sur les niveaux verticaux |
---|
357 | ENDDO ! Boucle sur les masses de traceurs |
---|
358 | |
---|
359 | |
---|
360 | DO inu=1, nbands |
---|
361 | DO mrfspecies=1,naero_grp |
---|
362 | DO k=1, KLEV |
---|
363 | DO i=1, KLON |
---|
364 | IF (mrfspecies .EQ. 2) THEN ! = total aerosol AER |
---|
365 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ & |
---|
366 | tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+ & |
---|
367 | tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ & |
---|
368 | tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+tau_ae(i,k,id_SSSSM,inu)+ & |
---|
369 | tau_ae(i,k,id_CIDUSTM,inu) |
---|
370 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
371 | |
---|
372 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ & |
---|
373 | tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ & |
---|
374 | tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ & |
---|
375 | tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ & |
---|
376 | tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ & |
---|
377 | tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ & |
---|
378 | tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ & |
---|
379 | tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ & |
---|
380 | tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ & |
---|
381 | tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu))/tau_allaer(i,k,mrfspecies,inu) |
---|
382 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
383 | |
---|
384 | cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ & |
---|
385 | tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ & |
---|
386 | tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ & |
---|
387 | tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ & |
---|
388 | tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ & |
---|
389 | tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ & |
---|
390 | tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ & |
---|
391 | tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ & |
---|
392 | tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ & |
---|
393 | tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ & |
---|
394 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
395 | |
---|
396 | |
---|
397 | ELSEIF (mrfspecies .EQ. 3) THEN ! = natural aerosol NAT |
---|
398 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)*fractnat_allaer(i,id_ASSO4M)+ & |
---|
399 | tau_ae(i,k,id_CSSO4M,inu)*fractnat_allaer(i,id_CSSO4M)+ & |
---|
400 | tau_ae(i,k,id_ASBCM,inu)*fractnat_allaer(i,id_ASBCM)+ & |
---|
401 | tau_ae(i,k,id_AIBCM,inu)*fractnat_allaer(i,id_AIBCM)+ & |
---|
402 | tau_ae(i,k,id_ASPOMM,inu)*fractnat_allaer(i,id_ASPOMM)+ & |
---|
403 | tau_ae(i,k,id_AIPOMM,inu)*fractnat_allaer(i,id_AIPOMM)+ & |
---|
404 | tau_ae(i,k,id_ASSSM,inu)*fractnat_allaer(i,id_ASSSM)+ & |
---|
405 | tau_ae(i,k,id_CSSSM,inu)*fractnat_allaer(i,id_CSSSM)+ & |
---|
406 | tau_ae(i,k,id_SSSSM,inu)*fractnat_allaer(i,id_SSSSM)+ & |
---|
407 | tau_ae(i,k,id_CIDUSTM,inu)*fractnat_allaer(i,id_CIDUSTM) |
---|
408 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
409 | |
---|
410 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*fractnat_allaer(i,id_ASSO4M)*piz_ae(i,k,id_ASSO4M,inu)+ & |
---|
411 | tau_ae(i,k,id_CSSO4M,inu)*fractnat_allaer(i,id_CSSO4M)*piz_ae(i,k,id_CSSO4M,inu)+ & |
---|
412 | tau_ae(i,k,id_ASBCM,inu)*fractnat_allaer(i,id_ASBCM)*piz_ae(i,k,id_ASBCM,inu)+ & |
---|
413 | tau_ae(i,k,id_AIBCM,inu)*fractnat_allaer(i,id_AIBCM)*piz_ae(i,k,id_AIBCM,inu)+ & |
---|
414 | tau_ae(i,k,id_ASPOMM,inu)*fractnat_allaer(i,id_ASPOMM)*piz_ae(i,k,id_ASPOMM,inu)+ & |
---|
415 | tau_ae(i,k,id_AIPOMM,inu)*fractnat_allaer(i,id_AIPOMM)*piz_ae(i,k,id_AIPOMM,inu)+ & |
---|
416 | tau_ae(i,k,id_ASSSM,inu)*fractnat_allaer(i,id_ASSSM)*piz_ae(i,k,id_ASSSM,inu)+ & |
---|
417 | tau_ae(i,k,id_CSSSM,inu)*fractnat_allaer(i,id_CSSSM)*piz_ae(i,k,id_CSSSM,inu)+ & |
---|
418 | tau_ae(i,k,id_SSSSM,inu)*fractnat_allaer(i,id_SSSSM)*piz_ae(i,k,id_SSSSM,inu)+ & |
---|
419 | tau_ae(i,k,id_CIDUSTM,inu)*fractnat_allaer(i,id_CIDUSTM)*piz_ae(i,k,id_CIDUSTM,inu)) & |
---|
420 | /tau_allaer(i,k,mrfspecies,inu) |
---|
421 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
422 | |
---|
423 | cg_allaer(i,k,mrfspecies,inu)=(& |
---|
424 | tau_ae(i,k,id_ASSO4M,inu)*fractnat_allaer(i,id_ASSO4M)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ & |
---|
425 | tau_ae(i,k,id_CSSO4M,inu)*fractnat_allaer(i,id_CSSO4M)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ & |
---|
426 | tau_ae(i,k,id_ASBCM,inu)*fractnat_allaer(i,id_ASBCM)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ & |
---|
427 | tau_ae(i,k,id_AIBCM,inu)*fractnat_allaer(i,id_AIBCM)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ & |
---|
428 | tau_ae(i,k,id_ASPOMM,inu)*fractnat_allaer(i,id_ASPOMM)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ & |
---|
429 | tau_ae(i,k,id_AIPOMM,inu)*fractnat_allaer(i,id_AIPOMM)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ & |
---|
430 | tau_ae(i,k,id_ASSSM,inu)*fractnat_allaer(i,id_ASSSM)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ & |
---|
431 | tau_ae(i,k,id_CSSSM,inu)*fractnat_allaer(i,id_CSSSM)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ & |
---|
432 | tau_ae(i,k,id_SSSSM,inu)*fractnat_allaer(i,id_SSSSM)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ & |
---|
433 | tau_ae(i,k,id_CIDUSTM,inu)*fractnat_allaer(i,id_CIDUSTM)*piz_ae(i,k,id_CIDUSTM,inu)*& |
---|
434 | cg_ae(i,k,id_CIDUSTM,inu))/ & |
---|
435 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
436 | |
---|
437 | |
---|
438 | ELSEIF (mrfspecies .EQ. 4) THEN ! = BC |
---|
439 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu) |
---|
440 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
441 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) & |
---|
442 | +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu))/ & |
---|
443 | tau_allaer(i,k,mrfspecies,inu) |
---|
444 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
445 | cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) *cg_ae(i,k,id_ASBCM,inu)& |
---|
446 | +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu))/ & |
---|
447 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
448 | ELSEIF (mrfspecies .EQ. 5) THEN ! = SO4 |
---|
449 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu) |
---|
450 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
451 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) & |
---|
452 | +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu))/ & |
---|
453 | tau_allaer(i,k,mrfspecies,inu) |
---|
454 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
455 | cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) *cg_ae(i,k,id_CSSO4M,inu)& |
---|
456 | +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu))/ & |
---|
457 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
458 | |
---|
459 | ELSEIF (mrfspecies .EQ. 6) THEN ! = POM |
---|
460 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu) |
---|
461 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
462 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) & |
---|
463 | +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu))/ & |
---|
464 | tau_allaer(i,k,mrfspecies,inu) |
---|
465 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
466 | cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) *cg_ae(i,k,id_ASPOMM,inu)& |
---|
467 | +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu))/ & |
---|
468 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
469 | ELSEIF (mrfspecies .EQ. 7) THEN ! = DUST |
---|
470 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_CIDUSTM,inu) |
---|
471 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
472 | piz_allaer(i,k,mrfspecies,inu)=piz_ae(i,k,id_CIDUSTM,inu) |
---|
473 | cg_allaer(i,k,mrfspecies,inu)=cg_ae(i,k,id_CIDUSTM,inu) |
---|
474 | |
---|
475 | ELSEIF (mrfspecies .EQ. 8) THEN ! = SS |
---|
476 | tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+tau_ae(i,k,id_SSSSM,inu) |
---|
477 | tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20) |
---|
478 | piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) & |
---|
479 | +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu) & |
---|
480 | +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu))/ & |
---|
481 | tau_allaer(i,k,mrfspecies,inu) |
---|
482 | piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20) |
---|
483 | cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) *cg_ae(i,k,id_ASSSM,inu)& |
---|
484 | +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu) & |
---|
485 | +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu))/ & |
---|
486 | (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu)) |
---|
487 | |
---|
488 | ELSEIF (mrfspecies .EQ. 9) THEN ! = NO3 |
---|
489 | tau_allaer(i,k,mrfspecies,inu)=0. ! preliminary |
---|
490 | piz_allaer(i,k,mrfspecies,inu)=0. |
---|
491 | cg_allaer(i,k,mrfspecies,inu)=0. |
---|
492 | ENDIF |
---|
493 | ENDDO |
---|
494 | ENDDO |
---|
495 | ENDDO |
---|
496 | ENDDO |
---|
497 | |
---|
498 | DEALLOCATE(aerosol_name) |
---|
499 | |
---|
500 | END SUBROUTINE AEROPT_2BANDS |
---|