source: LMDZ5/branches/LMDZ5_AR5/libf/phylmd/aeropt_2bands.F90

Last change on this file was 1337, checked in by Laurent Fairhead, 15 years ago

Additions to aerosol outputs for CMIP5 exercise


Additions aux sorties aérosols pour l'exercice CMIP5

Michael, Anne

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 53.2 KB
Line 
1!
2! $Id: aeropt_2bands.F90 1337 2010-04-02 11:31:05Z aclsce $
3!
4SUBROUTINE AEROPT_2BANDS( &
5     pdel, m_allaer, delt, RHcl, &
6     tau_allaer, piz_allaer, &
7     cg_allaer, m_allaer_pi, &
8     flag_aerosol, pplay, t_seri, presnivs)
9
10  USE dimphy
11  USE aero_mod
12  USE phys_local_var_mod, only: absvisaer
13
14  !    Yves Balkanski le 12 avril 2006
15  !    Celine Deandreis
16  !    Anne Cozic Avril 2009
17  !    a partir d'une sous-routine de Johannes Quaas pour les sulfates
18  !
19  IMPLICIT NONE
20
21  INCLUDE "YOMCST.h"
22  INCLUDE "iniprint.h"
23
24  !
25  ! Input arguments:
26  !
27  REAL, DIMENSION(klon,klev),     INTENT(in)  :: pdel
28  REAL,                           INTENT(in)  :: delt
29  REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer
30!RAF
31  REAL, DIMENSION(klon,klev,naero_spc),   INTENT(in)  :: m_allaer_pi
32  REAL, DIMENSION(klon,klev),     INTENT(in)  :: RHcl       ! humidite relative ciel clair
33!RAF  REAL, DIMENSION(klon,naero_tot),INTENT(in)  :: fractnat_allaer
34  INTEGER,                        INTENT(in)  :: flag_aerosol
35  REAL, DIMENSION(klon,klev),     INTENT(in)  :: pplay
36  REAL, DIMENSION(klon,klev),     INTENT(in)  :: t_seri
37  REAL, DIMENSION(klev),          INTENT(in)  :: presnivs
38  !
39  ! Output arguments:
40  !
41  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: tau_allaer ! epaisseur optique aerosol
42  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: piz_allaer ! single scattering albedo aerosol
43  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(out) :: cg_allaer  ! asymmetry parameter aerosol
44
45  !
46  ! Local
47  !
48  REAL, DIMENSION(klon,klev,naero_tot,nbands) ::  tau_ae
49!RAF
50  REAL, DIMENSION(klon,klev,naero_tot,nbands) ::  tau_ae_pi
51  REAL, DIMENSION(klon,klev,naero_tot,nbands) ::  piz_ae
52  REAL, DIMENSION(klon,klev,naero_tot,nbands) ::  cg_ae
53  LOGICAL ::  soluble
54  INTEGER :: i, k,n, ierr, inu, m, mrfspecies
55  INTEGER :: spsol, spinsol, spss
56  INTEGER :: RH_num(klon,klev)
57  INTEGER, PARAMETER :: nb_level=19 ! number of vertical levels in DATA
58
59  INTEGER, PARAMETER :: nbre_RH=12
60  INTEGER, PARAMETER :: naero_soluble=7    ! 1- BC soluble; 2- POM soluble; 3- SO4. acc. 4- SO4 coarse
61                                           ! 5- seasalt super coarse  6- seasalt coarse   7- seasalt acc.
62  INTEGER, PARAMETER :: naero_insoluble=3  ! 1- Dust; 2- BC insoluble; 3- POM insoluble
63  LOGICAL, SAVE :: firstcall=.TRUE.
64!$OMP THREADPRIVATE(firstcall)
65
66! Coefficient optiques sur 19 niveaux
67  REAL, SAVE, DIMENSION(nb_level) :: presnivs_19  ! Pression milieux couche pour 19 niveaux (nb_level)
68!$OMP THREADPRIVATE(presnivs_19)
69
70  REAL, SAVE, DIMENSION(nb_level) :: A1_ASSSM_b1_19, A2_ASSSM_b1_19, A3_ASSSM_b1_19,&
71          B1_ASSSM_b1_19, B2_ASSSM_b1_19, C1_ASSSM_b1_19, C2_ASSSM_b1_19,&
72          A1_CSSSM_b1_19, A2_CSSSM_b1_19, A3_CSSSM_b1_19,&
73          B1_CSSSM_b1_19, B2_CSSSM_b1_19, C1_CSSSM_b1_19, C2_CSSSM_b1_19,&
74          A1_SSSSM_b1_19, A2_SSSSM_b1_19, A3_SSSSM_b1_19,&
75          B1_SSSSM_b1_19, B2_SSSSM_b1_19, C1_SSSSM_b1_19, C2_SSSSM_b1_19,&
76          A1_ASSSM_b2_19, A2_ASSSM_b2_19, A3_ASSSM_b2_19,&
77          B1_ASSSM_b2_19, B2_ASSSM_b2_19, C1_ASSSM_b2_19, C2_ASSSM_b2_19,&
78          A1_CSSSM_b2_19, A2_CSSSM_b2_19, A3_CSSSM_b2_19,&
79          B1_CSSSM_b2_19, B2_CSSSM_b2_19, C1_CSSSM_b2_19, C2_CSSSM_b2_19,&
80          A1_SSSSM_b2_19, A2_SSSSM_b2_19, A3_SSSSM_b2_19,&
81          B1_SSSSM_b2_19, B2_SSSSM_b2_19, C1_SSSSM_b2_19, C2_SSSSM_b2_19
82!$OMP THREADPRIVATE(A1_ASSSM_b1_19, A2_ASSSM_b1_19, A3_ASSSM_b1_19)
83!$OMP THREADPRIVATE(B1_ASSSM_b1_19, B2_ASSSM_b1_19, C1_ASSSM_b1_19, C2_ASSSM_b1_19)
84!$OMP THREADPRIVATE(A1_CSSSM_b1_19, A2_CSSSM_b1_19, A3_CSSSM_b1_19)
85!$OMP THREADPRIVATE(B1_CSSSM_b1_19, B2_CSSSM_b1_19, C1_CSSSM_b1_19, C2_CSSSM_b1_19)
86!$OMP THREADPRIVATE(A1_SSSSM_b1_19, A2_SSSSM_b1_19, A3_SSSSM_b1_19)
87!$OMP THREADPRIVATE(B1_SSSSM_b1_19, B2_SSSSM_b1_19, C1_SSSSM_b1_19, C2_SSSSM_b1_19)
88!$OMP THREADPRIVATE(A1_ASSSM_b2_19, A2_ASSSM_b2_19, A3_ASSSM_b2_19)
89!$OMP THREADPRIVATE(B1_ASSSM_b2_19, B2_ASSSM_b2_19, C1_ASSSM_b2_19, C2_ASSSM_b2_19)
90!$OMP THREADPRIVATE(A1_CSSSM_b2_19, A2_CSSSM_b2_19, A3_CSSSM_b2_19)
91!$OMP THREADPRIVATE(B1_CSSSM_b2_19, B2_CSSSM_b2_19, C1_CSSSM_b2_19, C2_CSSSM_b2_19)
92!$OMP THREADPRIVATE(A1_SSSSM_b2_19, A2_SSSSM_b2_19, A3_SSSSM_b2_19)
93!$OMP THREADPRIVATE(B1_SSSSM_b2_19, B2_SSSSM_b2_19, C1_SSSSM_b2_19, C2_SSSSM_b2_19)
94
95
96! Coefficient optiques interpole sur le nombre de niveau du modele
97  REAL, ALLOCATABLE, DIMENSION(:), SAVE :: &
98          A1_ASSSM_b1, A2_ASSSM_b1, A3_ASSSM_b1,&
99          B1_ASSSM_b1, B2_ASSSM_b1, C1_ASSSM_b1, C2_ASSSM_b1,&
100          A1_CSSSM_b1, A2_CSSSM_b1, A3_CSSSM_b1,&
101          B1_CSSSM_b1, B2_CSSSM_b1, C1_CSSSM_b1, C2_CSSSM_b1,&
102          A1_SSSSM_b1, A2_SSSSM_b1, A3_SSSSM_b1,&
103          B1_SSSSM_b1, B2_SSSSM_b1, C1_SSSSM_b1, C2_SSSSM_b1,&
104          A1_ASSSM_b2, A2_ASSSM_b2, A3_ASSSM_b2,&
105          B1_ASSSM_b2, B2_ASSSM_b2, C1_ASSSM_b2, C2_ASSSM_b2,&
106          A1_CSSSM_b2, A2_CSSSM_b2, A3_CSSSM_b2,&
107          B1_CSSSM_b2, B2_CSSSM_b2, C1_CSSSM_b2, C2_CSSSM_b2,&
108          A1_SSSSM_b2, A2_SSSSM_b2, A3_SSSSM_b2,&
109          B1_SSSSM_b2, B2_SSSSM_b2, C1_SSSSM_b2, C2_SSSSM_b2
110!$OMP THREADPRIVATE(A1_ASSSM_b1, A2_ASSSM_b1, A3_ASSSM_b1)
111!$OMP THREADPRIVATE(B1_ASSSM_b1, B2_ASSSM_b1, C1_ASSSM_b1, C2_ASSSM_b1)
112!$OMP THREADPRIVATE(A1_CSSSM_b1, A2_CSSSM_b1, A3_CSSSM_b1)
113!$OMP THREADPRIVATE(B1_CSSSM_b1, B2_CSSSM_b1, C1_CSSSM_b1, C2_CSSSM_b1)
114!$OMP THREADPRIVATE(A1_SSSSM_b1, A2_SSSSM_b1, A3_SSSSM_b1)
115!$OMP THREADPRIVATE(B1_SSSSM_b1, B2_SSSSM_b1, C1_SSSSM_b1, C2_SSSSM_b1)
116!$OMP THREADPRIVATE(A1_ASSSM_b2, A2_ASSSM_b2, A3_ASSSM_b2)
117!$OMP THREADPRIVATE(B1_ASSSM_b2, B2_ASSSM_b2, C1_ASSSM_b2, C2_ASSSM_b2)
118!$OMP THREADPRIVATE(A1_CSSSM_b2, A2_CSSSM_b2, A3_CSSSM_b2)
119!$OMP THREADPRIVATE(B1_CSSSM_b2, B2_CSSSM_b2, C1_CSSSM_b2, C2_CSSSM_b2)
120!$OMP THREADPRIVATE(A1_SSSSM_b2, A2_SSSSM_b2, A3_SSSSM_b2)
121!$OMP THREADPRIVATE(B1_SSSSM_b2, B2_SSSSM_b2, C1_SSSSM_b2, C2_SSSSM_b2)
122 
123  REAL,PARAMETER :: RH_tab(nbre_RH)=(/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./)
124  REAL, PARAMETER :: RH_MAX=95.
125  REAL:: DELTA(klon,klev), rh(klon,klev), H
126  REAL:: tau_ae2b_int   ! Intermediate computation of epaisseur optique aerosol
127  REAL:: piz_ae2b_int   ! Intermediate computation of Single scattering albedo
128  REAL:: cg_ae2b_int    ! Intermediate computation of Assymetry parameter
129  REAL :: Fact_RH(nbre_RH)
130  REAL :: zrho
131  REAL :: fac
132  REAL :: zdp1(klon,klev)
133  REAL, PARAMETER ::  gravit = 9.80616    ! m2/s
134  INTEGER, ALLOCATABLE, DIMENSION(:)   :: aerosol_name
135  INTEGER :: nb_aer
136  REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp
137!RAF
138  REAL, DIMENSION(klon,klev,naero_spc) :: mass_temp_pi
139
140  !
141  ! Proprietes optiques
142  !
143  REAL:: alpha_aers_2bands(nbre_RH,nbands,naero_soluble)   !--unit m2/g SO4
144  REAL:: alpha_aeri_2bands(nbands,naero_insoluble)
145  REAL:: cg_aers_2bands(nbre_RH,nbands,naero_soluble)      !--unit
146  REAL:: cg_aeri_2bands(nbands,naero_insoluble)
147  REAL:: piz_aers_2bands(nbre_RH,nbands,naero_soluble)     !-- unit
148  REAL:: piz_aeri_2bands(nbands,naero_insoluble)           !-- unit
149
150  INTEGER :: id
151  LOGICAL :: used_aer(naero_tot)
152  REAL :: tmp_var, tmp_var_pi
153
154  DATA presnivs_19/&
155       100426.5,  98327.6, 95346.5, 90966.8, 84776.9, &
156       76536.5,   66292.2, 54559.3, 42501.8, 31806, &
157       23787.5,   18252.7, 13996,   10320.8, 7191.1, &
158       4661.7,    2732.9,  1345.6,  388.2/ 
159
160
161!***********************BAND 1***********************************
162!ACCUMULATION MODE
163  DATA A1_ASSSM_b1_19/ 4.373E+00,  4.361E+00,  4.331E+00, &
164                    4.278E+00,  4.223E+00,  4.162E+00, &
165                    4.103E+00,  4.035E+00,  3.962E+00, &
166                    3.904E+00,  3.871E+00,  3.847E+00, &
167                    3.824E+00,  3.780E+00,  3.646E+00, &
168                    3.448E+00,  3.179E+00,  2.855E+00,  2.630E+00/
169  DATA A2_ASSSM_b1_19/ 2.496E+00,  2.489E+00,  2.472E+00, &
170                    2.442E+00,  2.411E+00,  2.376E+00, &
171                    2.342E+00,  2.303E+00,  2.261E+00, &
172                    2.228E+00,  2.210E+00,  2.196E+00, &
173                    2.183E+00,  2.158E+00,  2.081E+00, &
174                    1.968E+00,  1.814E+00,  1.630E+00,  1.501E+00/
175  DATA A3_ASSSM_b1_19/-4.688E-02, -4.676E-02, -4.644E-02, &
176                   -4.587E-02, -4.528E-02, -4.463E-02, &
177                   -4.399E-02, -4.326E-02, -4.248E-02, &
178                   -4.186E-02, -4.151E-02, -4.125E-02, &
179                   -4.100E-02, -4.053E-02, -3.910E-02, &
180                   -3.697E-02, -3.408E-02, -3.061E-02, -2.819E-02/
181  DATA B1_ASSSM_b1_19/ 1.165E-08,  1.145E-08,  1.097E-08, &
182                    1.012E-08,  9.233E-09,  8.261E-09, &
183                    7.297E-09,  6.201E-09,  5.026E-09, &
184                    4.098E-09,  3.567E-09,  3.187E-09, &
185                    2.807E-09,  2.291E-09,  2.075E-09, &
186                    1.756E-09,  1.322E-09,  8.011E-10, 4.379E-10/
187  DATA B2_ASSSM_b1_19/ 2.193E-08,  2.192E-08,  2.187E-08, &
188                    2.179E-08,  2.171E-08,  2.162E-08, &
189                    2.153E-08,  2.143E-08,  2.132E-08, &
190                    2.124E-08,  2.119E-08,  2.115E-08, &
191                    2.112E-08,  2.106E-08,  2.100E-08, &
192                    2.090E-08,  2.077E-08,  2.061E-08,  2.049E-08/
193  DATA C1_ASSSM_b1_19/ 7.365E-01,  7.365E-01,  7.365E-01, &
194                    7.364E-01,  7.363E-01,  7.362E-01, &
195                    7.361E-01,  7.359E-01,  7.358E-01, &
196                    7.357E-01,  7.356E-01,  7.356E-01, &
197                    7.356E-01,  7.355E-01,  7.354E-01, &
198                    7.352E-01,  7.350E-01,  7.347E-01,  7.345E-01/
199  DATA C2_ASSSM_b1_19/ 5.833E-02,  5.835E-02,  5.841E-02, &
200                    5.850E-02,  5.859E-02,  5.870E-02, &
201                    5.880E-02,  5.891E-02,  5.904E-02, &
202                    5.914E-02,  5.920E-02,  5.924E-02, &
203                    5.928E-02,  5.934E-02,  5.944E-02, &
204                    5.959E-02,  5.979E-02,  6.003E-02,  6.020E-02/
205!COARSE MODE
206  DATA A1_CSSSM_b1_19/ 7.403E-01,  7.422E-01,  7.626E-01, &
207                    8.019E-01,  8.270E-01,  8.527E-01, &
208                    8.702E-01,  8.806E-01,  8.937E-01, &
209                    9.489E-01,  1.030E+00,  1.105E+00, &
210                    1.199E+00,  1.357E+00,  1.660E+00, &
211                    2.540E+00,  4.421E+00,  2.151E+00,  9.518E-01/
212  DATA A2_CSSSM_b1_19/ 4.522E-01,  4.532E-01,  4.644E-01, &
213                    4.859E-01,  4.996E-01,  5.137E-01, &
214                    5.233E-01,  5.290E-01,  5.361E-01, &
215                    5.655E-01,  6.085E-01,  6.483E-01, &
216                    6.979E-01,  7.819E-01,  9.488E-01, &
217                    1.450E+00,  2.523E+00,  1.228E+00,  5.433E-01/
218  DATA A3_CSSSM_b1_19/-8.516E-03, -8.535E-03, -8.744E-03, &
219                   -9.148E-03, -9.406E-03, -9.668E-03, &
220                   -9.848E-03, -9.955E-03, -1.009E-02, &
221                   -1.064E-02, -1.145E-02, -1.219E-02, &
222                   -1.312E-02, -1.470E-02, -1.783E-02, &
223                   -2.724E-02, -4.740E-02, -2.306E-02, -1.021E-02/
224  DATA B1_CSSSM_b1_19/ 2.535E-07,  2.530E-07,  2.479E-07, &
225                    2.380E-07,  2.317E-07,  2.252E-07, &
226                    2.208E-07,  2.182E-07,  2.149E-07, &
227                    2.051E-07,  1.912E-07,  1.784E-07, &
228                    1.624E-07,  1.353E-07,  1.012E-07, &
229                    6.016E-08,  2.102E-08,  0.000E+00,  0.000E+00/
230  DATA B2_CSSSM_b1_19/ 1.221E-07,  1.217E-07,  1.179E-07, &
231                    1.104E-07,  1.056E-07,  1.008E-07, &
232                    9.744E-08,  9.546E-08,  9.299E-08, &
233                    8.807E-08,  8.150E-08,  7.544E-08, &
234                    6.786E-08,  5.504E-08,  4.080E-08, &
235                    2.960E-08,  2.300E-08,  2.030E-08,  1.997E-08/
236  DATA C1_CSSSM_b1_19/ 7.659E-01,  7.658E-01,  7.652E-01, &
237                    7.639E-01,  7.631E-01,  7.623E-01, &
238                    7.618E-01,  7.614E-01,  7.610E-01, &
239                    7.598E-01,  7.581E-01,  7.566E-01, &
240                    7.546E-01,  7.513E-01,  7.472E-01, &
241                    7.423E-01,  7.376E-01,  7.342E-01,  7.334E-01/
242  DATA C2_CSSSM_b1_19/ 3.691E-02,  3.694E-02,  3.729E-02, &
243                    3.796E-02,  3.839E-02,  3.883E-02, &
244                    3.913E-02,  3.931E-02,  3.953E-02, &
245                    4.035E-02,  4.153E-02,  4.263E-02, &
246                    4.400E-02,  4.631E-02,  4.933E-02, &
247                    5.331E-02,  5.734E-02,  6.053E-02,  6.128E-02/
248!SUPER COARSE MODE
249  DATA A1_SSSSM_b1_19/ 2.836E-01,  2.876E-01,  2.563E-01, &
250                    2.414E-01,  2.541E-01,  2.546E-01, &
251                    2.572E-01,  2.638E-01,  2.781E-01, &
252                    3.167E-01,  4.209E-01,  5.286E-01, &
253                    6.959E-01,  9.233E-01,  1.282E+00, &
254                    1.836E+00,  2.981E+00,  4.355E+00,  4.059E+00/
255  DATA A2_SSSSM_b1_19/ 1.608E-01,  1.651E-01,  1.577E-01, &
256                    1.587E-01,  1.686E-01,  1.690E-01, &
257                    1.711E-01,  1.762E-01,  1.874E-01, &
258                    2.138E-01,  2.751E-01,  3.363E-01, &
259                    4.279E-01,  5.519E-01,  7.421E-01, &
260                    1.048E+00,  1.702E+00,  2.485E+00,  2.317E+00/
261  DATA A3_SSSSM_b1_19/-3.025E-03, -3.111E-03, -2.981E-03, &
262                   -3.005E-03, -3.193E-03, -3.200E-03, &
263                   -3.239E-03, -3.336E-03, -3.548E-03, &
264                   -4.047E-03, -5.196E-03, -6.345E-03, &
265                   -8.061E-03, -1.038E-02, -1.395E-02, &
266                   -1.970E-02, -3.197E-02, -4.669E-02, -4.352E-02/
267  DATA B1_SSSSM_b1_19/ 6.759E-07,  6.246E-07,  5.542E-07, &
268                    4.953E-07,  4.746E-07,  4.738E-07, &
269                    4.695E-07,  4.588E-07,  4.354E-07, &
270                    3.947E-07,  3.461E-07,  3.067E-07, &
271                    2.646E-07,  2.095E-07,  1.481E-07, &
272                    9.024E-08,  5.747E-08,  2.384E-08,  6.599E-09/
273  DATA B2_SSSSM_b1_19/ 5.977E-07,  5.390E-07,  4.468E-07, &
274                    3.696E-07,  3.443E-07,  3.433E-07, &
275                    3.380E-07,  3.249E-07,  2.962E-07, &
276                    2.483E-07,  1.989E-07,  1.623E-07, &
277                    1.305E-07,  9.015E-08,  6.111E-08, &
278                    3.761E-08,  2.903E-08,  2.337E-08,  2.147E-08/
279  DATA C1_SSSSM_b1_19/ 8.120E-01,  8.084E-01,  8.016E-01, &
280                    7.953E-01,  7.929E-01,  7.928E-01, &
281                    7.923E-01,  7.910E-01,  7.882E-01, &
282                    7.834E-01,  7.774E-01,  7.725E-01, &
283                    7.673E-01,  7.604E-01,  7.529E-01, &
284                    7.458E-01,  7.419E-01,  7.379E-01,  7.360E-01/
285  DATA C2_SSSSM_b1_19/ 2.388E-02,  2.392E-02,  2.457E-02,  2.552E-02, &
286                    2.615E-02,  2.618E-02,  2.631E-02,  2.663E-02, &
287                    2.735E-02,  2.875E-02,  3.113E-02,  3.330E-02, &
288                    3.615E-02,  3.997E-02,  4.521E-02,  5.038E-02, &
289                    5.358E-02,  5.705E-02,  5.887E-02/
290!*********************BAND 2************************************************
291!ACCUMULATION MODE
292  DATA A1_ASSSM_b2_19/1.256E+00, 1.246E+00, 1.226E+00, 1.187E+00, 1.148E+00, &
293                   1.105E+00, 1.062E+00, 1.014E+00, 9.616E-01, 9.205E-01, &
294                   8.970E-01, 8.800E-01, 8.632E-01, 8.371E-01, 7.943E-01, &
295                   7.308E-01, 6.448E-01, 5.414E-01, 4.693E-01/
296  DATA A2_ASSSM_b2_19/5.321E-01, 5.284E-01, 5.196E-01, 5.036E-01, 4.872E-01, &
297                   4.691E-01, 4.512E-01, 4.308E-01, 4.089E-01, 3.917E-01, &
298                   3.818E-01, 3.747E-01, 3.676E-01, 3.567E-01, 3.385E-01, &
299                   3.116E-01, 2.751E-01, 2.312E-01, 2.006E-01/
300  DATA A3_ASSSM_b2_19/-1.053E-02, -1.046E-02, -1.028E-02, -9.964E-03, -9.637E-03, &
301                   -9.279E-03, -8.923E-03, -8.518E-03, -8.084E-03, -7.741E-03, &
302                   -7.545E-03, -7.405E-03, -7.265E-03, -7.048E-03, -6.687E-03, &
303                   -6.156E-03, -5.433E-03, -4.565E-03, -3.961E-03/
304  DATA B1_ASSSM_b2_19/1.560E-02, 1.560E-02, 1.561E-02, 1.565E-02, 1.568E-02, &
305                   1.572E-02, 1.576E-02, 1.580E-02, 1.584E-02, 1.588E-02, &
306                   1.590E-02, 1.592E-02, 1.593E-02, 1.595E-02, 1.599E-02, &
307                   1.605E-02, 1.612E-02, 1.621E-02, 1.627E-02/
308  DATA B2_ASSSM_b2_19/1.073E-02, 1.074E-02, 1.076E-02, 1.079E-02, 1.082E-02, &
309                   1.085E-02, 1.089E-02, 1.093E-02, 1.097E-02, 1.100E-02, &
310                   1.102E-02, 1.103E-02, 1.105E-02, 1.107E-02, 1.110E-02, &
311                   1.115E-02, 1.122E-02, 1.130E-02, 1.136E-02/
312  DATA C1_ASSSM_b2_19/7.429E-01, 7.429E-01, 7.429E-01, 7.427E-01, 7.427E-01, &
313                   7.424E-01, 7.423E-01, 7.422E-01, 7.421E-01, 7.420E-01, &
314                   7.419E-01, 7.419E-01, 7.418E-01, 7.417E-01, 7.416E-01, &
315                   7.415E-01, 7.413E-01, 7.409E-01, 7.408E-01/
316  DATA C2_ASSSM_b2_19/3.031E-02, 3.028E-02, 3.022E-02, 3.011E-02, 2.999E-02, &
317                   2.986E-02, 2.973E-02, 2.959E-02, 2.943E-02, 2.931E-02, &
318                   2.924E-02, 2.919E-02, 2.913E-02, 2.905E-02, 2.893E-02, &
319                   2.874E-02, 2.847E-02, 2.817E-02, 2.795E-02/
320!COARSE MODE
321  DATA A1_CSSSM_b2_19/7.061E-01, 7.074E-01, 7.211E-01, 7.476E-01, 7.647E-01, &
322                   7.817E-01, 7.937E-01, 8.007E-01, 8.095E-01, 8.436E-01, &
323                   8.932E-01, 9.390E-01, 9.963E-01, 1.093E+00, 1.256E+00, &
324                   1.668E+00, 1.581E+00, 3.457E-01, 1.331E-01/
325  DATA A2_CSSSM_b2_19/3.617E-01, 3.621E-01, 3.662E-01, 3.739E-01, 3.789E-01, &
326                   3.840E-01, 3.874E-01, 3.895E-01, 3.921E-01, 4.001E-01, &
327                   4.117E-01, 4.223E-01, 4.356E-01, 4.581E-01, 5.099E-01, &
328                   6.831E-01, 6.663E-01, 1.481E-01, 5.703E-02/
329  DATA A3_CSSSM_b2_19/-6.953E-03, -6.961E-03, -7.048E-03, -7.216E-03, -7.322E-03, &
330                   -7.431E-03, -7.506E-03, -7.551E-03, -7.606E-03, -7.791E-03, &
331                   -8.059E-03, -8.305E-03, -8.613E-03, -9.134E-03, -1.023E-02, &
332                   -1.365E-02, -1.320E-02, -2.922E-03, -1.125E-03/
333  DATA B1_CSSSM_b2_19/1.007E-02, 1.008E-02, 1.012E-02, 1.019E-02, 1.024E-02, &
334                   1.029E-02, 1.033E-02, 1.035E-02, 1.038E-02, 1.056E-02, &
335                   1.083E-02, 1.109E-02, 1.140E-02, 1.194E-02, 1.270E-02, &
336                   1.390E-02, 1.524E-02, 1.639E-02, 1.667E-02/
337  DATA B2_CSSSM_b2_19/4.675E-03, 4.682E-03, 4.760E-03, 4.908E-03, 5.004E-03, &
338                   5.102E-03, 5.168E-03, 5.207E-03, 5.256E-03, 5.474E-03, &
339                   5.793E-03, 6.089E-03, 6.457E-03, 7.081E-03, 7.923E-03, &
340                   9.127E-03, 1.041E-02, 1.147E-02, 1.173E-02/
341  DATA C1_CSSSM_b2_19/7.571E-01, 7.571E-01, 7.570E-01, 7.568E-01, 7.565E-01, &
342                   7.564E-01, 7.563E-01, 7.562E-01, 7.562E-01, 7.557E-01, &
343                   7.552E-01, 7.545E-01, 7.539E-01, 7.527E-01, 7.509E-01, &
344                   7.478E-01, 7.440E-01, 7.404E-01, 7.394E-01/
345  DATA C2_CSSSM_b2_19/4.464E-02, 4.465E-02, 4.468E-02, 4.474E-02, 4.477E-02, &
346                   4.480E-02, 4.482E-02, 4.484E-02, 4.486E-02, 4.448E-02, &
347                   4.389E-02, 4.334E-02, 4.264E-02, 4.148E-02, 3.957E-02, &
348                   3.588E-02, 3.149E-02, 2.751E-02, 2.650E-02/
349!SUPER COARSE MODE
350  DATA A1_SSSSM_b2_19/2.357E-01, 2.490E-01, 2.666E-01, 2.920E-01, 3.120E-01, &
351                   3.128E-01, 3.169E-01, 3.272E-01, 3.498E-01, 3.960E-01, &
352                   4.822E-01, 5.634E-01, 6.763E-01, 8.278E-01, 1.047E+00, &
353                   1.340E+00, 1.927E+00, 1.648E+00, 1.031E+00/
354  DATA A2_SSSSM_b2_19/1.219E-01, 1.337E-01, 1.633E-01, 1.929E-01, 2.057E-01, &
355                   2.062E-01, 2.089E-01, 2.155E-01, 2.300E-01, 2.560E-01, &
356                   2.908E-01, 3.199E-01, 3.530E-01, 3.965E-01, 4.475E-01, &
357                   5.443E-01, 7.943E-01, 6.928E-01, 4.381E-01/
358  DATA A3_SSSSM_b2_19/-2.387E-03, -2.599E-03, -3.092E-03, -3.599E-03, -3.832E-03, &
359                   -3.842E-03, -3.890E-03, -4.012E-03, -4.276E-03, -4.763E-03, &
360                   -5.455E-03, -6.051E-03, -6.763E-03, -7.708E-03, -8.887E-03, &
361                   -1.091E-02, -1.585E-02, -1.373E-02, -8.665E-03/
362  DATA B1_SSSSM_b2_19/1.260E-02, 1.211E-02, 1.126E-02, 1.056E-02, 1.038E-02, &
363                   1.037E-02, 1.033E-02, 1.023E-02, 1.002E-02, 9.717E-03, &
364                   9.613E-03, 9.652E-03, 9.983E-03, 1.047E-02, 1.168E-02, &
365                   1.301E-02, 1.399E-02, 1.514E-02, 1.578E-02/
366  DATA B2_SSSSM_b2_19/2.336E-03, 2.419E-03, 2.506E-03, 2.610E-03, 2.690E-03, &
367                   2.694E-03, 2.711E-03, 2.752E-03, 2.844E-03, 3.043E-03, &
368                   3.455E-03, 3.871E-03, 4.507E-03, 5.373E-03, 6.786E-03, &
369                   8.238E-03, 9.208E-03, 1.032E-02, 1.091E-02/
370  DATA C1_SSSSM_b2_19/7.832E-01, 7.787E-01, 7.721E-01, 7.670E-01, 7.657E-01, &
371                   7.657E-01, 7.654E-01, 7.648E-01, 7.634E-01, 7.613E-01, &
372                   7.596E-01, 7.585E-01, 7.574E-01, 7.560E-01, 7.533E-01, &
373                   7.502E-01, 7.476E-01, 7.443E-01, 7.423E-01/
374  DATA C2_SSSSM_b2_19/3.144E-02, 3.268E-02, 3.515E-02, 3.748E-02, 3.837E-02, &
375                   3.840E-02, 3.860E-02, 3.906E-02, 4.006E-02, 4.173E-02, &
376                   4.338E-02, 4.435E-02, 4.459E-02, 4.467E-02, 4.202E-02, &
377                   3.864E-02, 3.559E-02, 3.183E-02, 2.964E-02/
378!***************************************************************************
379
380  spsol = 0
381  spinsol = 0
382  spss = 0
383
384  DATA alpha_aers_2bands/  &
385       ! bc soluble
386       7.675,7.675,7.675,7.675,7.675,7.675,    &
387       7.675,7.675,10.433,11.984,13.767,15.567,&
388       4.720,4.720,4.720,4.720,4.720,4.720,    &
389       4.720,4.720,6.081,6.793,7.567,9.344,    &
390       ! pom soluble
391       5.503,5.503,5.503,5.503,5.588,5.957,    &
392       6.404,7.340,8.545,10.319,13.595,20.398, &
393       1.402,1.402,1.402,1.402,1.431,1.562,    &
394       1.715,2.032,2.425,2.991,4.193,7.133,    &
395       ! sulfate   
396       4.681,5.062,5.460,5.798,6.224,6.733,    &
397       7.556,8.613,10.687,12.265,16.32,21.692, &
398       1.107,1.239,1.381,1.490,1.635,1.8030,   &
399       2.071,2.407,3.126,3.940,5.539,7.921,    &
400                                ! sulfate coarse
401       4.681,5.062,5.460,5.798,6.224,6.733,    &
402       7.556,8.613,10.687,12.265,16.32,21.692, &
403       1.107,1.239,1.381,1.490,1.635,1.8030,   &
404       2.071,2.407,3.126,3.940,5.539,7.921,    &
405                                ! seasalt Super Coarse Soluble (SS)
406       0.5090,0.6554,0.7129,0.7767,0.8529,1.2728, &
407       1.3820,1.5792,1.9173,2.2002,2.7173,4.1487, &
408       0.5167,0.6613,0.7221,0.7868,0.8622,1.3027, &
409       1.4227,1.6317,1.9887,2.2883,2.8356,4.3453, &
410                                ! seasalt  Coarse Soluble (CS)
411       0.5090,0.6554,0.7129,0.7767,0.8529,1.2728, &
412       1.3820,1.5792,1.9173,2.2002,2.7173,4.1487, &
413       0.5167,0.6613,0.7221,0.7868,0.8622,1.3027, &
414       1.4227,1.6317,1.9887,2.2883,2.8356,4.3453, &
415                                ! seasalt  Accumulation Soluble (AS)
416       4.125, 4.674, 5.005, 5.434, 5.985, 10.006, &
417       11.175,13.376,17.264,20.540,26.604, 42.349,&
418       4.187, 3.939, 3.919, 3.937, 3.995,  5.078, &
419       5.511, 6.434, 8.317,10.152,14.024, 26.537/
420
421  DATA alpha_aeri_2bands/  &
422       ! dust insoluble
423       0.7661,0.7123,&
424       ! bc insoluble
425       10.360,4.437, &
426       ! pom insoluble
427       3.741,0.606/
428
429  DATA cg_aers_2bands/ &
430       ! bc soluble
431       .612, .612, .612, .612, .612, .612, &
432       .612, .612, .702, .734, .760, .796, &
433       .433, .433, .433, .433, .433, .433, &
434       .433, .433, .534, .575, .613, .669, &
435       ! pom soluble
436       .663, .663, .663, .663, .666, .674, &
437       .685, .702, .718, .737, .757, .777, &
438       .544, .544, .544, .544, .547, .554, &
439       .565, .583, .604, .631, .661, .698, &
440       ! sulfate   
441       .658, .669, .680, .688, .698, .707, &
442       .719, .733, .752, .760, .773, .786, &
443       .544, .555, .565, .573, .583, .593, &
444       .610, .628, .655, .666, .692, .719, &
445                                ! sulfate coarse
446       .658, .669, .680, .688, .698, .707, &
447       .719, .733, .752, .760, .773, .786, &
448       .544, .555, .565, .573, .583, .593, &
449       .610, .628, .655, .666, .692, .719, &
450                                ! seasalt Super Coarse soluble (SS)
451       .727, .747, .755, .761, .770, .788, &
452       .792, .799, .805, .809, .815, .826, &
453       .717, .738, .745, .752, .761, .779, &
454       .781, .786, .793, .797, .803, .813, &
455                                ! seasalt Coarse soluble (CS)
456       .727, .747, .755, .761, .770, .788, &
457       .792, .799, .805, .809, .815, .826, &
458       .717, .738, .745, .752, .761, .779, &
459       .781, .786, .793, .797, .803, .813, &
460                                ! Sesalt Accumulation Soluble (AS)
461       .727, .741, .748, .754, .761, .782, &
462       .787, .792, .797, .799, .801, .799, &
463       .606, .645, .658, .669, .681, .726, &
464       .734, .746, .761, .770, .782, .798/
465
466  DATA cg_aeri_2bands/ &
467       ! dust insoluble
468       .701, .670, &
469       ! bc insoluble
470       .471, .297, &
471       ! pom insoluble
472       .568, .365/
473
474  DATA piz_aers_2bands/&
475       ! bc soluble
476       .445, .445, .445, .445, .445, .445, &
477       .445, .445, .461, .480, .505, .528, &
478       .362, .362, .362, .362, .362, .362, &
479       .362, .362, .381, .405, .437, .483, &
480       ! pom soluble
481       .972, .972, .972, .972, .972, .974, &
482       .976, .979, .982, .986, .989, .992, &
483       .924, .924, .924, .924, .925, .927, &
484       .932, .938, .945, .952, .961, .970, &
485       ! sulfate
486       1.000,1.000,1.000,1.000,1.000,1.000, &
487       1.000,1.000,1.000,1.000,1.000,1.000, &
488       .992, .988, .988, .987, .986, .985,  &
489       .985, .985, .984, .984, .984, .984,  &
490                                ! sulfate coarse
491       1.000,1.000,1.000,1.000,1.000,1.000, &
492       1.000,1.000,1.000,1.000,1.000,1.000, &
493       .992, .988, .988, .987, .986, .985,  &
494       .985, .985, .984, .984, .984, .984,  &
495                                ! seasalt Super Coarse Soluble (SS)
496       1.000,1.000,1.000,1.000,1.000,1.000, &
497       1.000,1.000,1.000,1.000,1.000,1.000, &
498       0.992,0.989,0.987,0.986,0.986,0.980, &
499       0.980,0.978,0.976,0.976,0.974,0.971, &
500                                ! seasalt Coarse soluble (CS)
501       1.000,1.000,1.000,1.000,1.000,1.000, &
502       1.000,1.000,1.000,1.000,1.000,1.000, &
503       0.992,0.989,0.987,0.986,0.986,0.980, &
504       0.980,0.978,0.976,0.976,0.974,0.971, &
505                                ! seasalt Accumulation Soluble (AS)
506       1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
507       1.000, 1.000, 1.000, 1.000, 1.000, 1.000, &
508       0.970, 0.975, 0.976, 0.977, 0.978, 0.982, &
509       0.982, 0.983, 0.984, 0.984, 0.985, 0.985/
510
511  DATA piz_aeri_2bands/ &
512       ! dust insoluble
513       .963, .987, &
514       ! bc insoluble
515       .395, .264, &
516       ! pom insoluble
517       .966, .859/
518
519! Interpolation des coefficients optiques de 19 niveaux vers le nombre des niveaux du model
520  IF (firstcall) THEN
521     firstcall=.FALSE.
522     
523     IF (.NOT. ALLOCATED(A1_ASSSM_b1)) THEN
524        ALLOCATE(A1_ASSSM_b1(klev),A2_ASSSM_b1(klev), A3_ASSSM_b1(klev),&
525          B1_ASSSM_b1(klev), B2_ASSSM_b1(klev), C1_ASSSM_b1(klev), C2_ASSSM_b1(klev),&
526          A1_CSSSM_b1(klev), A2_CSSSM_b1(klev), A3_CSSSM_b1(klev),&
527          B1_CSSSM_b1(klev), B2_CSSSM_b1(klev), C1_CSSSM_b1(klev), C2_CSSSM_b1(klev),&
528          A1_SSSSM_b1(klev), A2_SSSSM_b1(klev), A3_SSSSM_b1(klev),&
529          B1_SSSSM_b1(klev), B2_SSSSM_b1(klev), C1_SSSSM_b1(klev), C2_SSSSM_b1(klev),&
530          A1_ASSSM_b2(klev), A2_ASSSM_b2(klev), A3_ASSSM_b2(klev),&
531          B1_ASSSM_b2(klev), B2_ASSSM_b2(klev), C1_ASSSM_b2(klev), C2_ASSSM_b2(klev),&
532          A1_CSSSM_b2(klev), A2_CSSSM_b2(klev), A3_CSSSM_b2(klev),&
533          B1_CSSSM_b2(klev), B2_CSSSM_b2(klev), C1_CSSSM_b2(klev), C2_CSSSM_b2(klev),&
534          A1_SSSSM_b2(klev), A2_SSSSM_b2(klev), A3_SSSSM_b2(klev),&
535          B1_SSSSM_b2(klev), B2_SSSSM_b2(klev), C1_SSSSM_b2(klev), C2_SSSSM_b2(klev), stat=ierr)
536        IF (ierr /= 0) CALL abort_gcm('aeropt_2bands', 'pb in allocation 1',1)
537     END IF
538     
539! bande 1
540     CALL pres2lev(A1_ASSSM_b1_19, A1_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
541     CALL pres2lev(A2_ASSSM_b1_19, A2_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
542     CALL pres2lev(A3_ASSSM_b1_19, A3_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
543     CALL pres2lev(B1_ASSSM_b1_19, B1_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
544     CALL pres2lev(B2_ASSSM_b1_19, B2_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
545     CALL pres2lev(C1_ASSSM_b1_19, C1_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
546     CALL pres2lev(C2_ASSSM_b1_19, C2_ASSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
547
548     CALL pres2lev(A1_CSSSM_b1_19, A1_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
549     CALL pres2lev(A2_CSSSM_b1_19, A2_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
550     CALL pres2lev(A3_CSSSM_b1_19, A3_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
551     CALL pres2lev(B1_CSSSM_b1_19, B1_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
552     CALL pres2lev(B2_CSSSM_b1_19, B2_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
553     CALL pres2lev(C1_CSSSM_b1_19, C1_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
554     CALL pres2lev(C2_CSSSM_b1_19, C2_CSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
555
556     CALL pres2lev(A1_SSSSM_b1_19, A1_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
557     CALL pres2lev(A2_SSSSM_b1_19, A2_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
558     CALL pres2lev(A3_SSSSM_b1_19, A3_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
559     CALL pres2lev(B1_SSSSM_b1_19, B1_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
560     CALL pres2lev(B2_SSSSM_b1_19, B2_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
561     CALL pres2lev(C1_SSSSM_b1_19, C1_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
562     CALL pres2lev(C2_SSSSM_b1_19, C2_SSSSM_b1, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
563
564! bande 2
565     CALL pres2lev(A1_ASSSM_b2_19, A1_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
566     CALL pres2lev(A2_ASSSM_b2_19, A2_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
567     CALL pres2lev(A3_ASSSM_b2_19, A3_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
568     CALL pres2lev(B1_ASSSM_b2_19, B1_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
569     CALL pres2lev(B2_ASSSM_b2_19, B2_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
570     CALL pres2lev(C1_ASSSM_b2_19, C1_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
571     CALL pres2lev(C2_ASSSM_b2_19, C2_ASSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
572
573     CALL pres2lev(A1_CSSSM_b2_19, A1_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
574     CALL pres2lev(A2_CSSSM_b2_19, A2_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
575     CALL pres2lev(A3_CSSSM_b2_19, A3_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
576     CALL pres2lev(B1_CSSSM_b2_19, B1_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
577     CALL pres2lev(B2_CSSSM_b2_19, B2_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
578     CALL pres2lev(C1_CSSSM_b2_19, C1_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
579     CALL pres2lev(C2_CSSSM_b2_19, C2_CSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
580
581     CALL pres2lev(A1_SSSSM_b2_19, A1_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
582     CALL pres2lev(A2_SSSSM_b2_19, A2_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
583     CALL pres2lev(A3_SSSSM_b2_19, A3_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
584     CALL pres2lev(B1_SSSSM_b2_19, B1_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
585     CALL pres2lev(B2_SSSSM_b2_19, B2_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
586     CALL pres2lev(C1_SSSSM_b2_19, C1_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
587     CALL pres2lev(C2_SSSSM_b2_19, C2_SSSSM_b2, nb_level, klev, presnivs_19, presnivs, 1, 1, .FALSE.)
588
589  END IF ! firstcall
590
591
592  DO k=1, klev
593    DO i=1, klon
594      zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
595!CDIR UNROLL=naero_spc
596      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
597!RAF zrho
598!CDIR UNROLL=naero_spc
599      mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9
600      zdp1(i,k)=pdel(i,k)/(gravit*delt)      ! air mass auxiliary  variable --> zdp1 [kg/(m^2 *s)]
601    ENDDO
602  ENDDO
603
604  IF (flag_aerosol .EQ. 1) THEN
605     nb_aer = 2
606     ALLOCATE (aerosol_name(nb_aer))
607     aerosol_name(1) = id_ASSO4M
608     aerosol_name(2) = id_CSSO4M
609  ELSEIF (flag_aerosol .EQ. 2) THEN
610     nb_aer = 2
611     ALLOCATE (aerosol_name(nb_aer))
612     aerosol_name(1) = id_ASBCM
613     aerosol_name(2) = id_AIBCM
614  ELSEIF (flag_aerosol .EQ. 3) THEN
615     nb_aer = 2
616     ALLOCATE (aerosol_name(nb_aer))
617     aerosol_name(1) = id_ASPOMM
618     aerosol_name(2) = id_AIPOMM
619  ELSEIF (flag_aerosol .EQ. 4) THEN
620     nb_aer = 3
621     ALLOCATE (aerosol_name(nb_aer))
622     aerosol_name(1) = id_CSSSM
623     aerosol_name(2) = id_SSSSM
624     aerosol_name(3) = id_ASSSM
625  ELSEIF (flag_aerosol .EQ. 5) THEN
626     nb_aer = 1
627     ALLOCATE (aerosol_name(nb_aer))
628     aerosol_name(1) = id_CIDUSTM
629  ELSEIF (flag_aerosol .EQ. 6) THEN
630     nb_aer = 10
631     ALLOCATE (aerosol_name(nb_aer))
632     aerosol_name(1) = id_ASSO4M     
633     aerosol_name(2) = id_ASBCM
634     aerosol_name(3) = id_AIBCM
635     aerosol_name(4) = id_ASPOMM
636     aerosol_name(5) = id_AIPOMM
637     aerosol_name(6) = id_CSSSM
638     aerosol_name(7) = id_SSSSM
639     aerosol_name(8) = id_ASSSM
640     aerosol_name(9) = id_CIDUSTM
641     aerosol_name(10)= id_CSSO4M
642  ENDIF
643
644
645  !
646  ! loop over modes, use of precalculated nmd and corresponding sigma
647  !    loop over wavelengths
648  !    for each mass species in mode
649  !      interpolate from Sext to retrieve Sext_at_gridpoint_per_species
650  !      compute optical_thickness_at_gridpoint_per_species
651
652
653
654!!CDIR ON_ADB(RH_tab)
655!CDIR ON_ADB(fact_RH)
656!CDIR SHORTLOOP
657  DO n=1,nbre_RH-1
658    fact_RH(n)=1./(RH_tab(n+1)-RH_tab(n))
659  ENDDO
660   
661  DO k=1, KLEV
662!!CDIR ON_ADB(RH_tab)
663!CDIR ON_ADB(fact_RH)
664    DO i=1, KLON
665      rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX)
666      RH_num(i,k) = INT( rh(i,k)/10. + 1.)
667      IF (rh(i,k).GT.85.) RH_num(i,k)=10
668      IF (rh(i,k).GT.90.) RH_num(i,k)=11
669     
670      DELTA(i,k)=(rh(i,k)-RH_tab(RH_num(i,k)))*fact_RH(RH_num(i,k))
671    ENDDO
672  ENDDO
673
674  used_aer(:)=.FALSE.
675   
676  DO m=1,nb_aer   ! tau is only computed for each mass
677    fac=1.0
678     IF (aerosol_name(m).EQ.id_ASBCM) THEN
679         soluble=.TRUE.
680         spsol=1
681         spss=0
682     ELSEIF (aerosol_name(m).EQ.id_ASPOMM) THEN
683        soluble=.TRUE.
684        spsol=2
685        spss=0
686     ELSEIF (aerosol_name(m).EQ.id_ASSO4M) THEN
687        soluble=.TRUE.
688        spsol=3
689        spss=0
690        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
691     ELSEIF  (aerosol_name(m).EQ.id_CSSO4M) THEN
692        soluble=.TRUE.
693        spsol=4
694        spss=0
695        fac=1.375    ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD
696     ELSEIF (aerosol_name(m).EQ.id_SSSSM) THEN
697         soluble=.TRUE.
698         spsol=5
699         spss=3
700     ELSEIF (aerosol_name(m).EQ.id_CSSSM) THEN
701         soluble=.TRUE.
702         spsol=6
703         spss=2
704     ELSEIF (aerosol_name(m).EQ.id_ASSSM) THEN
705         soluble=.TRUE.
706         spsol=7
707         spss=1
708     ELSEIF (aerosol_name(m).EQ.id_CIDUSTM) THEN
709         soluble=.FALSE.
710         spinsol=1
711         spss=0
712     ELSEIF  (aerosol_name(m).EQ.id_AIBCM) THEN
713         soluble=.FALSE.
714         spinsol=2
715         spss=0
716     ELSEIF (aerosol_name(m).EQ.id_AIPOMM) THEN
717         soluble=.FALSE.
718         spinsol=3
719         spss=0
720     ELSE
721         CYCLE
722     ENDIF
723
724    id=aerosol_name(m)
725    used_aer(id)=.TRUE.
726
727     
728    IF (soluble) THEN
729
730      IF (spss.NE.0) THEN
731
732         IF (spss.EQ.1) THEN !accumulation mode
733            DO k=1, KLEV
734!CDIR ON_ADB(A1_ASSSM_b1)
735!CDIR ON_ADB(A2_ASSSM_b1)
736!CDIR ON_ADB(A3_ASSSM_b1)
737!CDIR ON_ADB(B1_ASSSM_b1)
738!CDIR ON_ADB(B2_ASSSM_b1)
739!CDIR ON_ADB(C1_ASSSM_b1)
740!CDIR ON_ADB(C2_ASSSM_b2)
741!CDIR ON_ADB(A1_ASSSM_b2)
742!CDIR ON_ADB(A2_ASSSM_b2)
743!CDIR ON_ADB(A3_ASSSM_b2)
744!CDIR ON_ADB(B1_ASSSM_b2)
745!CDIR ON_ADB(B2_ASSSM_b2)
746!CDIR ON_ADB(C1_ASSSM_b2)
747!CDIR ON_ADB(C2_ASSSM_b2)
748              DO i=1, KLON
749                H=rh(i,k)/100
750                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
751                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
752
753                ! band 1
754                tau_ae2b_int=A1_ASSSM_b1(k)+A2_ASSSM_b1(k)*H+A3_ASSSM_b1(k)/(H-1.05)
755                piz_ae2b_int=1-B1_ASSSM_b1(k)-B2_ASSSM_b1(k)*H
756                cg_ae2b_int=C1_ASSSM_b1(k)+C2_ASSSM_b1(k)*H
757
758                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
759                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
760                piz_ae(i,k,id,1) = piz_ae2b_int
761                cg_ae(i,k,id,1)= cg_ae2b_int
762               
763                !band 2
764                tau_ae2b_int=A1_ASSSM_b2(k)+A2_ASSSM_b2(k)*H+A3_ASSSM_b2(k)/(H-1.05)
765                piz_ae2b_int=1-B1_ASSSM_b2(k)-B2_ASSSM_b2(k)*H
766                cg_ae2b_int=C1_ASSSM_b2(k)+C2_ASSSM_b2(k)*H
767
768                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
769                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
770                piz_ae(i,k,id,2) = piz_ae2b_int
771                cg_ae(i,k,id,2)= cg_ae2b_int
772
773              ENDDO
774            ENDDO
775          ENDIF
776
777          IF (spss.EQ.2) THEN !coarse mode
778            DO k=1, KLEV
779!CDIR ON_ADB(A1_CSSSM_b1)
780!CDIR ON_ADB(A2_CSSSM_b1)
781!CDIR ON_ADB(A3_CSSSM_b1)
782!CDIR ON_ADB(B1_CSSSM_b1)
783!CDIR ON_ADB(B2_CSSSM_b1)
784!CDIR ON_ADB(C1_CSSSM_b1)
785!CDIR ON_ADB(C2_CSSSM_b2)
786!CDIR ON_ADB(A1_CSSSM_b2)
787!CDIR ON_ADB(A2_CSSSM_b2)
788!CDIR ON_ADB(A3_CSSSM_b2)
789!CDIR ON_ADB(B1_CSSSM_b2)
790!CDIR ON_ADB(B2_CSSSM_b2)
791!CDIR ON_ADB(C1_CSSSM_b2)
792!CDIR ON_ADB(C2_CSSSM_b2)
793              DO i=1, KLON
794                H=rh(i,k)/100
795                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
796                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
797                ! band 1
798                tau_ae2b_int=A1_CSSSM_b1(k)+A2_CSSSM_b1(k)*H+A3_CSSSM_b1(k)/(H-1.05)
799                piz_ae2b_int=1-B1_CSSSM_b1(k)-B2_CSSSM_b1(k)*H
800                cg_ae2b_int=C1_CSSSM_b1(k)+C2_CSSSM_b1(k)*H
801
802                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
803                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
804                piz_ae(i,k,id,1) = piz_ae2b_int
805                cg_ae(i,k,id,1)= cg_ae2b_int
806
807                ! band 2
808                tau_ae2b_int=A1_CSSSM_b2(k)+A2_CSSSM_b2(k)*H+A3_CSSSM_b2(k)/(H-1.05)
809                piz_ae2b_int=1-B1_CSSSM_b2(k)-B2_CSSSM_b2(k)*H
810                cg_ae2b_int=C1_CSSSM_b2(k)+C2_CSSSM_b2(k)*H
811
812                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
813                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
814                piz_ae(i,k,id,2) = piz_ae2b_int
815                cg_ae(i,k,id,2)= cg_ae2b_int
816
817             ENDDO
818           ENDDO
819         ENDIF
820
821         IF (spss.EQ.3) THEN !super coarse mode
822            DO k=1, KLEV
823!CDIR ON_ADB(A1_SSSSM_b1)
824!CDIR ON_ADB(A2_SSSSM_b1)
825!CDIR ON_ADB(A3_SSSSM_b1)
826!CDIR ON_ADB(B1_SSSSM_b1)
827!CDIR ON_ADB(B2_SSSSM_b1)
828!CDIR ON_ADB(C1_SSSSM_b1)
829!CDIR ON_ADB(C2_SSSSM_b2)
830!CDIR ON_ADB(A1_SSSSM_b2)
831!CDIR ON_ADB(A2_SSSSM_b2)
832!CDIR ON_ADB(A3_SSSSM_b2)
833!CDIR ON_ADB(B1_SSSSM_b2)
834!CDIR ON_ADB(B2_SSSSM_b2)
835!CDIR ON_ADB(C1_SSSSM_b2)
836!CDIR ON_ADB(C2_SSSSM_b2)
837              DO i=1, KLON
838                H=rh(i,k)/100
839                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
840                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
841
842                ! band 1
843                tau_ae2b_int=A1_SSSSM_b1(k)+A2_SSSSM_b1(k)*H+A3_SSSSM_b1(k)/(H-1.05)
844                piz_ae2b_int=1-B1_SSSSM_b1(k)-B2_SSSSM_b1(k)*H
845                cg_ae2b_int=C1_SSSSM_b1(k)+C2_SSSSM_b1(k)*H
846
847                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
848                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
849                piz_ae(i,k,id,1) = piz_ae2b_int
850                cg_ae(i,k,id,1)= cg_ae2b_int
851
852                ! band 2
853                tau_ae2b_int=A1_SSSSM_b2(k)+A2_SSSSM_b2(k)*H+A3_SSSSM_b2(k)/(H-1.05)
854                piz_ae2b_int=1-B1_SSSSM_b2(k)-B2_SSSSM_b2(k)*H
855                cg_ae2b_int=C1_SSSSM_b2(k)+C2_SSSSM_b2(k)*H
856
857                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
858                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
859                piz_ae(i,k,id,2) = piz_ae2b_int
860                cg_ae(i,k,id,2)= cg_ae2b_int
861
862              ENDDO
863            ENDDO
864          ENDIF
865
866        ELSE
867                       
868!CDIR ON_ADB(alpha_aers_2bands)
869!CDIR ON_ADB(piz_aers_2bands)
870!CDIR ON_ADB(cg_aers_2bands)
871          DO k=1, KLEV
872            DO i=1, KLON
873              tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
874              tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
875!CDIR UNROLL=nbands
876              DO inu=1,nbands
877
878                tau_ae2b_int= alpha_aers_2bands(RH_num(i,k),inu,spsol)+ &
879                              DELTA(i,k)* (alpha_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
880                              alpha_aers_2bands(RH_num(i,k),inu,spsol))
881                     
882                piz_ae2b_int = piz_aers_2bands(RH_num(i,k),inu,spsol) + &
883                               DELTA(i,k)* (piz_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
884                               piz_aers_2bands(RH_num(i,k),inu,spsol))
885                     
886                cg_ae2b_int = cg_aers_2bands(RH_num(i,k),inu,spsol) + &
887                              DELTA(i,k)* (cg_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
888                              cg_aers_2bands(RH_num(i,k),inu,spsol))
889
890                tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int
891                tau_ae_pi(i,k,id,inu) =  tmp_var_pi* tau_ae2b_int
892                piz_ae(i,k,id,inu) = piz_ae2b_int
893                cg_ae(i,k,id,inu)= cg_ae2b_int
894                         
895              ENDDO
896            ENDDO
897          ENDDO
898       
899        ENDIF                     
900
901      ELSE                                                    ! For all aerosol insoluble components
902
903!CDIR ON_ADB(alpha_aers_2bands)
904!CDIR ON_ADB(piz_aers_2bands)
905!CDIR ON_ADB(cg_aers_2bands)
906        DO k=1, KLEV
907          DO i=1, KLON
908            tmp_var=mass_temp(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)*delt*fac
909            tmp_var_pi=mass_temp_pi(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)*delt*fac
910!CDIR UNROLL=nbands
911            DO inu=1,nbands
912              tau_ae2b_int = alpha_aeri_2bands(inu,spinsol)
913              piz_ae2b_int = piz_aeri_2bands(inu,spinsol)
914              cg_ae2b_int = cg_aeri_2bands(inu,spinsol)
915
916              tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int
917              tau_ae_pi(i,k,id,inu) = tmp_var_pi*tau_ae2b_int
918              piz_ae(i,k,id,inu) = piz_ae2b_int
919              cg_ae(i,k,id,inu)= cg_ae2b_int
920            ENDDO
921          ENDDO
922        ENDDO
923
924      ENDIF ! soluble
925
926    ENDDO  ! nb_aer 
927
928  DO m=1,nb_aer   
929    IF (.NOT. used_aer(m)) THEN
930      tau_ae(:,:,:,:)=0.
931      tau_ae_pi(:,:,:,:)=0.
932      piz_ae(:,:,:,:)=0.
933      cg_ae(:,:,:,:)=0.
934    ENDIF
935  ENDDO
936
937  DO inu=1, nbands
938    DO mrfspecies=1,naero_grp
939      IF (mrfspecies .EQ. 2) THEN             ! = total aerosol AER     
940        DO k=1, KLEV
941          DO i=1, KLON
942            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ &
943                                           tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+   &                                                   
944                                           tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ &       
945                                           tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+   &
946                                           tau_ae(i,k,id_SSSSM,inu)+ tau_ae(i,k,id_CIDUSTM,inu)
947             tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
948                 
949             piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
950                                             tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
951                                             tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
952                                             tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
953                                             tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
954                                             tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &     
955                                             tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
956                                             tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
957                                             tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
958                                             tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
959                                            /tau_allaer(i,k,mrfspecies,inu)
960             piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
961
962             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)+ &
963                      tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
964                      tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
965                      tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
966                      tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
967                      tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &   
968                      tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
969                      tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
970                      tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
971                      tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
972                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
973          ENDDO   
974        ENDDO
975
976      ELSEIF (mrfspecies .EQ. 3) THEN             ! = natural aerosol NAT
977
978        DO k=1, KLEV
979          DO i=1, KLON
980!RAF
981                 tau_allaer(i,k,mrfspecies,inu)=tau_ae_pi(i,k,id_ASSO4M,inu)+ &
982                      tau_ae_pi(i,k,id_CSSO4M,inu)+ &
983                      tau_ae_pi(i,k,id_ASBCM,inu)+ &
984                      tau_ae_pi(i,k,id_AIBCM,inu)+ &
985                      tau_ae_pi(i,k,id_ASPOMM,inu)+ &
986                      tau_ae_pi(i,k,id_AIPOMM,inu)+ &   
987                      tau_ae_pi(i,k,id_ASSSM,inu)+ &
988                      tau_ae_pi(i,k,id_CSSSM,inu)+ &
989                      tau_ae_pi(i,k,id_SSSSM,inu)+ &
990                      tau_ae_pi(i,k,id_CIDUSTM,inu)
991                 tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
992
993                 piz_allaer(i,k,mrfspecies,inu)=(tau_ae_pi(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
994                      tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
995                      tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
996                      tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
997                      tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
998                      tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &
999                      tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
1000                      tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
1001                      tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
1002                      tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
1003                      /tau_allaer(i,k,mrfspecies,inu)
1004                 piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
1005
1006                 cg_allaer(i,k,mrfspecies,inu)=(&
1007                      tau_ae_pi(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ &
1008                      tau_ae_pi(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
1009                      tau_ae_pi(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
1010                      tau_ae_pi(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu)+ &
1011                      tau_ae_pi(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)*cg_ae(i,k,id_ASPOMM,inu)+ &
1012                      tau_ae_pi(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu)+ &
1013                      tau_ae_pi(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)*cg_ae(i,k,id_ASSSM,inu)+ &
1014                      tau_ae_pi(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu)+ &
1015                      tau_ae_pi(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu)+ &
1016                      tau_ae_pi(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*&
1017                      cg_ae(i,k,id_CIDUSTM,inu))/ &
1018                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
1019          ENDDO
1020        ENDDO
1021                   
1022      ELSEIF (mrfspecies .EQ. 4) THEN             ! = BC
1023        DO k=1, KLEV
1024          DO i=1, KLON
1025            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)
1026            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
1027            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) &
1028                      +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu))/ &
1029                      tau_allaer(i,k,mrfspecies,inu)
1030            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
1031            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)&
1032                      +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu))/ &
1033                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
1034          ENDDO
1035        ENDDO
1036             
1037      ELSEIF (mrfspecies .EQ. 5) THEN             ! = SO4
1038
1039        DO k=1, KLEV
1040          DO i=1, KLON
1041            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)
1042            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
1043            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) &
1044                      +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu))/ &
1045                      tau_allaer(i,k,mrfspecies,inu)
1046            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
1047            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)&
1048                      +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu))/ &
1049                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
1050          ENDDO
1051        ENDDO
1052
1053      ELSEIF (mrfspecies .EQ. 6) THEN             ! = POM
1054
1055        DO k=1, KLEV
1056          DO i=1, KLON
1057            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)
1058            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
1059            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) &
1060                      +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu))/ &
1061                      tau_allaer(i,k,mrfspecies,inu)
1062            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
1063            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)&
1064                      +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu))/ &
1065                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
1066          ENDDO
1067        ENDDO
1068             
1069      ELSEIF (mrfspecies .EQ. 7) THEN             ! = DUST
1070
1071        DO k=1, KLEV
1072          DO i=1, KLON
1073            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_CIDUSTM,inu)
1074            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
1075            piz_allaer(i,k,mrfspecies,inu)=piz_ae(i,k,id_CIDUSTM,inu)
1076            cg_allaer(i,k,mrfspecies,inu)=cg_ae(i,k,id_CIDUSTM,inu)
1077          ENDDO
1078        ENDDO
1079
1080      ELSEIF (mrfspecies .EQ. 8) THEN             ! = SS
1081
1082        DO k=1, KLEV
1083          DO i=1, KLON
1084            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)
1085            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-5)
1086            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) &
1087                    +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu) &
1088                    +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu))/ &
1089                    tau_allaer(i,k,mrfspecies,inu)
1090            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),0.1)
1091            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)&
1092                    +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu) &
1093                    +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu))/ &
1094                    (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
1095          ENDDO
1096        ENDDO
1097     
1098      ELSEIF (mrfspecies .EQ. 9) THEN             ! = NO3
1099     
1100        DO k=1, KLEV
1101          DO i=1, KLON
1102            tau_allaer(i,k,mrfspecies,inu)=0.   ! preliminary
1103            piz_allaer(i,k,mrfspecies,inu)=0.
1104            cg_allaer(i,k,mrfspecies,inu)=0.
1105          ENDDO
1106        ENDDO
1107     
1108      ELSE
1109
1110        DO k=1, KLEV
1111          DO i=1, KLON
1112            tau_allaer(i,k,mrfspecies,inu)=0. 
1113            piz_allaer(i,k,mrfspecies,inu)=0.
1114            cg_allaer(i,k,mrfspecies,inu)=0.
1115          ENDDO
1116        ENDDO
1117           
1118      ENDIF
1119
1120    ENDDO
1121  ENDDO
1122   
1123
1124  inu=1
1125  DO i=1, KLON
1126     absvisaer(i)=SUM((1-piz_allaer(i,:,:,inu))*tau_allaer(i,:,:,inu))
1127  END DO       
1128
1129  DEALLOCATE(aerosol_name)
1130
1131END SUBROUTINE AEROPT_2BANDS
Note: See TracBrowser for help on using the repository browser.