4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE clqh(dtime, jour, debut, rlat, nisurf, knindex, tsoil, qsol, & |
SUBROUTINE clqh(dtime, julien, debut, nisurf, knindex, tsoil, qsol, rmu0, & |
8 |
rmu0, rugos, rugoro, u1lay, v1lay, coef, t, q, ts, paprs, pplay, delp, & |
rugos, rugoro, u1lay, v1lay, coef, t, q, ts, paprs, pplay, delp, & |
9 |
radsol, albedo, snow, qsurf, precip_rain, precip_snow, fder, fluxlat, & |
radsol, albedo, snow, qsurf, precip_rain, precip_snow, fder, fluxlat, & |
10 |
pctsrf_new_sic, agesno, d_t, d_q, d_ts, z0_new, flux_t, flux_q, & |
pctsrf_new_sic, agesno, d_t, d_q, d_ts, z0_new, flux_t, flux_q, & |
11 |
dflux_s, dflux_l, fqcalving, ffonte, run_off_lic_0) |
dflux_s, dflux_l, fqcalving, ffonte, run_off_lic_0) |
20 |
USE suphec_m, ONLY: rcpd, rd, rg, rkappa |
USE suphec_m, ONLY: rcpd, rd, rg, rkappa |
21 |
|
|
22 |
REAL, intent(in):: dtime ! intervalle du temps (s) |
REAL, intent(in):: dtime ! intervalle du temps (s) |
23 |
integer, intent(in):: jour ! jour de l'annee en cours |
integer, intent(in):: julien ! jour de l'annee en cours |
24 |
logical, intent(in):: debut |
logical, intent(in):: debut |
|
real, intent(in):: rlat(klon) |
|
25 |
integer, intent(in):: nisurf |
integer, intent(in):: nisurf |
26 |
integer, intent(in):: knindex(:) ! (knon) |
integer, intent(in):: knindex(:) ! (knon) |
27 |
REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx) |
REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx) |
48 |
REAL delp(klon, klev) ! epaisseur de couche en pression (Pa) |
REAL delp(klon, klev) ! epaisseur de couche en pression (Pa) |
49 |
REAL radsol(klon) ! ray. net au sol (Solaire + IR) W / m2 |
REAL radsol(klon) ! ray. net au sol (Solaire + IR) W / m2 |
50 |
REAL, intent(inout):: albedo(:) ! (knon) albedo de la surface |
REAL, intent(inout):: albedo(:) ! (knon) albedo de la surface |
51 |
REAL, intent(inout):: snow(klon) ! hauteur de neige |
REAL, intent(inout):: snow(:) ! (knon) ! hauteur de neige |
52 |
REAL qsurf(klon) ! humidite de l'air au dessus de la surface |
REAL qsurf(klon) ! humidite de l'air au dessus de la surface |
53 |
|
|
54 |
real, intent(in):: precip_rain(klon) |
real, intent(in):: precip_rain(klon) |
58 |
! solid water mass flux (kg / m2 / s), positive down |
! solid water mass flux (kg / m2 / s), positive down |
59 |
|
|
60 |
real, intent(inout):: fder(klon) |
real, intent(inout):: fder(klon) |
61 |
real fluxlat(klon) |
real, intent(out):: fluxlat(:) ! (knon) |
62 |
real, intent(in):: pctsrf_new_sic(:) ! (klon) |
real, intent(in):: pctsrf_new_sic(:) ! (klon) |
63 |
REAL, intent(inout):: agesno(:) ! (knon) |
REAL, intent(inout):: agesno(:) ! (knon) |
64 |
REAL d_t(klon, klev) ! incrementation de "t" |
REAL d_t(klon, klev) ! incrementation de "t" |
65 |
REAL d_q(klon, klev) ! incrementation de "q" |
REAL d_q(klon, klev) ! incrementation de "q" |
66 |
REAL, intent(out):: d_ts(:) ! (knon) incr\'ementation de "ts" |
REAL, intent(out):: d_ts(:) ! (knon) variation of surface temperature |
67 |
real z0_new(klon) |
real z0_new(klon) |
68 |
|
|
69 |
REAL, intent(out):: flux_t(:) ! (knon) |
REAL, intent(out):: flux_t(:) ! (knon) |
239 |
spechum(1:knon)=q(1:knon, 1) |
spechum(1:knon)=q(1:knon, 1) |
240 |
p1lay(1:knon) = pplay(1:knon, 1) |
p1lay(1:knon) = pplay(1:knon, 1) |
241 |
|
|
242 |
CALL interfsurf_hq(dtime, jour, rmu0, nisurf, knon, knindex, rlat, debut, & |
CALL interfsurf_hq(dtime, julien, rmu0, nisurf, knon, knindex, debut, & |
243 |
tsoil, qsol, u1lay, v1lay, temp_air, spechum, tq_cdrag, petAcoef, & |
tsoil, qsol, u1lay, v1lay, temp_air, spechum, tq_cdrag, petAcoef, & |
244 |
peqAcoef, petBcoef, peqBcoef, precip_rain, precip_snow, fder, rugos, & |
peqAcoef, petBcoef, peqBcoef, precip_rain, precip_snow, fder, rugos, & |
245 |
rugoro, snow, qsurf, ts, p1lay, psref, radsol, evap, flux_t, & |
rugoro, snow, qsurf, ts, p1lay, psref, radsol, evap, flux_t, & |
249 |
flux_q = - evap |
flux_q = - evap |
250 |
d_ts = tsurf_new - ts |
d_ts = tsurf_new - ts |
251 |
|
|
|
! Une fois qu'on a zx_h_ts, on peut faire l'it\'eration |
|
252 |
DO i = 1, knon |
DO i = 1, knon |
253 |
local_h(i, 1) = zx_ch(i, 1) + zx_dh(i, 1) * flux_t(i) * dtime |
local_h(i, 1) = zx_ch(i, 1) + zx_dh(i, 1) * flux_t(i) * dtime |
254 |
local_q(i, 1) = zx_cq(i, 1) + zx_dq(i, 1) * flux_q(i) * dtime |
local_q(i, 1) = zx_cq(i, 1) + zx_dq(i, 1) * flux_q(i) * dtime |