4 new_aod, flag_aerosol,
itap, rjourvrai, &
6 tr_seri, mass_solu_aero, mass_solu_aero_pi, &
7 tau_aero, piz_aero, cg_aero, &
8 tausum_aero, tau3d_aero )
18 concso4,
concno3,
concoa,
concbc,
concss,
concdust,
loadso4,
loadoa,
loadbc,
loadss,
loaddust, &
30 LOGICAL,
INTENT(IN) :: debut
31 LOGICAL,
INTENT(IN) :: aerosol_couple
32 LOGICAL,
INTENT(IN) :: new_aod
33 INTEGER,
INTENT(IN) :: flag_aerosol
34 INTEGER,
INTENT(IN) :: itap
35 REAL,
INTENT(IN) :: rjourvrai
36 REAL,
INTENT(IN) :: pdtphys
37 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pplay
38 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: paprs
39 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: t_seri
40 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: rhcl
41 REAL,
DIMENSION(klev),
INTENT(IN) :: presnivs
42 REAL,
DIMENSION(klon,klev,nbtr),
INTENT(IN) :: tr_seri
46 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: mass_solu_aero
47 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: mass_solu_aero_pi
48 REAL,
DIMENSION(klon,klev,2,NSW),
INTENT(OUT) :: tau_aero
49 REAL,
DIMENSION(klon,klev,2,NSW),
INTENT(OUT) :: piz_aero
50 REAL,
DIMENSION(klon,klev,2,NSW),
INTENT(OUT) :: cg_aero
51 REAL,
DIMENSION(klon,nwave,naero_tot),
INTENT(OUT) :: tausum_aero
52 REAL,
DIMENSION(klon,klev,nwave,naero_tot),
INTENT(OUT) :: tau3d_aero
56 REAL,
DIMENSION(klon) :: aerindex
57 REAL,
DIMENSION(klon,klev) :: sulfacc
58 REAL,
DIMENSION(klon,klev) :: sulfcoarse
59 REAL,
DIMENSION(klon,klev) :: bcsol
60 REAL,
DIMENSION(klon,klev) :: bcins
61 REAL,
DIMENSION(klon,klev) :: pomsol
62 REAL,
DIMENSION(klon,klev) :: pomins
63 REAL,
DIMENSION(klon,klev) :: cidust
64 REAL,
DIMENSION(klon,klev) :: sscoarse
65 REAL,
DIMENSION(klon,klev) :: sssupco
66 REAL,
DIMENSION(klon,klev) :: ssacu
67 REAL,
DIMENSION(klon,klev) :: nitracc
68 REAL,
DIMENSION(klon,klev) :: nitrcoarse
69 REAL,
DIMENSION(klon,klev) :: nitrinscoarse
70 REAL,
DIMENSION(klon,klev) :: sulfacc_pi
71 REAL,
DIMENSION(klon,klev) :: sulfcoarse_pi
72 REAL,
DIMENSION(klon,klev) :: bcsol_pi
73 REAL,
DIMENSION(klon,klev) :: bcins_pi
74 REAL,
DIMENSION(klon,klev) :: pomsol_pi
75 REAL,
DIMENSION(klon,klev) :: pomins_pi
76 REAL,
DIMENSION(klon,klev) :: cidust_pi
77 REAL,
DIMENSION(klon,klev) :: sscoarse_pi
78 REAL,
DIMENSION(klon,klev) :: sssupco_pi
79 REAL,
DIMENSION(klon,klev) :: ssacu_pi
80 REAL,
DIMENSION(klon,klev) :: nitracc_pi
81 REAL,
DIMENSION(klon,klev) :: nitrcoarse_pi
82 REAL,
DIMENSION(klon,klev) :: nitrinscoarse_pi
83 REAL,
DIMENSION(klon,klev) :: pdel, zrho
84 REAL,
DIMENSION(klon,klev,naero_tot) :: m_allaer
85 REAL,
DIMENSION(klon,klev,naero_tot) :: m_allaer_pi
87 integer :: id_ASBCM, id_ASPOMM, id_ASSO4M, id_ASMSAM, id_CSSO4M, id_CSMSAM, id_SSSSM
88 integer :: id_CSSSM, id_ASSSM, id_CIDUSTM, id_AIBCM, id_AIPOMM, id_ASNO3M, id_CSNO3M, id_CINO3M
92 zrho(:,:)=pplay(:,:)/t_seri(:,:)/rd
100 IF (aerosol_couple)
THEN
106 select case(trim(
solsym(i)))
141 bcsol(:,:) = tr_seri(:,:,id_asbcm) *zrho(:,:)*1.e9
142 pomsol(:,:) = tr_seri(:,:,id_aspomm) *zrho(:,:)*1.e9
143 sulfacc(:,:) = (tr_seri(:,:,id_asso4m)+tr_seri(:,:,id_asmsam))*zrho(:,:)*1.e9
144 sulfcoarse(:,:) = (tr_seri(:,:,id_csso4m)+tr_seri(:,:,id_csmsam))*zrho(:,:)*1.e9
145 sssupco(:,:) = tr_seri(:,:,id_ssssm) *zrho(:,:)*1.e9
146 sscoarse(:,:) = tr_seri(:,:,id_csssm) *zrho(:,:)*1.e9
147 ssacu(:,:) = tr_seri(:,:,id_asssm) *zrho(:,:)*1.e9
148 cidust(:,:) = tr_seri(:,:,id_cidustm) *zrho(:,:)*1.e9
149 bcins(:,:) = tr_seri(:,:,id_aibcm) *zrho(:,:)*1.e9
150 pomins(:,:) = tr_seri(:,:,id_aipomm) *zrho(:,:)*1.e9
151 nitracc(:,:) = tr_seri(:,:,id_asno3m) *zrho(:,:)*1.e9
152 nitrcoarse(:,:) = tr_seri(:,:,id_csno3m) *zrho(:,:)*1.e9
153 nitrinscoarse(:,:)= tr_seri(:,:,id_cino3m) *zrho(:,:)*1.e9
157 sulfacc_pi(:,:) = 0.0
158 sulfcoarse_pi(:,:) = 0.0
159 sssupco_pi(:,:) = 0.0
160 sscoarse_pi(:,:) = 0.0
165 nitracc_pi(:,:) = 0.0
166 nitrcoarse_pi(:,:) = 0.0
167 nitrinscoarse_pi(:,:)= 0.0
172 IF ( flag_aerosol .EQ. 1 .OR. &
173 flag_aerosol .EQ. 6 )
THEN
175 CALL readaerosol_interp(
id_asso4m_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfacc, sulfacc_pi,
loadso4)
177 sulfacc(:,:) = 0. ; sulfacc_pi(:,:) = 0.
182 IF ( flag_aerosol .EQ. 2 .OR. &
183 flag_aerosol .EQ. 6 )
THEN
186 CALL readaerosol_interp(
id_asbcm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi,
load_tmp1 )
187 CALL readaerosol_interp(
id_aibcm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi,
load_tmp2 )
190 bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
191 bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
197 IF ( flag_aerosol .EQ. 3 .OR. &
198 flag_aerosol .EQ. 6 )
THEN
200 CALL readaerosol_interp(
id_aspomm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi,
load_tmp3)
201 CALL readaerosol_interp(
id_aipomm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi,
load_tmp4)
204 pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
205 pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
211 IF (flag_aerosol .EQ. 4 .OR. &
212 flag_aerosol .EQ. 6 )
THEN
215 debut, pplay, paprs, t_seri, sssupco, sssupco_pi,
load_tmp5)
217 debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi,
load_tmp6)
219 debut, pplay, paprs, t_seri, ssacu, ssacu_pi,
load_tmp7)
222 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
223 ssacu(:,:) = 0. ; ssacu_pi(:,:) = 0.
224 sssupco(:,:) = 0. ; sssupco_pi = 0.
229 IF (flag_aerosol .EQ. 5 .OR. &
230 flag_aerosol .EQ. 6 )
THEN
232 CALL readaerosol_interp(
id_cidustm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi,
loaddust)
235 cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
239 sulfcoarse(:,:) = 0.0
240 sulfcoarse_pi(:,:) = 0.0
245 nitracc_pi(:,:) = 0.0
246 nitrcoarse(:,:) = 0.0
247 nitrcoarse_pi(:,:) = 0.0
248 nitrinscoarse(:,:) = 0.0
249 nitrinscoarse_pi(:,:)= 0.0
290 mass_solu_aero(:,:) = sulfacc(:,:) + bcsol(:,:) + pomsol(:,:) + nitracc(:,:) + ssacu(:,:)
291 mass_solu_aero_pi(:,:) = sulfacc_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + nitracc_pi(:,:) + ssacu_pi(:,:)
299 pdel(i,k) = paprs(i,k) - paprs(i,k+1)
306 pdel, m_allaer, pdtphys, rhcl, &
307 tau_aero, piz_aero, cg_aero, &
308 m_allaer_pi, flag_aerosol, &
314 pdtphys, rhcl, aerindex, &
315 flag_aerosol, pplay, t_seri, &
316 tausum_aero, tau3d_aero )
character(len=8), dimension(:), allocatable, save solsym
integer, parameter id_asssm_phy
integer, parameter id_aipomm_phy
real, dimension(:), allocatable, save load_tmp3
integer, parameter id_aspomm_phy
real, dimension(:), allocatable, save sconcdust
real, dimension(:,:), allocatable, save concno3
subroutine aeropt_6bands_rrtm(pdel, m_allaer, delt, RHcl, tau_allaer, piz_allaer, cg_allaer, m_allaer_pi, flag_aerosol, zrho)
!$Id klon initialisation mois suivants day_rain itap
real, dimension(:), allocatable, save load_tmp2
real, dimension(:), allocatable, save sconcso4
integer, parameter id_csssm_phy
real, dimension(:), allocatable, save loaddust
integer, parameter id_cino3m_phy
real, dimension(:), allocatable, save sconcbc
real, dimension(:,:), allocatable, save concoa
real, dimension(:), allocatable, save load_tmp4
real, dimension(:), allocatable, save load_tmp5
integer, parameter id_asbcm_phy
real, dimension(:), allocatable, save load_tmp7
real, dimension(:), allocatable, save loadbc
real, dimension(:), allocatable, save sconcss
integer, parameter id_aibcm_phy
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
subroutine readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out, load_src)
integer, parameter id_asno3m_phy
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
real, dimension(:,:), allocatable, save concss
integer, parameter id_csno3m_phy
integer, parameter id_asso4m_phy
real, dimension(:), allocatable, save load_tmp6
real, dimension(:), allocatable, save sconcno3
real, dimension(:), allocatable, save loadso4
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL pdtphys
real, dimension(:), allocatable, save load_tmp1
subroutine aeropt_5wv_rrtm(pdel, m_allaer, delt, RHcl, ai, flag_aerosol, pplay, t_seri, tausum, tau)
real, dimension(:,:), allocatable, save concbc
integer, parameter id_ssssm_phy
real, dimension(:), allocatable, save loadss
real, dimension(:,:), allocatable, save concso4
real, dimension(:,:), allocatable, save concdust
integer, parameter id_csso4m_phy
real, dimension(:), allocatable, save sconcoa
integer, parameter id_strat_phy
real, dimension(:), allocatable, save loadoa
subroutine readaerosol_optic_rrtm(debut, aerosol_couple, new_aod, flag_aerosol, itap, rjourvrai, pdtphys, pplay, paprs, t_seri, rhcl, presnivs, tr_seri, mass_solu_aero, mass_solu_aero_pi, tau_aero, piz_aero, cg_aero, tausum_aero, tau3d_aero)
integer, parameter id_cidustm_phy