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)
37 INTEGER,
INTENT(IN) ::
itime, jour, knon
38 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
39 REAL,
INTENT(IN) ::
dtime
40 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
41 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
42 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
43 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
44 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
45 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
46 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
47 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
51 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
52 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
53 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
57 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
58 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
59 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
60 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
61 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
66 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd
67 REAL,
DIMENSION(klon) :: alb_neig, tsurf_lim, zx_sl
68 REAL,
DIMENSION(klon) :: u0, v0
69 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
70 LOGICAL :: check=.
false.
75 IF (check)
WRITE(*,*)
' Entering ocean_forced_noice'
98 u1_lay(:) = u1(:) - u0(:)
99 v1_lay(:) = v1(:) - v0(:)
103 tsurf_lim, p1lay, cal,
beta, cdragh, ps, &
104 precip_rain, precip_snow, snow,
qsurf, &
105 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
106 acoefh, acoefq, bcoefh, bcoefq, &
107 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
111 u0, v0, u1, v1, cdragm, &
112 acoefu, acoefv, bcoefu, bcoefv, &
122 tsurf_in, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
123 acoefh, acoefq, bcoefh, bcoefq, &
124 acoefu, acoefv, bcoefu, bcoefv, &
126 radsol, snow,
qsol, agesno, tsoil, &
127 qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
128 tsurf_new, dflux_s, dflux_l)
140 include
"indicesol.h"
147 INTEGER,
INTENT(IN) ::
itime, jour, knon
148 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
149 REAL,
INTENT(IN) ::
dtime
150 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf_in
151 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
152 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
153 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
154 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
155 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
156 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
157 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
158 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
162 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
163 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow,
qsol
164 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
165 REAL,
DIMENSION(klon, nsoilmx),
INTENT(INOUT) :: tsoil
169 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
170 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb1_new
171 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb2_new
172 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
173 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
174 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
175 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
179 LOGICAL :: check=.
false.
182 REAL,
PARAMETER :: t_grnd=271.35
183 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd, capsol
184 REAL,
DIMENSION(klon) :: alb_neig, tsurf_tmp
185 REAL,
DIMENSION(klon) :: soilcap, soilflux
186 REAL,
DIMENSION(klon) :: u0, v0
187 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
192 IF (check)
WRITE(*,*)
'Entering surface_seaice, knon=',knon
199 tsurf_tmp(:) = tsurf_in(:)
207 CALL
soil(
dtime, is_sic, knon, snow, tsurf_tmp, tsoil,soilcap, soilflux)
208 cal(1:knon) = rcpd / soilcap(1:knon)
209 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon)
210 dif_grnd = 1.0 / tau_gl
212 dif_grnd = 1.0 / tau_gl
214 WHERE (snow > 0.0) cal = rcpd * calsno
221 u1_lay(:) = u1(:) - u0(:)
222 v1_lay(:) = v1(:) - v0(:)
224 tsurf_tmp, p1lay, cal,
beta, cdragh, ps, &
225 precip_rain, precip_snow, snow,
qsurf, &
226 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
227 acoefh, acoefq, bcoefh, bcoefq, &
228 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
232 u0, v0, u1, v1, cdragm, &
233 acoefu, acoefv, bcoefu, bcoefv, &
243 tsurf_tmp, precip_rain, precip_snow, &
244 snow,
qsol, tsurf_new, evap)
248 CALL
albsno(klon, knon,
dtime, agesno(:), alb_neig(:), precip_snow(:))
250 WHERE (snow(1:knon) .LT. 0.0001) agesno(1:knon) = 0.
254 zfra = max(0.0,min(1.0,snow(
i)/(snow(
i)+10.0)))
255 alb1_new(
i) = alb_neig(
i) * zfra + 0.6 * (1.0-zfra)
258 alb2_new(:) = alb1_new(:)