--- trunk/Sources/phylmd/clmain.f 2017/11/06 17:20:45 229 +++ trunk/Sources/phylmd/clmain.f 2017/11/09 12:47:25 236 @@ -25,6 +25,7 @@ use clvent_m, only: clvent use coefkz_m, only: coefkz use coefkzmin_m, only: coefkzmin + use coefkz2_m, only: coefkz2 USE conf_gcm_m, ONLY: lmt_pas USE conf_phys_m, ONLY: iflag_pbl USE dimphy, ONLY: klev, klon, zmasq @@ -311,11 +312,14 @@ ! calculer Cdrag et les coefficients d'echange CALL coefkz(nsrf, ypaprs, ypplay, ksta, ksta_ter, yts(:knon), & - yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, :), & - coefh(:knon, :)) + yrugos, yu, yv, yt, yq, yqsurf(:knon), coefm(:knon, 2:), & + coefh(:knon, 2:), coefm(:knon, 1), coefh(:knon, 1)) IF (iflag_pbl == 1) THEN - CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0, ycoefh0) + CALL coefkz2(nsrf, knon, ypaprs, ypplay, yt, ycoefm0(:knon, 2:), & + ycoefh0(:knon, 2:)) + ycoefm0(:knon, 1) = 0. + ycoefh0(:knon, 1) = 0. coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) END IF @@ -329,7 +333,7 @@ IF (ok_kzmin) THEN ! Calcul d'une diffusion minimale pour les conditions tres stables CALL coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, & - coefm(:knon, 1), ycoefm0, ycoefh0) + coefm(:knon, 1), ycoefm0(:knon, 2:), ycoefh0(:knon, 2:)) coefm(:knon, :) = max(coefm(:knon, :), ycoefm0(:knon, :)) coefh(:knon, :) = max(coefh(:knon, :), ycoefh0(:knon, :)) END IF @@ -377,24 +381,25 @@ coefh(:knon, 2:) = ykmn(:knon, 2:klev) END IF - CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), & - yt(:knon, :), yu(:knon, :), ypaprs(:knon, :), & + CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, 2:), & + coefm(:knon, 1), yt(:knon, :), yu(:knon, :), ypaprs(:knon, :), & ypplay(:knon, :), ydelp(:knon, :), y_d_u(:knon, :), & y_flux_u(:knon)) - CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, :), & - yt(:knon, :), yv(:knon, :), ypaprs(:knon, :), & + CALL clvent(dtime, yu(:knon, 1), yv(:knon, 1), coefm(:knon, 2:), & + coefm(:knon, 1), yt(:knon, :), yv(:knon, :), ypaprs(:knon, :), & ypplay(:knon, :), ydelp(:knon, :), y_d_v(:knon, :), & y_flux_v(:knon)) ! calculer la diffusion de "q" et de "h" CALL clqh(dtime, julien, firstcal, nsrf, ni(:knon), & ytsoil(:knon, :), yqsol(:knon), mu0, yrugos, yrugoro, & - yu(:knon, 1), yv(:knon, 1), coefh(:knon, :), yt, yq, & - yts(:knon), ypaprs, ypplay, ydelp, yrads(:knon), yalb(:knon), & - snow(:knon), yqsurf, yrain_f, ysnow_f, yfluxlat(:knon), & - pctsrf_new_sic, yagesno(:knon), y_d_t, y_d_q, y_d_ts(:knon), & - yz0_new, y_flux_t(:knon), y_flux_q(:knon), y_dflux_t(:knon), & - y_dflux_q(:knon), y_fqcalving, y_ffonte, y_run_off_lic_0) + yu(:knon, 1), yv(:knon, 1), coefh(:knon, 2:), coefh(:knon, 1), & + yt, yq, yts(:knon), ypaprs, ypplay, ydelp, yrads(:knon), & + yalb(:knon), snow(:knon), yqsurf, yrain_f, ysnow_f, & + yfluxlat(:knon), pctsrf_new_sic, yagesno(:knon), y_d_t, y_d_q, & + y_d_ts(:knon), yz0_new, y_flux_t(:knon), y_flux_q(:knon), & + y_dflux_t(:knon), y_dflux_q(:knon), y_fqcalving, y_ffonte, & + y_run_off_lic_0) ! calculer la longueur de rugosite sur ocean yrugm = 0.