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