12 rmu0, lwdownm,
albedo, pphi1, &
13 swnet, lwnet, tsurf, p1lay, &
14 cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
15 acoefh, acoefq, bcoefh, bcoefq, &
16 acoefu, acoefv, bcoefu, bcoefv, &
17 ps, u1, v1, gustiness, rugoro, pctsrf, &
18 snow, qsurf, qsol, agesno, &
19 tsoil, z0m, z0h, sfrwl, alb_dir, alb_dif, evap, fluxsens, fluxlat, &
20 tsurf_new, dflux_s, dflux_l, &
22 snowhgt, qsnow, to_ice, sissnow, &
44 INTEGER,
INTENT(IN) :: itime, knon
45 INTEGER,
DIMENSION(klon),
INTENT(in) :: knindex
46 REAL,
INTENT(in) :: dtime
47 REAL,
DIMENSION(klon),
INTENT(IN) :: swnet
48 REAL,
DIMENSION(klon),
INTENT(IN) :: lwnet
49 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf
50 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
51 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
52 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
53 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
54 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefH, AcoefQ
55 REAL,
DIMENSION(klon),
INTENT(IN) :: BcoefH, BcoefQ
56 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV
57 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
58 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1, gustiness
59 REAL,
DIMENSION(klon),
INTENT(IN) :: rugoro
60 REAL,
DIMENSION(klon,nbsrf),
INTENT(IN) :: pctsrf
62 LOGICAL,
INTENT(IN) :: debut
63 LOGICAL,
INTENT(IN) :: lafin
64 REAL,
DIMENSION(klon),
INTENT(IN) :: rlon, rlat
65 REAL,
DIMENSION(klon),
INTENT(IN) :: rmu0
66 REAL,
DIMENSION(klon),
INTENT(IN) :: lwdownm
67 REAL,
DIMENSION(klon),
INTENT(IN) :: albedo
68 REAL,
DIMENSION(klon),
INTENT(IN) :: pphi1
69 REAL,
DIMENSION(klon),
INTENT(IN) :: slope
70 REAL,
DIMENSION(klon),
INTENT(IN) :: cloudf
74 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow, qsol
75 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
76 REAL,
DIMENSION(klon, nsoilmx),
INTENT(INOUT) :: tsoil
80 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsurf
81 REAL,
DIMENSION(klon),
INTENT(OUT) :: z0m, z0h
85 REAL,
DIMENSION(6),
INTENT(IN) ::SFRWL
86 REAL,
DIMENSION(klon,nsw),
INTENT(OUT) ::alb_dir,alb_dif
88 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
89 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
90 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
91 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
93 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb3
94 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsnow
95 REAL,
DIMENSION(klon),
INTENT(OUT) :: snowhgt
96 REAL,
DIMENSION(klon),
INTENT(OUT) :: to_ice
97 REAL,
DIMENSION(klon),
INTENT(OUT) :: sissnow
98 REAL,
DIMENSION(klon),
INTENT(OUT) :: runoff
103 REAL,
DIMENSION(klon) :: soilcap, soilflux
104 REAL,
DIMENSION(klon) :: cal, beta, dif_grnd
105 REAL,
DIMENSION(klon) :: zfra, alb_neig
106 REAL,
DIMENSION(klon) :: radsol
107 REAL,
DIMENSION(klon) :: u0, v0, u1_lay, v1_lay
110 REAL,
DIMENSION(klon) :: emis_new
111 REAL,
DIMENSION(klon) :: swdown,lwdown
112 REAL,
DIMENSION(klon) :: precip_snow_adv, snow_adv
113 REAL,
DIMENSION(klon) :: bl_height, wind_velo
114 REAL,
DIMENSION(klon) :: dens_air, snow_cont_air
115 REAL,
DIMENSION(klon) :: alb_soil
116 REAL,
DIMENSION(klon) :: pexner
118 REAL,
DIMENSION(klon,nsoilmx) :: tsoil0
120 CHARACTER (len = 20) :: modname =
'surf_landice'
121 CHARACTER (len = 80) :: abort_message
124 real,
dimension(klon) :: alb1,alb2
141 radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
156 swdown(i) = swnet(i)/(1-
albedo(i))
157 lwdown(i) = lwdownm(i)
162 snow_cont_air(:) = 0.
166 wind_velo(i) = u1(i)**2 + v1(i)**2
167 wind_velo(i) = wind_velo(i)**0.5
168 pexner(i) = (p1lay(i)/pref)**(rd/rcpd)
169 dens_air(i) = p1lay(i)/rd/temp_air(i)
170 bl_height(i) = pphi1(i)/
rg
179 tsoil0(i,:)=tsoil(i,:)
182 print*,
'on appelle surf_sisvat'
184 CALL surf_sisvat(knon, rlon, rlat, knindex, itime, dtime, debut, lafin, &
185 rmu0, swdown, lwdown, pexner, ps, p1lay, &
186 precip_rain, precip_snow, precip_snow_adv, snow_adv, &
187 bl_height, wind_velo, temp_air, dens_air, spechum, tsurf, &
188 rugoro, snow_cont_air, alb_soil, slope, cloudf, &
189 radsol, qsol, tsoil0, snow, snowhgt, qsnow, to_ice,sissnow, agesno, &
190 acoefh, acoefq, bcoefh, bcoefq, cdragh, &
191 run_off_lic, evap, fluxsens, fluxlat, dflux_s, dflux_l, &
192 tsurf_new, alb1, alb2, alb3, &
193 emis_new, z0m, qsurf)
194 z0h(1:knon)=z0m(1:knon)
205 u0, v0, u1, v1, gustiness, cdragm, &
206 acoefu, acoefv, bcoefu, bcoefv, &
210 abort_message=
'Pb de coherence: ok_snow = .true. mais CPP_SISVAT = .false.'
220 CALL soil(dtime,
is_lic, knon, snow, tsurf, tsoil, soilcap, soilflux)
221 cal(1:knon) = rcpd / soilcap(1:knon)
222 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon)
225 WHERE (snow > 0.0) cal = rcpd *
calsno
239 u1_lay(:) = u1(:) - u0(:)
240 v1_lay(:) = v1(:) - v0(:)
243 tsurf, p1lay, cal, beta, cdragh, cdragh, ps, &
244 precip_rain, precip_snow, snow, qsurf, &
245 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
246 1.,acoefh, acoefq, bcoefh, bcoefq, &
247 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
250 u0, v0, u1, v1, gustiness, cdragm, &
251 acoefu, acoefv, bcoefu, bcoefv, &
260 tsurf, precip_rain, precip_snow, &
261 snow, qsol, tsurf_new, evap)
268 CALL albsno(
klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:))
269 WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.
270 zfra(1:knon) = max(0.0,min(1.0,snow(1:knon)/(snow(1:knon)+10.0)))
271 alb1(1:knon) = alb_neig(1:knon)*zfra(1:knon) + &
272 0.6 * (1.0-zfra(1:knon))
283 alb2(1:knon) = alb1(1:knon)
292 z0m = sqrt(z0m**2+rugoro**2)
332 alb_dir(1:knon,1)=alb1(1:knon)
333 alb_dir(1:knon,2)=alb2(1:knon)
335 alb_dir(1:knon,1)=alb1(1:knon)
336 alb_dir(1:knon,2)=alb2(1:knon)
337 alb_dir(1:knon,3)=alb2(1:knon)
338 alb_dir(1:knon,4)=alb2(1:knon)
340 alb_dir(1:knon,1)=alb1(1:knon)
341 alb_dir(1:knon,2)=alb1(1:knon)
342 alb_dir(1:knon,3)=alb1(1:knon)
343 alb_dir(1:knon,4)=alb2(1:knon)
344 alb_dir(1:knon,5)=alb2(1:knon)
345 alb_dir(1:knon,6)=alb2(1:knon)
subroutine albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow)
!$Header!c include clesph0 h c COMMON clesph0 soil_model
subroutine fonte_neige(knon, nisurf, knindex, dtime, tsurf, precip_rain, precip_snow, snow, qsol, tsurf_new, evap)
subroutine calcul_flux_wind(knon, dtime, u0, v0, u1, v1, gustiness, cdrag_m, AcoefU, AcoefV, BcoefU, BcoefV, p1lay, t1lay, flux_u1, flux_v1)
real, dimension(:), allocatable run_off_lic
real, dimension(:), allocatable, save zfra_o
integer, parameter is_lic
subroutine, public cpl_send_landice_fields(itime, knon, knindex, rlic_in)
subroutine surf_landice(itime, dtime, knon, knindex, rlon, rlat, debut, lafin, rmu0, lwdownm, albedo, pphi1, swnet, lwnet, tsurf, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, rugoro, pctsrf, snow, qsurf, qsol, agesno, tsoil, z0m, z0h, SFRWL, alb_dir, alb_dif, evap, fluxsens, fluxlat, tsurf_new, dflux_s, dflux_l, slope, cloudf, snowhgt, qsnow, to_ice, sissnow, alb3, runoff, flux_u1, flux_v1)
c c $Id c nbregdyn DO klon c rlat(i) c ENDIF!lon c ENDIF!lat ENDIF!pctsrf ENDDO!klon ENDDO!nbregdyn cIM 190504 ENDIF!ok_regdyn cIM somme de toutes les nhistoW BEG IF(debut) THEN DO nreg
character(len=6), save type_ocean
subroutine abort_physic(modname, message, ierr)
subroutine calcul_fluxs(knon, nisurf, dtime, tsurf, p1lay, cal, beta, cdragh, cdragq, ps, precip_rain, precip_snow, snow, qsurf, radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
subroutine surf_sisvat(knon, rlon, rlat, ikl2i, itime, dtime, debut, lafin, rmu0, swdown, lwdown, pexner, ps, p1lay, precip_rain, precip_snow, precip_snow_adv, snow_adv, bl_height, wind_velo, temp_air, dens_air, spechum, tsurf, rugos, snow_cont_air, alb_soil, slope, cloudf, radsol, qsol, tsoil, snow, snowhgt, qsnow, to_ice, sissnow, agesno, AcoefH, AcoefQ, BcoefH, BcoefQ, cdragh, runoff_lic, evap, fluxsens, fluxlat, dflux_s, dflux_l, tsurf_new, alb1, alb2, alb3, emis_new, z0_new, qsurf)
c c $Id c nbregdyn DO klon c rlon(i)
real, dimension(:), allocatable, save snow_o
subroutine soil(ptimestep, indice, knon, snow, ptsrf, ptsoil, pcapcal, pfluxgrd)