141 |
REAL, save:: radsol(klon) |
REAL, save:: radsol(klon) |
142 |
! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be |
! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be |
143 |
! saved because radlwsw is not called at every time step. |
! saved because radlwsw is not called at every time step. |
144 |
|
|
145 |
REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K |
REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K |
146 |
|
|
147 |
REAL, save:: ftsoil(klon, nsoilmx, nbsrf) |
REAL, save:: ftsoil(klon, nsoilmx, nbsrf) |
148 |
! soil temperature of surface fraction |
! temperature of surface fraction inside the ground, in K, layer 1 |
149 |
|
! nearest to the surface |
150 |
|
|
151 |
REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2 |
REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2 |
152 |
|
|
264 |
REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2 |
REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2 |
265 |
real, save:: sollwdown(klon) ! downwelling longwave flux at surface |
real, save:: sollwdown(klon) ! downwelling longwave flux at surface |
266 |
REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) |
REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) |
|
REAL, save:: albpla(klon) |
|
267 |
|
|
268 |
REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s) |
REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s) |
269 |
REAL conv_t(klon, llm) ! convergence of temperature (K / s) |
REAL conv_t(klon, llm) ! convergence of temperature (K / s) |
272 |
REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree |
REAL cldt(klon), cldq(klon) ! nuage total, eau liquide integree |
273 |
|
|
274 |
REAL zxfluxlat(klon) |
REAL zxfluxlat(klon) |
275 |
REAL dist, mu0(klon), fract(klon) |
REAL dist ! distance Terre-Soleil, en ua |
276 |
|
real mu0(klon), fract(klon) |
277 |
real longi |
real longi |
278 |
REAL z_avant(klon), z_apres(klon), z_factor(klon) |
REAL z_avant(klon), z_apres(klon), z_factor(klon) |
279 |
REAL zb |
REAL zb |
312 |
! eva: \'evaporation de l'eau liquide nuageuse |
! eva: \'evaporation de l'eau liquide nuageuse |
313 |
! vdf: vertical diffusion in boundary layer |
! vdf: vertical diffusion in boundary layer |
314 |
REAL d_t_con(klon, llm), d_q_con(klon, llm) |
REAL d_t_con(klon, llm), d_q_con(klon, llm) |
315 |
REAL, save:: d_u_con(klon, llm), d_v_con(klon, llm) |
REAL d_u_con(klon, llm), d_v_con(klon, llm) |
316 |
REAL d_t_lsc(klon, llm), d_q_lsc(klon, llm), d_ql_lsc(klon, llm) |
REAL d_t_lsc(klon, llm), d_q_lsc(klon, llm), d_ql_lsc(klon, llm) |
317 |
REAL d_t_ajs(klon, llm), d_q_ajs(klon, llm) |
REAL d_t_ajs(klon, llm), d_q_ajs(klon, llm) |
318 |
REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm) |
REAL d_u_ajs(klon, llm), d_v_ajs(klon, llm) |
347 |
|
|
348 |
! Param\`etres li\'es au nouveau sch\'ema de nuages : |
! Param\`etres li\'es au nouveau sch\'ema de nuages : |
349 |
real:: fact_cldcon = 0.375 |
real:: fact_cldcon = 0.375 |
350 |
real:: facttemps = 1.e-4 |
|
351 |
|
real:: facttemps = 1.e-4 ! in s-1 |
352 |
|
! 1 / facttemps est le temps de relaxation des ratqs. |
353 |
|
|
354 |
real facteur |
real facteur |
355 |
|
|
356 |
integer:: iflag_cldcon = 1 |
integer:: iflag_cldcon = 1 ! allowed values: - 2, ..., 3 |
357 |
logical ptconv(klon, llm) |
logical ptconv(klon, llm) |
358 |
|
|
359 |
! Variables pour effectuer les appels en s\'erie : |
! Variables pour effectuer les appels en s\'erie : |
386 |
|
|
387 |
REAL, save:: u10m_srf(klon, nbsrf), v10m_srf(klon, nbsrf) |
REAL, save:: u10m_srf(klon, nbsrf), v10m_srf(klon, nbsrf) |
388 |
! composantes du vent \`a 10 m |
! composantes du vent \`a 10 m |
389 |
|
|
390 |
REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille |
REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille |
391 |
REAL u10m(klon), v10m(klon) ! vent \`a 10 m moyenn\' sur les sous-surfaces |
REAL u10m(klon), v10m(klon) ! vent \`a 10 m moyenn\' sur les sous-surfaces |
392 |
|
|
420 |
t2m = 0. |
t2m = 0. |
421 |
q2m = 0. |
q2m = 0. |
422 |
ffonte = 0. |
ffonte = 0. |
|
d_u_con = 0. |
|
|
d_v_con = 0. |
|
423 |
rnebcon0 = 0. |
rnebcon0 = 0. |
424 |
clwcon0 = 0. |
clwcon0 = 0. |
|
rnebcon = 0. |
|
425 |
clwcon = 0. |
clwcon = 0. |
426 |
pblh =0. ! Hauteur de couche limite |
pblh =0. ! Hauteur de couche limite |
427 |
plcl =0. ! Niveau de condensation de la CLA |
plcl =0. ! Niveau de condensation de la CLA |
434 |
print *, "Enter namelist 'physiq_nml'." |
print *, "Enter namelist 'physiq_nml'." |
435 |
read(unit=*, nml=physiq_nml) |
read(unit=*, nml=physiq_nml) |
436 |
write(unit_nml, nml=physiq_nml) |
write(unit_nml, nml=physiq_nml) |
437 |
|
call assert(iflag_cldcon >= - 2 .and. iflag_cldcon <= 3, & |
438 |
|
"physiq iflag_cldcon") |
439 |
|
|
440 |
call ctherm |
call ctherm |
441 |
call conf_phys |
call conf_phys |
624 |
pen_d = 0. |
pen_d = 0. |
625 |
pde_d = 0. |
pde_d = 0. |
626 |
pde_u = 0. |
pde_u = 0. |
627 |
|
u_seri = u_seri + d_u_con |
628 |
|
v_seri = v_seri + d_v_con |
629 |
else |
else |
630 |
conv_q = d_q_dyn + d_q_vdf / dtphys |
conv_q = d_q_dyn + d_q_vdf / dtphys |
631 |
conv_t = d_t_dyn + d_t_vdf / dtphys |
conv_t = d_t_dyn + d_t_vdf / dtphys |
640 |
itop_con = llm + 1 - kctop |
itop_con = llm + 1 - kctop |
641 |
END if |
END if |
642 |
|
|
643 |
DO k = 1, llm |
t_seri = t_seri + d_t_con |
644 |
DO i = 1, klon |
q_seri = q_seri + d_q_con |
|
t_seri(i, k) = t_seri(i, k) + d_t_con(i, k) |
|
|
q_seri(i, k) = q_seri(i, k) + d_q_con(i, k) |
|
|
u_seri(i, k) = u_seri(i, k) + d_u_con(i, k) |
|
|
v_seri(i, k) = v_seri(i, k) + d_v_con(i, k) |
|
|
ENDDO |
|
|
ENDDO |
|
645 |
|
|
646 |
IF (.not. conv_emanuel) THEN |
IF (.not. conv_emanuel) THEN |
647 |
z_apres = sum((q_seri + ql_seri) * zmasse, dim=2) |
z_apres = sum((q_seri + ql_seri) * zmasse, dim=2) |
702 |
if (iflag_cldcon == 1 .or. iflag_cldcon == 2) then |
if (iflag_cldcon == 1 .or. iflag_cldcon == 2) then |
703 |
! les ratqs sont une conbinaison de ratqss et ratqsc |
! les ratqs sont une conbinaison de ratqss et ratqsc |
704 |
! ratqs final |
! ratqs final |
|
! 1e4 (en gros 3 heures), en dur pour le moment, est le temps de |
|
|
! relaxation des ratqs |
|
705 |
ratqs = max(ratqs * exp(- dtphys * facttemps), ratqss) |
ratqs = max(ratqs * exp(- dtphys * facttemps), ratqss) |
706 |
ratqs = max(ratqs, ratqsc) |
ratqs = max(ratqs, ratqsc) |
707 |
else |
else |
805 |
albsol = sum(falbe * pctsrf, dim = 2) |
albsol = sum(falbe * pctsrf, dim = 2) |
806 |
CALL radlwsw(dist, mu0, fract, paprs, play, tsol, albsol, t_seri, & |
CALL radlwsw(dist, mu0, fract, paprs, play, tsol, albsol, t_seri, & |
807 |
q_seri, wo, cldfra, cldemi, cldtau, heat, heat0, cool, cool0, & |
q_seri, wo, cldfra, cldemi, cldtau, heat, heat0, cool, cool0, & |
808 |
radsol, albpla, topsw, toplw, solsw, sollw, sollwdown, topsw0, & |
radsol, topsw, toplw, solsw, sollw, sollwdown, topsw0, toplw0, & |
809 |
toplw0, solsw0, sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, & |
solsw0, sollw0, lwdn0, lwdn, lwup0, lwup, swdn0, swdn, swup0, & |
810 |
swup0, swup, ok_ade, topswad, solswad) |
swup, ok_ade, topswad, solswad) |
811 |
ENDIF |
ENDIF |
812 |
|
|
813 |
! Ajouter la tendance des rayonnements (tous les pas) |
! Ajouter la tendance des rayonnements (tous les pas) |