25 INTEGER,
INTENT(IN) ::
itime
26 INTEGER,
INTENT(IN) :: jour
27 REAL ,
INTENT(IN) ::
dtime
28 REAL,
DIMENSION(klon,nbsrf),
INTENT(INOUT) :: pctsrf
29 LOGICAL,
INTENT(OUT) :: is_modified
33 CHARACTER (len = 80) :: abort_message
34 CHARACTER (len = 20) :: modname =
'ocean_slab_frac'
37 IF (version_ocean ==
'sicOBS')
THEN
40 abort_message=
'Ocean slab model without forced sea-ice fractions has to be rewritten!!!'
52 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
53 acoefh, acoefq, bcoefh, bcoefq, &
54 acoefu, acoefv, bcoefu, bcoefv, &
55 ps, u1, v1, tsurf_in, &
56 radsol, snow, agesno, &
57 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
58 tsurf_new, dflux_s, dflux_l, lmt_bils)
68 INTEGER,
INTENT(IN) ::
itime
69 INTEGER,
INTENT(IN) :: jour
70 INTEGER,
INTENT(IN) :: knon
71 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
72 REAL,
INTENT(IN) ::
dtime
73 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
74 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
75 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
76 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
77 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
78 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
79 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
80 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
81 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf_in
85 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
86 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
87 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
91 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
92 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
93 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
94 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
95 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
96 REAL,
DIMENSION(klon),
INTENT(OUT) :: lmt_bils
101 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd
102 REAL,
DIMENSION(klon) :: lmt_bils_oce, lmt_foce, diff_sst
103 REAL,
DIMENSION(klon) :: u0, v0
104 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
105 REAL :: calc_bils_oce, deltat
106 REAL,
PARAMETER :: cyang=50.0 * 4.228e+06
120 u1_lay(:) = u1(:) - u0(:)
121 v1_lay(:) = v1(:) - v0(:)
124 tsurf_in, p1lay, cal,
beta, cdragh, ps, &
125 precip_rain, precip_snow, snow,
qsurf, &
126 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
127 acoefh, acoefq, bcoefh, bcoefq, &
128 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
132 u0, v0, u1, v1, cdragm, &
133 acoefu, acoefv, bcoefu, bcoefv, &
144 WHERE (lmt_foce > 0.)
145 lmt_bils_oce = lmt_bils / lmt_foce
153 calc_bils_oce = radsol(
i) + fluxsens(
i) + fluxlat(
i)
154 deltat = (calc_bils_oce - lmt_bils_oce(knindex(
i)))*
dtime/cyang +diff_sst(knindex(
i))
155 tsurf_new(
i) = tsurf_in(
i) + deltat