9 |
spechum, tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef, & |
spechum, tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef, & |
10 |
precip_rain, precip_snow, fder, rugos, rugoro, snow, qsurf, tsurf, & |
precip_rain, precip_snow, fder, rugos, rugoro, snow, qsurf, tsurf, & |
11 |
p1lay, ps, radsol, evap, fluxsens, fluxlat, dflux_l, dflux_s, & |
p1lay, ps, radsol, evap, fluxsens, fluxlat, dflux_l, dflux_s, & |
12 |
tsurf_new, alblw, z0_new, pctsrf_new, agesno, fqcalving, ffonte, & |
tsurf_new, albedo, z0_new, pctsrf_new, agesno, fqcalving, ffonte, & |
13 |
run_off_lic_0, flux_o, flux_g) |
run_off_lic_0, flux_o, flux_g) |
14 |
|
|
15 |
! Cette routine sert d'aiguillage entre l'atmosph\`ere et la surface |
! Cette routine sert d'aiguillage entre l'atmosph\`ere et la surface |
96 |
! fluxlat flux de chaleur latente |
! fluxlat flux de chaleur latente |
97 |
real, dimension(klon), intent(OUT):: dflux_l, dflux_s |
real, dimension(klon), intent(OUT):: dflux_l, dflux_s |
98 |
real, intent(OUT):: tsurf_new(knon) ! temp\'erature au sol |
real, intent(OUT):: tsurf_new(knon) ! temp\'erature au sol |
99 |
real, intent(OUT):: alblw(:) ! (knon) albedo |
real, intent(OUT):: albedo(:) ! (knon) albedo |
100 |
real, intent(OUT):: z0_new(klon) ! surface roughness |
real, intent(OUT):: z0_new(klon) ! surface roughness |
101 |
real, dimension(klon, nbsrf), intent(OUT):: pctsrf_new |
real, dimension(klon, nbsrf), intent(OUT):: pctsrf_new |
102 |
! pctsrf_new nouvelle repartition des surfaces |
! pctsrf_new nouvelle repartition des surfaces |
199 |
|
|
200 |
! calcul albedo: lecture albedo fichier boundary conditions |
! calcul albedo: lecture albedo fichier boundary conditions |
201 |
! puis ajout albedo neige |
! puis ajout albedo neige |
202 |
call interfsur_lim(itime, dtime, jour, knindex, debut, alblw, z0_new) |
call interfsur_lim(itime, dtime, jour, knindex, debut, albedo, z0_new) |
203 |
|
|
204 |
! calcul snow et qsurf, hydrol adapt\'e |
! calcul snow et qsurf, hydrol adapt\'e |
205 |
CALL calbeta(nisurf, snow(:knon), qsol(:knon), beta(:knon), & |
CALL calbeta(nisurf, snow(:knon), qsol(:knon), beta(:knon), & |
229 |
call albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
call albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
230 |
where (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
where (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
231 |
zfra(:knon) = max(0.0, min(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
zfra(:knon) = max(0.0, min(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
232 |
alblw = alb_neig(:knon) * zfra(:knon) & |
albedo = alb_neig(:knon) * zfra(:knon) & |
233 |
+ alblw * (1. - zfra(:knon)) |
+ albedo * (1. - zfra(:knon)) |
234 |
z0_new = sqrt(z0_new**2 + rugoro**2) |
z0_new = sqrt(z0_new**2 + rugoro**2) |
235 |
|
|
236 |
! Remplissage des pourcentages de surface |
! Remplissage des pourcentages de surface |
261 |
|
|
262 |
! calcul albedo |
! calcul albedo |
263 |
if (cycle_diurne) then |
if (cycle_diurne) then |
264 |
CALL alboc_cd(rmu0(knindex), alblw) |
CALL alboc_cd(rmu0(knindex), albedo) |
265 |
else |
else |
266 |
CALL alboc(jour, rlat(knindex), alblw) |
CALL alboc(jour, rlat(knindex), albedo) |
267 |
endif |
endif |
268 |
|
|
269 |
z0_new = sqrt(rugos**2 + rugoro**2) |
z0_new = sqrt(rugos**2 + rugoro**2) |
326 |
CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
327 |
WHERE (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
WHERE (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
328 |
zfra(:knon) = MAX(0.0, MIN(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
zfra(:knon) = MAX(0.0, MIN(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
329 |
alblw = alb_neig(:knon) * zfra(:knon) + 0.6 * (1.0 - zfra(:knon)) |
albedo = alb_neig(:knon) * zfra(:knon) + 0.6 * (1.0 - zfra(:knon)) |
330 |
|
|
331 |
fder = fder + dflux_s + dflux_l |
fder = fder + dflux_s + dflux_l |
332 |
|
|
371 |
CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow) |
372 |
WHERE (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
WHERE (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0. |
373 |
zfra(:knon) = MAX(0.0, MIN(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
zfra(:knon) = MAX(0.0, MIN(1.0, snow(1:knon)/(snow(1:knon) + 10.0))) |
374 |
alblw = 0.77 |
albedo = 0.77 |
375 |
|
|
376 |
! Rugosite |
! Rugosite |
377 |
z0_new = rugoro |
z0_new = rugoro |