source: LMDZ6/trunk/libf/phylmd/ecrad/radiation/readaerosol_optic_ecrad.F90 @ 4773

Last change on this file since 4773 was 4773, checked in by idelkadi, 5 months ago
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


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