44 |
USE indicesol, ONLY: clnsurf, epsfra, is_lic, is_oce, is_sic, is_ter, & |
USE indicesol, ONLY: clnsurf, epsfra, is_lic, is_oce, is_sic, is_ter, & |
45 |
nbsrf |
nbsrf |
46 |
USE ini_histins_m, ONLY: ini_histins, nid_ins |
USE ini_histins_m, ONLY: ini_histins, nid_ins |
47 |
|
use lift_noro_m, only: lift_noro |
48 |
use netcdf95, only: NF95_CLOSE |
use netcdf95, only: NF95_CLOSE |
49 |
use newmicro_m, only: newmicro |
use newmicro_m, only: newmicro |
50 |
use nr_util, only: assert |
use nr_util, only: assert |
51 |
use nuage_m, only: nuage |
use nuage_m, only: nuage |
52 |
USE orbite_m, ONLY: orbite |
USE orbite_m, ONLY: orbite |
53 |
USE ozonecm_m, ONLY: ozonecm |
USE ozonecm_m, ONLY: ozonecm |
54 |
USE phyetat0_m, ONLY: phyetat0, rlat, rlon |
USE phyetat0_m, ONLY: phyetat0 |
55 |
USE phyredem_m, ONLY: phyredem |
USE phyredem_m, ONLY: phyredem |
56 |
USE phyredem0_m, ONLY: phyredem0 |
USE phyredem0_m, ONLY: phyredem0 |
57 |
USE phytrac_m, ONLY: phytrac |
USE phytrac_m, ONLY: phytrac |
184 |
REAL cdragh(klon) ! drag coefficient pour T and Q |
REAL cdragh(klon) ! drag coefficient pour T and Q |
185 |
REAL cdragm(klon) ! drag coefficient pour vent |
REAL cdragm(klon) ! drag coefficient pour vent |
186 |
|
|
|
! Pour phytrac : |
|
187 |
REAL ycoefh(klon, llm) ! coef d'echange pour phytrac |
REAL ycoefh(klon, llm) ! coef d'echange pour phytrac |
|
REAL yu1(klon), yv1(klon) ! vent dans la premi\`ere couche |
|
188 |
|
|
189 |
REAL, save:: ffonte(klon, nbsrf) |
REAL, save:: ffonte(klon, nbsrf) |
190 |
! flux thermique utilise pour fondre la neige |
! flux thermique utilise pour fondre la neige |
248 |
|
|
249 |
REAL flux_q(klon, nbsrf) ! flux turbulent d'humidite à la surface |
REAL flux_q(klon, nbsrf) ! flux turbulent d'humidite à la surface |
250 |
REAL flux_t(klon, nbsrf) ! flux turbulent de chaleur à la surface |
REAL flux_t(klon, nbsrf) ! flux turbulent de chaleur à la surface |
251 |
REAL flux_u(klon, nbsrf) ! flux turbulent de vitesse u à la surface |
|
252 |
REAL flux_v(klon, nbsrf) ! flux turbulent de vitesse v à la surface |
REAL flux_u(klon, nbsrf), flux_v(klon, nbsrf) |
253 |
|
! tension du vent (flux turbulent de vent) à la surface, en Pa |
254 |
|
|
255 |
! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que |
! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que |
256 |
! les variables soient r\'emanentes. |
! les variables soient r\'emanentes. |
370 |
|
|
371 |
REAL zustrdr(klon), zvstrdr(klon) |
REAL zustrdr(klon), zvstrdr(klon) |
372 |
REAL zustrli(klon), zvstrli(klon) |
REAL zustrli(klon), zvstrli(klon) |
|
REAL zustrph(klon), zvstrph(klon) |
|
373 |
REAL aam, torsfc |
REAL aam, torsfc |
374 |
|
|
375 |
REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert. |
REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert. |
581 |
evap = - sum(flux_q * pctsrf, dim = 2) |
evap = - sum(flux_q * pctsrf, dim = 2) |
582 |
fder = dlw + dsens + devap |
fder = dlw + dsens + devap |
583 |
|
|
|
yu1 = u_seri(:, 1) |
|
|
yv1 = v_seri(:, 1) |
|
|
|
|
584 |
DO k = 1, llm |
DO k = 1, llm |
585 |
DO i = 1, klon |
DO i = 1, klon |
586 |
t_seri(i, k) = t_seri(i, k) + d_t_vdf(i, k) |
t_seri(i, k) = t_seri(i, k) + d_t_vdf(i, k) |
931 |
ENDIF |
ENDIF |
932 |
ENDDO |
ENDDO |
933 |
|
|
934 |
CALL lift_noro(klon, llm, dtphys, paprs, play, rlat, zmea, zstd, zpic, & |
CALL lift_noro(dtphys, paprs, play, zmea, zstd, zpic, itest, t_seri, & |
935 |
itest, t_seri, u_seri, v_seri, zulow, zvlow, zustrli, zvstrli, & |
u_seri, v_seri, zulow, zvlow, zustrli, zvstrli, d_t_lif, & |
936 |
d_t_lif, d_u_lif, d_v_lif) |
d_u_lif, d_v_lif) |
937 |
|
|
938 |
! Ajout des tendances : |
! Ajout des tendances : |
939 |
DO k = 1, llm |
DO k = 1, llm |
945 |
ENDDO |
ENDDO |
946 |
ENDIF |
ENDIF |
947 |
|
|
948 |
! Stress n\'ecessaires : toute la physique |
CALL aaam_bud(rg, romega, pphis, zustrdr, zustrli, & |
949 |
|
sum((u_seri - u) / dtphys * zmasse, dim = 2), zvstrdr, & |
950 |
DO i = 1, klon |
zvstrli, sum((v_seri - v) / dtphys * zmasse, dim = 2), paprs, u, v, & |
951 |
zustrph(i) = 0. |
aam, torsfc) |
|
zvstrph(i) = 0. |
|
|
ENDDO |
|
|
DO k = 1, llm |
|
|
DO i = 1, klon |
|
|
zustrph(i) = zustrph(i) + (u_seri(i, k) - u(i, k)) / dtphys & |
|
|
* zmasse(i, k) |
|
|
zvstrph(i) = zvstrph(i) + (v_seri(i, k) - v(i, k)) / dtphys & |
|
|
* zmasse(i, k) |
|
|
ENDDO |
|
|
ENDDO |
|
|
|
|
|
CALL aaam_bud(rg, romega, rlat, rlon, pphis, zustrdr, zustrli, zustrph, & |
|
|
zvstrdr, zvstrli, zvstrph, paprs, u, v, aam, torsfc) |
|
952 |
|
|
953 |
! Calcul des tendances traceurs |
! Calcul des tendances traceurs |
954 |
call phytrac(julien, time, firstcal, lafin, dtphys, t, paprs, play, mfu, & |
call phytrac(julien, time, firstcal, lafin, dtphys, t, paprs, play, mfu, & |
955 |
mfd, pde_u, pen_d, ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, & |
mfd, pde_u, pen_d, ycoefh, fm_therm, entr_therm, u(:, 1), v(:, 1), & |
956 |
pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, tr_seri, & |
ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, & |
957 |
zmasse, ncid_startphy) |
tr_seri, zmasse, ncid_startphy) |
958 |
|
|
959 |
! Calculer le transport de l'eau et de l'energie (diagnostique) |
! Calculer le transport de l'eau et de l'energie (diagnostique) |
960 |
CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq) |
CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq) |