11 rugos, windsp, rmu0, fder, tsurf_in, &
13 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
14 acoefh, acoefq, bcoefh, bcoefq, &
15 acoefu, acoefv, bcoefu, bcoefv, &
16 ps, u1, v1, rugoro, pctsrf, &
17 snow,
qsurf, agesno, &
18 z0_new, alb1_new, alb2_new, evap, fluxsens, fluxlat, &
19 tsurf_new, dflux_s, dflux_l, lmt_bils, &
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) ::
rlon,
rlat
41 REAL,
DIMENSION(klon),
INTENT(IN) :: swnet
42 REAL,
DIMENSION(klon),
INTENT(IN) :: lwnet
43 REAL,
DIMENSION(klon),
INTENT(IN) :: alb1
44 REAL,
DIMENSION(klon),
INTENT(IN) ::
rugos
45 REAL,
DIMENSION(klon),
INTENT(IN) :: windsp
46 REAL,
DIMENSION(klon),
INTENT(IN) :: rmu0
47 REAL,
DIMENSION(klon),
INTENT(IN) :: fder
48 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf_in
49 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
50 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh
51 REAL,
DIMENSION(klon),
INTENT(IN) :: 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, bcoefh, bcoefq
55 REAL,
DIMENSION(klon),
INTENT(IN) :: acoefu, acoefv, bcoefu, bcoefv
56 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
57 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1
58 REAL,
DIMENSION(klon),
INTENT(IN) :: rugoro
59 REAL,
DIMENSION(klon,nbsrf),
INTENT(IN) :: pctsrf
63 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
64 REAL,
DIMENSION(klon),
INTENT(INOUT) ::
qsurf
65 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
69 REAL,
DIMENSION(klon),
INTENT(OUT) :: z0_new
70 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb1_new
71 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb2_new
72 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
73 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
74 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
75 REAL,
DIMENSION(klon),
INTENT(OUT) :: lmt_bils
76 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
82 REAL,
PARAMETER :: cepdu2=(0.1)**2
83 REAL,
DIMENSION(klon) :: alb_eau
84 REAL,
DIMENSION(klon) :: radsol
95 radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
100 SELECT CASE(type_ocean)
103 swnet, lwnet, alb1, &
106 p1lay, cdragh, cdragm, precip_rain, precip_snow,temp_air,spechum,&
107 acoefh, acoefq, bcoefh, bcoefq, &
108 acoefu, acoefv, bcoefu, bcoefv, &
110 radsol, snow, agesno, &
111 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
112 tsurf_new, dflux_s, dflux_l)
117 p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum,&
118 acoefh, acoefq, bcoefh, bcoefq, &
119 acoefu, acoefv, bcoefu, bcoefv, &
120 ps, u1, v1, tsurf_in, &
121 radsol, snow, agesno, &
122 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
123 tsurf_new, dflux_s, dflux_l, lmt_bils)
128 p1lay, cdragh, cdragm, precip_rain, precip_snow, &
130 acoefh, acoefq, bcoefh, bcoefq, &
131 acoefu, acoefv, bcoefu, bcoefv, &
133 radsol, snow, agesno, &
134 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
135 tsurf_new, dflux_s, dflux_l)
142 IF ( minval(rmu0) == maxval(rmu0) .AND. minval(rmu0) == -999.999 )
THEN
149 alb1_new(
i) = alb_eau(knindex(
i))
151 alb2_new(1:knon) = alb1_new(1:knon)
158 tmp = max(cepdu2,u1(
i)**2+v1(
i)**2)
159 z0_new(
i) = 0.018*cdragm(
i) * (u1(
i)**2+v1(
i)**2)/rg &
160 + 0.11*14e-6 / sqrt(cdragm(
i) * tmp)
161 z0_new(
i) = max(1.5e-05,z0_new(
i))