--- trunk/dyn3d/guide.f 2014/03/05 14:57:53 82 +++ trunk/dyn3d/guide.f 2014/03/06 17:35:22 85 @@ -13,43 +13,45 @@ ! Author: F.Hourdin - USE comconst, ONLY : cpp, daysec, dtvr, kappa - USE comgeom, ONLY : aire, rlatu, rlonv - USE conf_gcm_m, ONLY : day_step, iperiod + USE comconst, ONLY: cpp, daysec, dtvr, kappa + USE comgeom, ONLY: aire, rlatu, rlonv + USE conf_gcm_m, ONLY: day_step, iperiod use conf_guide_m, only: conf_guide, guide_u, guide_v, guide_t, guide_q, & - guide_p, ncep, ini_anal, tau_min_u, tau_max_u, tau_min_v, tau_max_v, & + ncep, ini_anal, tau_min_u, tau_max_u, tau_min_v, tau_max_v, & tau_min_t, tau_max_t, tau_min_q, tau_max_q, tau_min_p, tau_max_p, & online - USE dimens_m, ONLY : jjm, llm - USE disvert_m, ONLY : ap, bp, preff, presnivs - USE exner_hyb_m, ONLY : exner_hyb - USE inigrads_m, ONLY : inigrads + USE dimens_m, ONLY: jjm, llm + USE disvert_m, ONLY: ap, bp, preff, presnivs + USE exner_hyb_m, ONLY: exner_hyb + USE inigrads_m, ONLY: inigrads use massdair_m, only: massdair use netcdf, only: nf90_nowrite, nf90_open, nf90_close, nf90_inq_dimid, & nf90_inquire_dimension use nr_util, only: pi - USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1, llmp1 - USE q_sat_m, ONLY : q_sat - USE serre, ONLY : clat, clon + USE paramet_m, ONLY: iip1, ip1jm, ip1jmp1, jjp1, llmp1 + USE q_sat_m, ONLY: q_sat + USE serre, ONLY: clat, clon use tau2alpha_m, only: tau2alpha, dxdys + INTEGER, INTENT(IN):: itau + ! variables dynamiques - REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm) ! vents covariants + REAL ucov(ip1jmp1, llm), vcov(ip1jm, llm) ! vents covariants REAL, intent(inout):: teta(ip1jmp1, llm) ! temperature potentielle REAL q(ip1jmp1, llm) ! temperature potentielle - REAL ps(ip1jmp1) ! pression au sol REAL, intent(out):: masse(ip1jmp1, llm) ! masse d'air + REAL, intent(in):: ps(ip1jmp1) ! pression au sol + + ! Local: ! variables dynamiques pour les reanalyses. REAL, save:: ucovrea1(ip1jmp1, llm), vcovrea1(ip1jm, llm) !vts cov reas REAL, save:: tetarea1(ip1jmp1, llm) ! temp pot reales REAL, save:: qrea1(ip1jmp1, llm) ! temp pot reales - REAL, save:: psrea1(ip1jmp1) ! ps REAL, save:: ucovrea2(ip1jmp1, llm), vcovrea2(ip1jm, llm) !vts cov reas REAL, save:: tetarea2(ip1jmp1, llm) ! temp pot reales REAL, save:: qrea2(ip1jmp1, llm) ! temp pot reales REAL, save:: masserea2(ip1jmp1, llm) ! masse - REAL, save:: psrea2(ip1jmp1) ! ps REAL, save:: alpha_q(ip1jmp1) REAL, save:: alpha_t(ip1jmp1), alpha_p(ip1jmp1) @@ -61,7 +63,6 @@ INTEGER ilon, ilat REAL factt, ztau(ip1jmp1) - INTEGER, INTENT(IN):: itau INTEGER ij, l INTEGER ncidpl, varidpl, status INTEGER rcod, rid @@ -182,7 +183,7 @@ rcod = nf90_close(ncidpl) ! Lecture du premier etat des reanalyses. CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, & - masserea2, psrea2, 1, nlev) + masserea2, 1, nlev) qrea2(:, :) = max(qrea2(:, :), 0.1) ! Debut de l'integration temporelle: @@ -212,7 +213,7 @@ step_rea = step_rea + 1 itau_test = itau CALL read_reanalyse(step_rea, ps, ucovrea2, vcovrea2, tetarea2, & - qrea2, masserea2, psrea2, 1, nlev) + qrea2, masserea2, 1, nlev) qrea2(:, :) = max(qrea2(:, :), 0.1) factt = dtvr*iperiod/daysec ztau(:) = factt/max(alpha_t(:), 1.E-10) @@ -267,18 +268,6 @@ END DO END IF - ! P - IF (guide_p) THEN - DO ij = 1, ip1jmp1 - a = (1.-tau)*psrea1(ij) + tau*psrea2(ij) - ps(ij) = (1.-alpha_p(ij))*ps(ij) + alpha_p(ij)*a - IF (first .AND. ini_anal) ps(ij) = a - END DO - forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps - CALL massdair(p, masse) - END IF - - ! q IF (guide_q) THEN DO l = 1, llm DO ij = 1, ip1jmp1