source: LMDZ5/trunk/libf/phylmd/aeropt_2bands.F90 @ 2518

Last change on this file since 2518 was 2324, checked in by oboucher, 9 years ago

Tidying up the old aerosol optical properties
especially use naero_tot dimension wherever needed

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