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

Last change on this file since 1201 was 1183, checked in by jghattas, 15 years ago
  • Ajoute test de coherence entre les longitudes et latitudes des fichiers de forcage des aerosols et le model.
  • Corection pour la variable mass_solu_aero : changement du nom, commentaire et contenu(il y avait l'aerosol dust en trop)
  • Changement du nom de module car dans INCA le meme nom existe deja : aerosol_mod => aero_mod
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 22.1 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  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
500END SUBROUTINE AEROPT_2BANDS
Note: See TracBrowser for help on using the repository browser.