source: LMDZ6/branches/Amaury_dev/libf/phylmd/ecrad/lmdz/readaerosol_optic_ecrad.F90

Last change on this file was 5159, checked in by abarral, 7 weeks ago

Put dimensions.h and paramet.h into modules

File size: 16.1 KB
Line 
1! $Id: readaerosol_optic_ecrad.F90
2
3SUBROUTINE readaerosol_optic_ecrad(debut, aerosol_couple, ok_alw, ok_volcan, &
4     flag_aerosol, flag_bc_internal_mixture, itap, rjourvrai, &
5     pdtphys, pplay, paprs, t_seri, rhcl, presnivs, &
6     tr_seri, mass_solu_aero, mass_solu_aero_pi, m_allaer)
7!     tau_aero, piz_aero, cg_aero, &
8!     tausum_aero, drytausum_aero, tau3d_aero )
9
10  ! This routine will :
11  ! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
12  ! 2) calculate the optical properties for the aerosols
13  !
14
15  USE dimphy
16  USE aero_mod
17  USE phys_local_var_mod, only: sconcso4,sconcno3,sconcoa,sconcbc,sconcss,sconcdust, &
18       concso4,concno3,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, &
19       loadno3,load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7, &
20       load_tmp8,load_tmp9,load_tmp10
21
22  USE infotrac_phy, ONLY: tracers, nqtot, nbtr
23  USE YOMCST
24  USE lmdz_clesphys
25
26  IMPLICIT NONE
27
28  ! Input arguments
29  !****************************************************************************************
30  LOGICAL, INTENT(IN)                      :: debut
31  LOGICAL, INTENT(IN)                      :: aerosol_couple
32  LOGICAL, INTENT(IN)                      :: ok_alw
33  LOGICAL, INTENT(IN)                      :: ok_volcan
34  INTEGER, INTENT(IN)                      :: flag_aerosol
35  LOGICAL, INTENT(IN)                      :: flag_bc_internal_mixture
36  INTEGER, INTENT(IN)                      :: itap
37  REAL, INTENT(IN)                         :: rjourvrai
38  REAL, INTENT(IN)                         :: pdtphys
39  REAL, DIMENSION(klon,klev), INTENT(IN)   :: pplay
40  REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs
41  REAL, DIMENSION(klon,klev), INTENT(IN)   :: t_seri
42  REAL, DIMENSION(klon,klev), INTENT(IN)   :: rhcl   ! humidite relative ciel clair
43  REAL, DIMENSION(klev), INTENT(IN)        :: presnivs
44  REAL, DIMENSION(klon,klev,nbtr), INTENT(IN) :: tr_seri ! concentration tracer
45
46  ! Output arguments
47  !****************************************************************************************
48  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero    ! Total mass for all soluble aerosols
49  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_solu_aero_pi !     -"-     preindustrial values
50  REAL, DIMENSION(klon,klev,naero_tot), INTENT(OUT) :: m_allaer
51  ! AI a passer par la suite en argument si besoin pour ecrad
52  !REAL, DIMENSION(klon,klev,naero_tot), INTENT(OUT) :: m_allaer_pi !RAF
53
54!  REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: tau_aero    ! Aerosol optical thickness
55!  REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
56!  REAL, DIMENSION(klon,klev,2,NSW), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
57!  REAL, DIMENSION(klon,nwave,naero_tot), INTENT(OUT)       :: tausum_aero
58!  REAL, DIMENSION(klon,naero_tot), INTENT(OUT)             :: drytausum_aero
59!  REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(OUT)  :: tau3d_aero
60
61  ! Local variables
62  !****************************************************************************************
63  REAL, DIMENSION(klon)        :: aerindex      ! POLDER aerosol index
64  REAL, DIMENSION(klon,klev)   :: sulfacc       ! SO4 accumulation concentration [ug/m3]
65  REAL, DIMENSION(klon,klev)   :: sulfcoarse    ! SO4 coarse concentration [ug/m3]
66  REAL, DIMENSION(klon,klev)   :: bcsol         ! BC soluble concentration [ug/m3]
67  REAL, DIMENSION(klon,klev)   :: bcins         ! BC insoluble concentration [ug/m3]
68  REAL, DIMENSION(klon,klev)   :: pomsol        ! POM soluble concentration [ug/m3]
69  REAL, DIMENSION(klon,klev)   :: pomins        ! POM insoluble concentration [ug/m3]
70  REAL, DIMENSION(klon,klev)   :: cidust        ! DUST aerosol concentration  [ug/m3]
71  REAL, DIMENSION(klon,klev)   :: sscoarse      ! SS Coarse concentration [ug/m3]
72  REAL, DIMENSION(klon,klev)   :: sssupco       ! SS Super Coarse concentration [ug/m3]
73  REAL, DIMENSION(klon,klev)   :: ssacu         ! SS Acumulation concentration [ug/m3]
74  REAL, DIMENSION(klon,klev)   :: nitracc       ! nitrate accumulation concentration [ug/m3]
75  REAL, DIMENSION(klon,klev)   :: nitrcoarse    ! nitrate coarse concentration [ug/m3]
76  REAL, DIMENSION(klon,klev)   :: nitrinscoarse ! nitrate insoluble coarse concentration [ug/m3]
77  REAL, DIMENSION(klon,klev)   :: sulfacc_pi
78  REAL, DIMENSION(klon,klev)   :: sulfcoarse_pi
79  REAL, DIMENSION(klon,klev)   :: bcsol_pi
80  REAL, DIMENSION(klon,klev)   :: bcins_pi
81  REAL, DIMENSION(klon,klev)   :: pomsol_pi
82  REAL, DIMENSION(klon,klev)   :: pomins_pi
83  REAL, DIMENSION(klon,klev)   :: cidust_pi
84  REAL, DIMENSION(klon,klev)   :: sscoarse_pi
85  REAL, DIMENSION(klon,klev)   :: sssupco_pi
86  REAL, DIMENSION(klon,klev)   :: ssacu_pi
87  REAL, DIMENSION(klon,klev)   :: nitracc_pi
88  REAL, DIMENSION(klon,klev)   :: nitrcoarse_pi
89  REAL, DIMENSION(klon,klev)   :: nitrinscoarse_pi
90  REAL, DIMENSION(klon,klev)   :: pdel, zrho
91  REAL, DIMENSION(klon,klev,naero_tot) :: m_allaer_pi
92
93  integer :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM
94  integer :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M
95  INTEGER :: k, i, iq, itr
96
97  !--air density
98  zrho(:,:)=pplay(:,:)/t_seri(:,:)/RD                     !--kg/m3
99
100  !****************************************************************************************
101  ! 1) Get aerosol mass
102  !   
103  !****************************************************************************************
104
105
106  IF (aerosol_couple) THEN   !--we get aerosols from tr_seri array from INCA
107
108     !--copy fields from INCA tr_seri
109     !--convert to ug m-3 unit for consistency with offline fields
110
111     itr = 0
112     DO iq = 1,nqtot
113        IF(.NOT. tracers(iq)%isInPhysics) CYCLE
114        itr = itr+1
115        SELECT CASE(trim(tracers(iq)%name))
116           CASE ("ASBCM");  id_ASBCM  = itr
117           CASE ("ASPOMM"); id_ASPOMM = itr
118           CASE ("ASSO4M"); id_ASSO4M = itr
119           CASE ("ASMSAM"); id_ASMSAM = itr
120           CASE ("CSSO4M"); id_CSSO4M = itr
121           CASE ("CSMSAM"); id_CSMSAM = itr
122           CASE ("SSSSM");  id_SSSSM  = itr
123           CASE ("CSSSM");  id_CSSSM  = itr
124           CASE ("ASSSM");  id_ASSSM  = itr
125           CASE ("CIDUSTM");id_CIDUSTM= itr
126           CASE ("AIBCM");  id_AIBCM  = itr
127           CASE ("AIPOMM"); id_AIPOMM = itr
128           CASE ("ASNO3M"); id_ASNO3M = itr
129           CASE ("CSNO3M"); id_CSNO3M = itr
130           CASE ("CINO3M"); id_CINO3M = itr
131        END SELECT
132     END DO
133
134     bcsol(:,:)        =   tr_seri(:,:,id_ASBCM)                         *zrho(:,:)*1.e9  ! ASBCM
135     pomsol(:,:)       =   tr_seri(:,:,id_ASPOMM)                        *zrho(:,:)*1.e9  ! ASPOMM
136     sulfacc(:,:)      =  (tr_seri(:,:,id_ASSO4M)+tr_seri(:,:,id_ASMSAM))*zrho(:,:)*1.e9  ! ASSO4M (=SO4) + ASMSAM (=MSA)
137     sulfcoarse(:,:)   =  (tr_seri(:,:,id_CSSO4M)+tr_seri(:,:,id_CSMSAM))*zrho(:,:)*1.e9  ! CSSO4M (=SO4) + CSMSAM (=MSA)
138     sssupco(:,:)      =   tr_seri(:,:,id_SSSSM)                         *zrho(:,:)*1.e9  ! SSSSM
139     sscoarse(:,:)     =   tr_seri(:,:,id_CSSSM)                         *zrho(:,:)*1.e9  ! CSSSM
140     ssacu(:,:)        =   tr_seri(:,:,id_ASSSM)                         *zrho(:,:)*1.e9  ! ASSSM
141     cidust(:,:)       =   tr_seri(:,:,id_CIDUSTM)                       *zrho(:,:)*1.e9  ! CIDUSTM
142     bcins(:,:)        =   tr_seri(:,:,id_AIBCM)                         *zrho(:,:)*1.e9  ! AIBCM
143     pomins(:,:)       =   tr_seri(:,:,id_AIPOMM)                        *zrho(:,:)*1.e9  ! AIPOMM
144     nitracc(:,:)      =   tr_seri(:,:,id_ASNO3M)                        *zrho(:,:)*1.e9  ! ASNO3M
145     nitrcoarse(:,:)   =   tr_seri(:,:,id_CSNO3M)                        *zrho(:,:)*1.e9  ! CSNO3M
146     nitrinscoarse(:,:)=   tr_seri(:,:,id_CINO3M)                        *zrho(:,:)*1.e9  ! CINO3M
147
148     bcsol_pi(:,:)        =   0.0 ! ASBCM pre-ind
149     pomsol_pi(:,:)       =   0.0 ! ASPOMM pre-ind
150     sulfacc_pi(:,:)      =   0.0 ! ASSO4M (=SO4) + ASMSAM (=MSA) pre-ind
151     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
152     sssupco_pi(:,:)      =   0.0 ! SSSSM pre-ind
153     sscoarse_pi(:,:)     =   0.0 ! CSSSM pre-ind
154     ssacu_pi(:,:)        =   0.0 ! ASSSM pre-ind
155     cidust_pi(:,:)       =   0.0 ! CIDUSTM pre-ind
156     bcins_pi(:,:)        =   0.0 ! AIBCM pre-ind
157     pomins_pi(:,:)       =   0.0 ! AIPOMM pre-ind
158     nitracc_pi(:,:)      =   0.0 ! ASNO3M pre-ind
159     nitrcoarse_pi(:,:)   =   0.0 ! CSNO3M pre-ind
160     nitrinscoarse_pi(:,:)=   0.0 ! CINO3M
161
162  ELSE !--not aerosol_couple
163
164     ! Read and interpolate sulfate
165     IF ( flag_aerosol .EQ. 1 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
166
167        CALL readaerosol_interp(id_ASSO4M_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfacc, sulfacc_pi,loadso4)
168     ELSE
169        sulfacc(:,:) = 0. ; sulfacc_pi(:,:) = 0.
170        loadso4=0.
171     ENDIF
172
173     ! Read and interpolate bcsol and bcins
174     IF ( flag_aerosol .EQ. 2 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
175
176        ! Get bc aerosol distribution
177        CALL readaerosol_interp(id_ASBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 )
178        CALL readaerosol_interp(id_AIBCM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 )
179        loadbc(:)=load_tmp1(:)+load_tmp2(:)
180     ELSE
181        bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
182        bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
183        loadbc=0.
184     ENDIF
185
186     ! Read and interpolate pomsol and pomins
187     IF ( flag_aerosol .EQ. 3 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
188
189        CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3)
190        CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4)
191        loadoa(:)=load_tmp3(:)+load_tmp4(:)
192     ELSE
193        pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
194        pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
195        loadoa=0.
196     ENDIF
197
198     ! Read and interpolate csssm, ssssm, assssm
199     IF (flag_aerosol .EQ. 4 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
200
201        CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys,rjourvrai, &
202        debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5)
203        CALL readaerosol_interp(id_CSSSM_phy ,itap, pdtphys,rjourvrai, &
204        debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6)
205        CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys,rjourvrai, &
206        debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7)
207        loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:)
208     ELSE
209        sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
210        ssacu(:,:)    = 0. ; ssacu_pi(:,:) = 0.
211        sssupco(:,:)  = 0. ; sssupco_pi = 0.
212        loadss=0.
213     ENDIF
214
215     ! Read and interpolate cidustm
216     IF (flag_aerosol .EQ. 5 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
217
218        CALL readaerosol_interp(id_CIDUSTM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust)
219
220     ELSE
221        cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
222        loaddust=0.
223     ENDIF
224
225     ! Read and interpolate asno3m, csno3m, cino3m
226     IF (flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN
227
228        CALL readaerosol_interp(id_ASNO3M_phy, itap, pdtphys, rjourvrai, &
229        debut, pplay, paprs, t_seri, nitracc, nitracc_pi, load_tmp8)
230        CALL readaerosol_interp(id_CSNO3M_phy, itap, pdtphys, rjourvrai, &
231        debut, pplay, paprs, t_seri, nitrcoarse, nitrcoarse_pi, load_tmp9)
232        CALL readaerosol_interp(id_CINO3M_phy, itap, pdtphys, rjourvrai, &
233        debut, pplay, paprs, t_seri, nitrinscoarse, nitrinscoarse_pi, load_tmp10)
234        loadno3(:)=load_tmp8(:)+load_tmp9(:)+load_tmp10(:)
235
236     ELSE
237        nitracc(:,:)         =   0.0 ; nitracc_pi(:,:)      =   0.0
238        nitrcoarse(:,:)      =   0.0 ; nitrcoarse_pi(:,:)   =   0.0
239        nitrinscoarse(:,:)   =   0.0 ; nitrinscoarse_pi(:,:)=   0.0
240        loadno3(:)=0.0
241     ENDIF
242
243     ! CSSO4M is set to 0 as not reliable
244     sulfcoarse(:,:)      =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA)
245     sulfcoarse_pi(:,:)   =   0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind
246
247  ENDIF !--not aerosol_couple
248
249
250  ! Store all aerosols mixing ratios in one variable for radiation scheme (unit kg/kg for ECRAD)
251  ! present-day values
252  m_allaer(:,:,id_ASBCM_phy)  = bcsol(:,:)        /1.e9/zrho(:,:) ! ASBCM
253  m_allaer(:,:,id_ASPOMM_phy) = pomsol(:,:)       /1.e9/zrho(:,:) ! ASPOMM
254  m_allaer(:,:,id_ASSO4M_phy) = sulfacc(:,:)      /1.e9/zrho(:,:) ! ASSO4M (= SO4)
255  m_allaer(:,:,id_CSSO4M_phy) = sulfcoarse(:,:)   /1.e9/zrho(:,:) ! CSSO4M
256  m_allaer(:,:,id_SSSSM_phy)  = sssupco(:,:)      /1.e9/zrho(:,:) ! SSSSM
257  m_allaer(:,:,id_CSSSM_phy)  = sscoarse(:,:)     /1.e9/zrho(:,:) ! CSSSM
258  m_allaer(:,:,id_ASSSM_phy)  = ssacu(:,:)        /1.e9/zrho(:,:) ! ASSSM
259  m_allaer(:,:,id_CIDUSTM_phy)= cidust(:,:)       /1.e9/zrho(:,:) ! CIDUSTM
260  m_allaer(:,:,id_AIBCM_phy)  = bcins(:,:)        /1.e9/zrho(:,:) ! AIBCM
261  m_allaer(:,:,id_ASNO3M_phy) = nitracc(:,:)      /1.e9/zrho(:,:) ! ASNO3M
262  m_allaer(:,:,id_CSNO3M_phy) = nitrcoarse(:,:)   /1.e9/zrho(:,:) ! CSNO3M
263  m_allaer(:,:,id_CINO3M_phy) = nitrinscoarse(:,:)/1.e9/zrho(:,:) ! CINO3M
264  m_allaer(:,:,id_AIPOMM_phy) = pomins(:,:)       /1.e9/zrho(:,:) ! AIPOMM
265  m_allaer(:,:,id_STRAT_phy)  = 0.0
266
267  !  pre-industrial (pi) values
268  m_allaer_pi(:,:,id_ASBCM_phy)  = bcsol_pi(:,:)        /1.e9/zrho(:,:) ! ASBCM pre-ind
269  m_allaer_pi(:,:,id_ASPOMM_phy) = pomsol_pi(:,:)       /1.e9/zrho(:,:) ! ASPOMM pre-ind
270  m_allaer_pi(:,:,id_ASSO4M_phy) = sulfacc_pi(:,:)      /1.e9/zrho(:,:) ! ASSO4M (= SO4) pre-ind
271  m_allaer_pi(:,:,id_CSSO4M_phy) = sulfcoarse_pi(:,:)   /1.e9/zrho(:,:) ! CSSO4M pre-ind
272  m_allaer_pi(:,:,id_SSSSM_phy)  = sssupco_pi(:,:)      /1.e9/zrho(:,:) ! SSSSM pre-ind
273  m_allaer_pi(:,:,id_CSSSM_phy)  = sscoarse_pi(:,:)     /1.e9/zrho(:,:) ! CSSSM pre-ind
274  m_allaer_pi(:,:,id_ASSSM_phy)  = ssacu_pi(:,:)        /1.e9/zrho(:,:) ! ASSSM pre-ind
275  m_allaer_pi(:,:,id_CIDUSTM_phy)= cidust_pi(:,:)       /1.e9/zrho(:,:) ! CIDUSTM pre-ind
276  m_allaer_pi(:,:,id_AIBCM_phy)  = bcins_pi(:,:)        /1.e9/zrho(:,:) ! AIBCM pre-ind
277  m_allaer_pi(:,:,id_ASNO3M_phy) = nitracc_pi(:,:)      /1.e9/zrho(:,:) ! ASNO3M pre-ind
278  m_allaer_pi(:,:,id_CSNO3M_phy) = nitrcoarse_pi(:,:)   /1.e9/zrho(:,:) ! CSNO3M pre-ind
279  m_allaer_pi(:,:,id_CINO3M_phy) = nitrinscoarse_pi(:,:)/1.e9/zrho(:,:) ! CINO3M pre-ind
280  m_allaer_pi(:,:,id_AIPOMM_phy) = pomins_pi(:,:)       /1.e9/zrho(:,:) ! AIPOMM pre-ind
281  m_allaer_pi(:,:,id_STRAT_phy)  = 0.0
282
283
284  ! Calculate the total mass of all soluble aersosols (in unit ug /m3)
285  ! to be revisited for AR6
286  mass_solu_aero(:,:)    = sulfacc(:,:)    + bcsol(:,:)    + pomsol(:,:)    + nitracc(:,:)    + ssacu(:,:)
287  mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) + ssacu_pi(:,:)
288
289  !****************************************************************************************
290  ! 2) Calculate optical properties for the aerosols
291
292  !****************************************************************************************
293  DO k = 1, klev
294     DO i = 1, klon
295        pdel(i,k) = paprs(i,k) - paprs (i,k+1)
296     ENDDO
297  ENDDO
298
299  ! Diagnostics calculation for CMIP5 protocol unit (in unit kg/m3)
300  sconcso4(:)  =m_allaer(:,1,id_ASSO4M_phy)*1.e-9
301  sconcno3(:)  =(m_allaer(:,1,id_ASNO3M_phy)+m_allaer(:,1,id_CSNO3M_phy)+m_allaer(:,1,id_CINO3M_phy))*1.e-9
302  sconcoa(:)   =(m_allaer(:,1,id_ASPOMM_phy)+m_allaer(:,1,id_AIPOMM_phy))*1.e-9
303  sconcbc(:)   =(m_allaer(:,1,id_ASBCM_phy)+m_allaer(:,1,id_AIBCM_phy))*1.e-9
304  sconcss(:)   =(m_allaer(:,1,id_ASSSM_phy)+m_allaer(:,1,id_CSSSM_phy)+m_allaer(:,1,id_SSSSM_phy))*1.e-9
305  sconcdust(:) =m_allaer(:,1,id_CIDUSTM_phy)*1.e-9
306  concso4(:,:) =m_allaer(:,:,id_ASSO4M_phy)*1.e-9
307  concno3(:,:) =(m_allaer(:,:,id_ASNO3M_phy)+m_allaer(:,:,id_CSNO3M_phy)+m_allaer(:,:,id_CINO3M_phy))*1.e-9
308  concoa(:,:)  =(m_allaer(:,:,id_ASPOMM_phy)+m_allaer(:,:,id_AIPOMM_phy))*1.e-9
309  concbc(:,:)  =(m_allaer(:,:,id_ASBCM_phy)+m_allaer(:,:,id_AIBCM_phy))*1.e-9
310  concss(:,:)  =(m_allaer(:,:,id_ASSSM_phy)+m_allaer(:,:,id_CSSSM_phy)+m_allaer(:,:,id_SSSSM_phy))*1.e-9
311  concdust(:,:)=m_allaer(:,:,id_CIDUSTM_phy)*1.e-9
312
313END SUBROUTINE readaerosol_optic_ecrad
Note: See TracBrowser for help on using the repository browser.