10 subroutine o3_chem(julien, gmtime, t_seri, zmasse, pdtphys, rlat, rlon, q)
25 integer,
intent(in):: julien
26 real,
intent(in):: gmtime
27 real,
intent(in):: t_seri(:, :)
29 real,
intent(in):: zmasse(:, :)
33 real,
intent(in):: pdtphys
35 REAL,
intent(in):: rlat(:), rlon(:)
38 real,
intent(inout):: q(:, :)
69 call assert(
klon == (/
size(q, 1),
size(t_seri, 1),
size(zmasse, 1), &
70 size(rlat),
size(rlon)/),
"o3_chem klon")
71 call assert(
nbp_lev == (/
size(q, 2),
size(t_seri, 2),
size(zmasse, 2)/), &
86 call orbite(
real(julien), earth_long, trash1)
87 call zenang(earth_long, gmtime, pdtphys, rlat, rlon, pmu0, trash2)
89 where (pmu0 <= cos(87. / 180. *
pi)) b(:, k) = 0.
97 dq_o3_chem =
o3_prod(q, zmasse, c, b) * pdtphys / 2
99 dq_o3_chem =
o3_prod(q + dq_o3_chem, zmasse, c, b) * pdtphys
103 q = min(max(q, 0.), .01)
109 function o3_prod(q, zmasse, c, b)
122 real,
intent(in):: q(:, :)
125 real,
intent(in):: zmasse(:, :)
129 real,
intent(in):: c(:, :)
134 real,
intent(in):: b(:, :)
154 call assert(
klon == (/
size(q, 1),
size(zmasse, 1),
size(c, 1), &
155 size(b, 1)/),
"o3_prod 1")
156 call assert(
nbp_lev == (/
size(q, 2),
size(zmasse, 2),
size(c, 2), &
157 size(b, 2)/),
"o3_prod 2")
164 sigma_mass(:, k) = sigma_mass(:, k+1) + zmasse(:, k) * q(:, k)
167 o3_prod = c + b * q +
a6_mass * sigma_mass
real function, dimension(klon, nbp_lev), private o3_prod(q, zmasse, c, b)
!$Id mode_top_bound COMMON comconstr && pi
real, dimension(:,:), allocatable, save r_het_interm
subroutine orbite(xjour, longi, dist)
real, dimension(:,:), allocatable, save a2
real, dimension(:,:), allocatable, save a4_mass
subroutine zenang(longi, gmtime, pdtrad1, pdtrad2, lat, long, pmu0, frac)
real, dimension(:,:), allocatable, save c_mob
subroutine o3_chem(julien, gmtime, t_seri, zmasse, pdtphys, rlat, rlon, q)
real, dimension(:,:), allocatable, save a6_mass