26 |
use clesphys2, only: soil_model, cycle_diurne |
use clesphys2, only: soil_model, cycle_diurne |
27 |
USE dimphy, ONLY: klon |
USE dimphy, ONLY: klon |
28 |
USE fonte_neige_m, ONLY: fonte_neige |
USE fonte_neige_m, ONLY: fonte_neige |
29 |
USE indicesol, ONLY: epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf |
USE indicesol, ONLY: epsfra, is_lic, is_oce, is_sic, is_ter |
30 |
USE interface_surf, ONLY: run_off_lic, conf_interface |
USE interface_surf, ONLY: run_off_lic, conf_interface |
31 |
USE interfsur_lim_m, ONLY: interfsur_lim |
USE interfsur_lim_m, ONLY: interfsur_lim |
32 |
use read_sst_m, only: read_sst |
use read_sst_m, only: read_sst |
91 |
real, intent(OUT):: flux_t(:) ! (knon) flux de chaleur sensible |
real, intent(OUT):: flux_t(:) ! (knon) flux de chaleur sensible |
92 |
real, dimension(klon), intent(OUT):: fluxlat ! flux de chaleur latente |
real, dimension(klon), intent(OUT):: fluxlat ! flux de chaleur latente |
93 |
real, dimension(klon), intent(OUT):: dflux_l, dflux_s |
real, dimension(klon), intent(OUT):: dflux_l, dflux_s |
94 |
real, intent(OUT):: tsurf_new(knon) ! temp\'erature au sol |
real, intent(OUT):: tsurf_new(:) ! (knon) temp\'erature au sol |
95 |
real, intent(OUT):: albedo(:) ! (knon) albedo |
real, intent(OUT):: albedo(:) ! (knon) albedo |
96 |
real, intent(OUT):: z0_new(klon) ! surface roughness |
real, intent(OUT):: z0_new(klon) ! surface roughness |
97 |
|
|
113 |
! run_off_lic_0 runoff glacier du pas de temps precedent |
! run_off_lic_0 runoff glacier du pas de temps precedent |
114 |
|
|
115 |
! Local: |
! Local: |
116 |
REAL soilcap(klon) |
REAL soilcap(knon) |
117 |
REAL soilflux(klon) |
REAL soilflux(knon) |
118 |
logical:: first_call = .true. |
logical:: first_call = .true. |
119 |
integer ii |
integer ii |
120 |
real, dimension(klon):: cal, beta, dif_grnd, capsol |
real, dimension(klon):: cal, beta, dif_grnd, capsol |
177 |
capsol(:knon), dif_grnd(:knon)) |
capsol(:knon), dif_grnd(:knon)) |
178 |
|
|
179 |
IF (soil_model) THEN |
IF (soil_model) THEN |
180 |
CALL soil(dtime, is_ter, knon, snow, tsurf, tsoil, soilcap, soilflux) |
CALL soil(dtime, is_ter, snow(:knon), tsurf, tsoil(:knon, :), & |
181 |
cal(1:knon) = RCPD / soilcap(1:knon) |
soilcap, soilflux) |
182 |
radsol(1:knon) = radsol(1:knon) + soilflux(:knon) |
cal(1:knon) = RCPD / soilcap |
183 |
|
radsol(1:knon) = radsol(1:knon) + soilflux |
184 |
ELSE |
ELSE |
185 |
cal = RCPD * capsol |
cal = RCPD * capsol |
186 |
ENDIF |
ENDIF |
245 |
capsol(:knon), dif_grnd(:knon)) |
capsol(:knon), dif_grnd(:knon)) |
246 |
|
|
247 |
IF (soil_model) THEN |
IF (soil_model) THEN |
248 |
CALL soil(dtime, is_sic, knon, snow, tsurf_new, tsoil, soilcap, & |
CALL soil(dtime, is_sic, snow(:knon), tsurf_new, tsoil(:knon, :), & |
249 |
soilflux) |
soilcap, soilflux) |
250 |
cal(1:knon) = RCPD / soilcap(1:knon) |
cal(1:knon) = RCPD / soilcap |
251 |
radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) |
radsol(1:knon) = radsol(1:knon) + soilflux |
252 |
dif_grnd = 0. |
dif_grnd = 0. |
253 |
ELSE |
ELSE |
254 |
dif_grnd = 1. / tau_gl |
dif_grnd = 1. / tau_gl |
290 |
! Surface "glacier continentaux" appel a l'interface avec le sol |
! Surface "glacier continentaux" appel a l'interface avec le sol |
291 |
|
|
292 |
IF (soil_model) THEN |
IF (soil_model) THEN |
293 |
CALL soil(dtime, is_lic, knon, snow, tsurf, tsoil, soilcap, soilflux) |
CALL soil(dtime, is_lic, snow(:knon), tsurf, tsoil(:knon, :), & |
294 |
cal(1:knon) = RCPD / soilcap(1:knon) |
soilcap, soilflux) |
295 |
radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) |
cal(1:knon) = RCPD / soilcap |
296 |
|
radsol(1:knon) = radsol(1:knon) + soilflux |
297 |
ELSE |
ELSE |
298 |
cal = RCPD * calice |
cal = RCPD * calice |
299 |
WHERE (snow > 0.) cal = RCPD * calsno |
WHERE (snow > 0.) cal = RCPD * calsno |