source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/aeropt_2bands.F90 @ 1150

Last change on this file since 1150 was 1150, checked in by jghattas, 15 years ago

Ajoute possiblilite de forcer avec d'autre aersols avec le meme principe que pour les so4.

Par default la convergence est rempu avec flag_aersosol=1 + ok_ade=ok_aie=y. Exactement les memes resultats peuvent etre retrouver avec new_aod=n. Les resultats sont exactement les memes sans prise en compte aucun aerosol, avec ok_ade=ok_aie=n.

  • flag_aerosol indique quel aersosol ou combinasion a utiliser (=1 uniquement les SO4 comme avant)
  • les fichiers d'entree so4.runXXXX.cdf change du nom pour majescule SO4.runXXXX.cdf
  • readsulfate change du nom pour readaerosol qui trait tous les aerosols
  • radlwsw change du nom pour radlwsw_aero.
  • aeropt_2bands.F90 et aeropt_5wv.F90 correspond a un reecriture de aeropt.F (premier et deuxieme moitie respectivement)
  • aeropt.F est gardé pour retrouver la convergence si demande avec new_aod=false (=true default)
  • sw_aero est un version evolue de sw_lmdar4 (dans fichier radiation_ar4.F)

ACo + JG

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 22.3 KB
Line 
1SUBROUTINE 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
507END SUBROUTINE AEROPT_2BANDS
Note: See TracBrowser for help on using the repository browser.