15 p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, &
17 acoefh, acoefq, bcoefh, bcoefq, &
18 acoefu, acoefv, bcoefu, bcoefv, &
19 ps, u1, v1, gustiness, &
20 radsol, snow, agesno, &
21 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
22 tsurf_new, dflux_s, dflux_l)
40 INTEGER,
INTENT(IN) :: itime, jour, knon
41 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
42 REAL,
INTENT(IN) :: dtime
43 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
44 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragq, cdragm
45 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
46 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
47 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefH, AcoefQ, BcoefH, BcoefQ
48 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV
49 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
50 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1, gustiness
54 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
55 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow
56 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
60 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsurf
61 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
62 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
63 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
64 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
69 REAL,
DIMENSION(klon) :: cal, beta, dif_grnd
70 REAL,
DIMENSION(klon) :: alb_neig, tsurf_lim, zx_sl
71 REAL,
DIMENSION(klon) :: u0, v0
72 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
73 LOGICAL :: check=.
false.
78 IF (check)
WRITE(*,*)
' Entering ocean_forced_noice'
108 u1_lay(:) = u1(:) - u0(:)
109 v1_lay(:) = v1(:) - v0(:)
113 tsurf_lim, p1lay, cal, beta, cdragh, cdragq, ps, &
114 precip_rain, precip_snow, snow, qsurf, &
115 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
117 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
121 u0, v0, u1, v1, gustiness, cdragm, &
122 acoefu, acoefv, bcoefu, bcoefv, &
132 tsurf_in, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
133 acoefh, acoefq, bcoefh, bcoefq, &
134 acoefu, acoefv, bcoefu, bcoefv, &
135 ps, u1, v1, gustiness, &
136 radsol, snow, qsol, agesno, tsoil, &
137 qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
138 tsurf_new, dflux_s, dflux_l)
158 INTEGER,
INTENT(IN) :: itime, jour, knon
159 INTEGER,
DIMENSION(klon),
INTENT(IN) :: knindex
160 REAL,
INTENT(IN) :: dtime
161 REAL,
DIMENSION(klon),
INTENT(IN) :: tsurf_in
162 REAL,
DIMENSION(klon),
INTENT(IN) :: p1lay
163 REAL,
DIMENSION(klon),
INTENT(IN) :: cdragh, cdragm
164 REAL,
DIMENSION(klon),
INTENT(IN) :: precip_rain, precip_snow
165 REAL,
DIMENSION(klon),
INTENT(IN) :: temp_air, spechum
166 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefH, AcoefQ, BcoefH, BcoefQ
167 REAL,
DIMENSION(klon),
INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV
168 REAL,
DIMENSION(klon),
INTENT(IN) :: ps
169 REAL,
DIMENSION(klon),
INTENT(IN) :: u1, v1, gustiness
173 REAL,
DIMENSION(klon),
INTENT(INOUT) :: radsol
174 REAL,
DIMENSION(klon),
INTENT(INOUT) :: snow, qsol
175 REAL,
DIMENSION(klon),
INTENT(INOUT) :: agesno
176 REAL,
DIMENSION(klon, nsoilmx),
INTENT(INOUT) :: tsoil
180 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsurf
181 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb1_new
182 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb2_new
183 REAL,
DIMENSION(klon),
INTENT(OUT) :: evap, fluxsens, fluxlat
184 REAL,
DIMENSION(klon),
INTENT(OUT) :: flux_u1, flux_v1
185 REAL,
DIMENSION(klon),
INTENT(OUT) :: tsurf_new
186 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_s, dflux_l
190 LOGICAL :: check=.
false.
193 REAL,
PARAMETER :: t_grnd=271.35
194 REAL,
DIMENSION(klon) :: cal, beta, dif_grnd, capsol
195 REAL,
DIMENSION(klon) :: alb_neig, tsurf_tmp
196 REAL,
DIMENSION(klon) :: soilcap, soilflux
197 REAL,
DIMENSION(klon) :: u0, v0
198 REAL,
DIMENSION(klon) :: u1_lay, v1_lay
203 IF (check)
WRITE(*,*)
'Entering surface_seaice, knon=',knon
210 tsurf_tmp(:) = tsurf_in(:)
213 CALL calbeta(dtime,
is_sic, knon, snow, qsol, beta, capsol, dif_grnd)
218 CALL soil(dtime,
is_sic, knon, snow, tsurf_tmp, tsoil,soilcap, soilflux)
219 cal(1:knon) = rcpd / soilcap(1:knon)
220 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon)
225 WHERE (snow > 0.0) cal = rcpd *
calsno
232 u1_lay(:) = u1(:) - u0(:)
233 v1_lay(:) = v1(:) - v0(:)
235 tsurf_tmp, p1lay, cal, beta, cdragh, cdragh, ps, &
236 precip_rain, precip_snow, snow, qsurf, &
237 radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
239 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
243 u0, v0, u1, v1, gustiness, cdragm, &
244 acoefu, acoefv, bcoefu, bcoefv, &
254 tsurf_tmp, precip_rain, precip_snow, &
255 snow, qsol, tsurf_new, evap)
259 CALL albsno(
klon, knon, dtime, agesno(:), alb_neig(:), precip_snow(:))
261 WHERE (snow(1:knon) .LT. 0.0001) agesno(1:knon) = 0.
265 zfra = max(0.0,min(1.0,snow(i)/(snow(i)+10.0)))
266 alb1_new(i) = alb_neig(i) * zfra + 0.6 * (1.0-zfra)
269 alb2_new(:) = alb1_new(:)
282 INTEGER,
INTENT(IN) :: knon
283 REAL,
DIMENSION(klon),
INTENT(OUT) :: sst_out
288 common /sst_forcing/ts_cur
subroutine albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow)
!$Header!c include clesph0 h c COMMON clesph0 soil_model
subroutine read_tsurf1d(knon, sst_out)
subroutine fonte_neige(knon, nisurf, knindex, dtime, tsurf, precip_rain, precip_snow, snow, qsol, tsurf_new, evap)
subroutine calcul_flux_wind(knon, dtime, u0, v0, u1, v1, gustiness, cdrag_m, AcoefU, AcoefV, BcoefU, BcoefV, p1lay, t1lay, flux_u1, flux_v1)
!$Header!integer nvarmx dtime
subroutine ocean_forced_noice(itime, dtime, jour, knon, knindex, p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, radsol, snow, agesno, qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, tsurf_new, dflux_s, dflux_l)
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au f_cdrag_oce REAL f_qsat_oce
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
subroutine limit_read_sst(knon, knindex, sst_out)
!$Header!integer nvarmx s s itime
integer, parameter is_sic
subroutine calcul_fluxs(knon, nisurf, dtime, tsurf, p1lay, cal, beta, cdragh, cdragq, ps, precip_rain, precip_snow, snow, qsurf, radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
subroutine calbeta(dtime, indice, knon, snow, qsol, vbeta, vcal, vdif)
integer, parameter is_oce
subroutine ocean_forced_ice(itime, dtime, jour, knon, knindex, tsurf_in, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, radsol, snow, qsol, agesno, tsoil, qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, tsurf_new, dflux_s, dflux_l)
subroutine soil(ptimestep, indice, knon, snow, ptsrf, ptsoil, pcapcal, pfluxgrd)