28 REAL,
INTENT(IN) ::
dtime
29 REAL,
DIMENSION(klon),
INTENT(IN) ::
rlon,
rlat
34 CHARACTER (len = 80) :: abort_message
35 CHARACTER (len = 20) :: modname =
'ocean_cpl_init'
48 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
49 acoefh, acoefq, bcoefh, bcoefq, &
50 acoefu, acoefv, bcoefu, bcoefv, &
52 radsol, snow, agesno, &
53 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
54 tsurf_new, dflux_s, dflux_l)
70 INTEGER,
INTENT(IN) ::
itime, knon
71 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
72 REAL,
INTENT(IN) ::
dtime
73 REAL,
DIMENSION(klon),
INTENT(IN) :: swnet
74 REAL,
DIMENSION(klon),
INTENT(IN) :: lwnet
75 REAL,
DIMENSION(klon),
INTENT(IN) :: alb1
76 REAL,
DIMENSION(klon),
INTENT(IN) :: windsp
77 REAL,
DIMENSION(klon),
INTENT(IN) :: fder_old
78 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
79 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
80 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
81 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
82 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
83 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
84 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
85 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
89 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
90 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
91 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
95 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
96 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
97 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
98 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
99 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
104 INTEGER,
DIMENSION(1) :: iloc
105 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd
106 REAL,
DIMENSION(klon) :: fder_new
107 REAL,
DIMENSION(klon) :: tsurf_cpl
108 REAL,
DIMENSION(klon) :: u0_cpl, v0_cpl
109 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
110 LOGICAL :: check=.
false.
115 IF (check)
WRITE(*,*)
' Entering ocean_cpl_noice'
133 u1_lay(
i) = u1(
i) - u0_cpl(
i)
134 v1_lay(
i) = v1(
i) - v0_cpl(
i)
138 tsurf_cpl, p1lay, cal,
beta, cdragh, ps, &
139 precip_rain, precip_snow, snow,
qsurf, &
140 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
141 acoefh, acoefq, bcoefh, bcoefq, &
142 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
146 u0_cpl, v0_cpl, u1, v1, cdragm, &
147 acoefu, acoefv, bcoefu, bcoefv, &
155 fder_new(:) = fder_old(:) + dflux_s(:) + dflux_l(:)
157 iloc = maxloc(fder_new(1:klon))
158 IF (check .AND. fder_new(iloc(1))> 0.)
THEN
159 WRITE(*,*)
'**** Debug fder****'
160 WRITE(*,*)
'max fder(',iloc(1),
') = ',fder_new(iloc(1))
161 WRITE(*,*)
'fder_old, dflux_s, dflux_l',fder_old(iloc(1)), &
162 dflux_s(iloc(1)), dflux_l(iloc(1))
171 swnet, lwnet, fluxlat, fluxsens, &
172 precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1, windsp)
184 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
185 acoefh, acoefq, bcoefh, bcoefq, &
186 acoefu, acoefv, bcoefu, bcoefv, &
187 ps, u1, v1, pctsrf, &
188 radsol, snow,
qsurf, &
189 alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
190 tsurf_new, dflux_s, dflux_l)
200 include
"indicesol.h"
205 INTEGER,
INTENT(IN) ::
itime, knon
206 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
207 LOGICAL,
INTENT(IN) :: lafin
208 REAL,
INTENT(IN) ::
dtime
209 REAL,
DIMENSION(klon),
INTENT(IN) ::
rlon,
rlat
210 REAL,
DIMENSION(klon),
INTENT(IN) :: swnet
211 REAL,
DIMENSION(klon),
INTENT(IN) :: lwnet
212 REAL,
DIMENSION(klon),
INTENT(IN) :: alb1
213 REAL,
DIMENSION(klon),
INTENT(IN) :: fder_old
214 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
215 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
216 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
217 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
218 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefh, acoefq, bcoefh, bcoefq
219 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
220 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
221 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
222 REAL,
DIMENSION(klon,nbsrf),
INTENT(IN) :: pctsrf
226 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
227 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
231 REAL,
DIMENSION(klon),
INTENT(OUT) ::
qsurf
232 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb1_new, alb2_new
233 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
234 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
235 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
236 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
241 INTEGER,
DIMENSION(1) :: iloc
242 LOGICAL :: check=.
false.
243 REAL,
PARAMETER :: t_grnd=271.35
244 REAL,
DIMENSION(klon) :: cal,
beta, dif_grnd
245 REAL,
DIMENSION(klon) :: tsurf_cpl, fder_new
246 REAL,
DIMENSION(klon) :: alb_cpl
247 REAL,
DIMENSION(klon) :: u0, v0
248 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
253 IF (check)
WRITE(*,*)
'Entering surface_seaice, knon=',knon
261 tsurf_cpl, alb_cpl, u0, v0)
263 alb1_new(1:knon) = alb_cpl(1:knon)
264 alb2_new(1:knon) = alb_cpl(1:knon)
276 u1_lay(
i) = u1(
i) - u0(
i)
277 v1_lay(
i) = v1(
i) - v0(
i)
281 tsurf_cpl, p1lay, cal,
beta, cdragh, ps, &
282 precip_rain, precip_snow, snow,
qsurf, &
283 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
284 acoefh, acoefq, bcoefh, bcoefq, &
285 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
290 u0, v0, u1, v1, cdragm, &
291 acoefu, acoefv, bcoefu, bcoefv, &
299 fder_new(:) = fder_old(:) + dflux_s(:) + dflux_l(:)
301 iloc = maxloc(fder_new(1:klon))
302 IF (check .AND. fder_new(iloc(1))> 0.)
THEN
303 WRITE(*,*)
'**** Debug fder ****'
304 WRITE(*,*)
'max fder(',iloc(1),
') = ',fder_new(iloc(1))
305 WRITE(*,*)
'fder_old, dflux_s, dflux_l',fder_old(iloc(1)), &
306 dflux_s(iloc(1)), dflux_l(iloc(1))
316 swnet, lwnet, fluxlat, fluxsens, &
317 precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1)