15 p1lay, cdragh, cdragm, precip_rain, precip_snow, &
17 acoefh, acoefq, bcoefh, bcoefq, &
18 acoefu, acoefv, bcoefu, bcoefv, &
20 radsol, snow, agesno, &
21 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
22 tsurf_new, dflux_s, dflux_l)
38 INTEGER,
INTENT(IN) ::
itime, jour, knon
39 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
40 REAL,
INTENT(IN) ::
dtime
41 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
42 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
43 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
44 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
45 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
46 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
47 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
48 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
52 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
53 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
54 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
58 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
59 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
60 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
61 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
62 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
67 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd
68 REAL,
DIMENSION(klon) :: alb_neig, tsurf_lim, zx_sl
69 REAL,
DIMENSION(klon) :: u0, v0
70 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
71 LOGICAL :: check=.
false.
76 IF (check)
WRITE(*,*)
' Entering ocean_forced_noice'
85 if (klon_glo.eq.1)
then
86 CALL read_tsurf1d(knon,knindex,tsurf_lim)
106 u1_lay(:) = u1(:) - u0(:)
107 v1_lay(:) = v1(:) - v0(:)
111 tsurf_lim, p1lay, cal,
beta, cdragh, ps, &
112 precip_rain, precip_snow, snow,
qsurf, &
113 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
114 acoefh, acoefq, bcoefh, bcoefq, &
115 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
119 u0, v0, u1, v1, cdragm, &
120 acoefu, acoefv, bcoefu, bcoefv, &
130 tsurf_in, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
131 acoefh, acoefq, bcoefh, bcoefq, &
132 acoefu, acoefv, bcoefu, bcoefv, &
134 radsol, snow,
qsol, agesno, tsoil, &
135 qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
136 tsurf_new, dflux_s, dflux_l)
148 include
"indicesol.h"
155 INTEGER,
INTENT(IN) ::
itime, jour, knon
156 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
157 REAL,
INTENT(IN) ::
dtime
158 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf_in
159 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
160 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
161 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
162 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
163 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
164 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
165 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
166 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
170 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
171 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow,
qsol
172 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
173 REAL,
DIMENSION(klon, nsoilmx),
INTENT(INOUT) :: tsoil
177 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
178 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb1_new
179 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb2_new
180 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
181 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
182 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
183 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
187 LOGICAL :: check=.
false.
190 REAL,
PARAMETER :: t_grnd=271.35
191 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd, capsol
192 REAL,
DIMENSION(klon) :: alb_neig, tsurf_tmp
193 REAL,
DIMENSION(klon) :: soilcap, soilflux
194 REAL,
DIMENSION(klon) :: u0, v0
195 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
200 IF (check)
WRITE(*,*)
'Entering surface_seaice, knon=',knon
207 tsurf_tmp(:) = tsurf_in(:)
215 CALL
soil(
dtime, is_sic, knon, snow, tsurf_tmp, tsoil,soilcap, soilflux)
216 cal(1:knon) = rcpd / soilcap(1:knon)
217 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon)
218 dif_grnd = 1.0 / tau_gl
220 dif_grnd = 1.0 / tau_gl
222 WHERE (snow > 0.0) cal = rcpd * calsno
229 u1_lay(:) = u1(:) - u0(:)
230 v1_lay(:) = v1(:) - v0(:)
232 tsurf_tmp, p1lay, cal,
beta, cdragh, ps, &
233 precip_rain, precip_snow, snow,
qsurf, &
234 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
235 acoefh, acoefq, bcoefh, bcoefq, &
236 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
240 u0, v0, u1, v1, cdragm, &
241 acoefu, acoefv, bcoefu, bcoefv, &
251 tsurf_tmp, precip_rain, precip_snow, &
252 snow,
qsol, tsurf_new, evap)
256 CALL
albsno(klon, knon,
dtime, agesno(:), alb_neig(:), precip_snow(:))
258 WHERE (snow(1:knon) .LT. 0.0001) agesno(1:knon) = 0.
262 zfra = max(0.0,min(1.0,snow(
i)/(snow(
i)+10.0)))
263 alb1_new(
i) = alb_neig(
i) * zfra + 0.6 * (1.0-zfra)
266 alb2_new(:) = alb1_new(:)