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