5 mass_solu_aero, mass_solu_aero_pi, &
6 tau_aero, piz_aero, cg_aero, &
7 tausum_aero, tau3d_aero )
17 concso4,
concno3,
concoa,
concbc,
concss,
concdust,
loadso4,
loadoa,
loadbc,
loadss,
loaddust, &
23 LOGICAL,
INTENT(IN) :: debut
24 LOGICAL,
INTENT(IN) :: new_aod
25 INTEGER,
INTENT(IN) :: flag_aerosol
26 INTEGER,
INTENT(IN) :: itap
27 REAL,
INTENT(IN) :: rjourvrai
28 REAL,
INTENT(IN) :: pdtphys
29 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pplay
30 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: paprs
31 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: t_seri
32 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: rhcl
33 REAL,
DIMENSION(klev),
INTENT(IN) :: presnivs
37 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: mass_solu_aero
38 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: mass_solu_aero_pi
39 REAL,
DIMENSION(klon,klev,naero_grp,nbands),
INTENT(OUT) :: tau_aero
40 REAL,
DIMENSION(klon,klev,naero_grp,nbands),
INTENT(OUT) :: piz_aero
41 REAL,
DIMENSION(klon,klev,naero_grp,nbands),
INTENT(OUT) :: cg_aero
45 REAL,
DIMENSION(klon,nwave,naero_tot),
INTENT(OUT) :: tausum_aero
46 REAL,
DIMENSION(klon,klev,nwave,naero_tot),
INTENT(OUT) :: tau3d_aero
50 REAL,
DIMENSION(klon) :: aerindex
51 REAL,
DIMENSION(klon,klev) :: sulfate
52 REAL,
DIMENSION(klon,klev) :: bcsol
53 REAL,
DIMENSION(klon,klev) :: bcins
54 REAL,
DIMENSION(klon,klev) :: pomsol
55 REAL,
DIMENSION(klon,klev) :: pomins
56 REAL,
DIMENSION(klon,klev) :: cidust
57 REAL,
DIMENSION(klon,klev) :: sscoarse
58 REAL,
DIMENSION(klon,klev) :: sssupco
59 REAL,
DIMENSION(klon,klev) :: ssacu
60 REAL,
DIMENSION(klon,klev) :: sulfate_pi
61 REAL,
DIMENSION(klon,klev) :: bcsol_pi
62 REAL,
DIMENSION(klon,klev) :: bcins_pi
63 REAL,
DIMENSION(klon,klev) :: pomsol_pi
64 REAL,
DIMENSION(klon,klev) :: pomins_pi
65 REAL,
DIMENSION(klon,klev) :: cidust_pi
66 REAL,
DIMENSION(klon,klev) :: sscoarse_pi
67 REAL,
DIMENSION(klon,klev) :: sssupco_pi
68 REAL,
DIMENSION(klon,klev) :: ssacu_pi
69 REAL,
DIMENSION(klon,klev) :: pdel
70 REAL,
DIMENSION(klon,klev,naero_tot) :: m_allaer
71 REAL,
DIMENSION(klon,klev,naero_tot) :: m_allaer_pi
81 IF ( flag_aerosol .EQ. 1 .OR. &
82 flag_aerosol .EQ. 6 )
THEN
84 CALL readaerosol_interp(
id_asso4m_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi,
loadso4)
86 sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0.
91 IF ( flag_aerosol .EQ. 2 .OR. &
92 flag_aerosol .EQ. 6 )
THEN
95 CALL readaerosol_interp(
id_asbcm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi,
load_tmp1 )
96 CALL readaerosol_interp(
id_aibcm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi,
load_tmp2 )
99 bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0.
100 bcins(:,:) = 0. ; bcins_pi(:,:) = 0.
106 IF ( flag_aerosol .EQ. 3 .OR. &
107 flag_aerosol .EQ. 6 )
THEN
109 CALL readaerosol_interp(
id_aspomm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi,
load_tmp3)
110 CALL readaerosol_interp(
id_aipomm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi,
load_tmp4)
113 pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0.
114 pomins(:,:) = 0. ; pomins_pi(:,:) = 0.
120 IF (flag_aerosol .EQ. 4 .OR. &
121 flag_aerosol .EQ. 6 )
THEN
123 CALL readaerosol_interp(
id_ssssm_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi,
load_tmp5)
124 CALL readaerosol_interp(
id_csssm_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi,
load_tmp6)
125 CALL readaerosol_interp(
id_asssm_phy ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi,
load_tmp7)
128 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
129 ssacu(:,:) = 0. ; ssacu_pi(:,:) = 0.
130 sssupco(:,:) = 0. ; sssupco_pi = 0.
135 IF (flag_aerosol .EQ. 5 .OR. &
136 flag_aerosol .EQ. 6 )
THEN
138 CALL readaerosol_interp(
id_cidustm_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi,
loaddust)
141 cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
180 mass_solu_aero(:,:) = sulfate(:,:) + bcsol(:,:) + pomsol(:,:) + ssacu(:,:)
181 mass_solu_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + ssacu_pi(:,:)
189 pdel(i,k) = paprs(i,k) - paprs(i,k+1)
199 pdel, m_allaer, pdtphys, rhcl, &
200 tau_aero, piz_aero, cg_aero, &
201 m_allaer_pi, flag_aerosol, &
202 pplay, t_seri, presnivs)
207 pdtphys, rhcl, aerindex, &
208 flag_aerosol, pplay, t_seri, &
209 tausum_aero, tau3d_aero, presnivs)
212 CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl, &
213 tau_aero(:,:,
id_asso4m_phy,:), piz_aero(:,:,
id_asso4m_phy,:), cg_aero(:,:,
id_asso4m_phy,:), aerindex)
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
real, dimension(:), allocatable, save load_tmp2
real, dimension(:), allocatable, save sconcso4
integer, parameter id_csssm_phy
real, dimension(:), allocatable, save loaddust
subroutine aeropt_2bands(pdel, m_allaer, delt, RHcl, tau_allaer, piz_allaer, cg_allaer, m_allaer_pi, flag_aerosol, pplay, t_seri, presnivs)
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
subroutine aeropt_5wv(pdel, m_allaer, delt, RHcl, ai, flag_aerosol, pplay, t_seri, tausum, tau, presnivs)
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(pplay, paprs, t_seri, msulfate, rhcl, tau_ae, piz_ae, cg_ae, ai)
real, dimension(:,:), allocatable, save concbc
integer, parameter id_ssssm_phy
real, dimension(:), allocatable, save loadss
real, dimension(:,:), allocatable, save concso4
subroutine readaerosol_optic(debut, new_aod, flag_aerosol, itap, rjourvrai, pdtphys, pplay, paprs, t_seri, rhcl, presnivs, mass_solu_aero, mass_solu_aero_pi, tau_aero, piz_aero, cg_aero, tausum_aero, tau3d_aero)
real, dimension(:,:), allocatable, save concdust
integer, parameter id_csso4m_phy
real, dimension(:), allocatable, save sconcoa
real, dimension(:), allocatable, save loadoa
integer, parameter id_cidustm_phy