/[lmdze]/trunk/dyn3d/Guide/guide.f
ViewVC logotype

Diff of /trunk/dyn3d/Guide/guide.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 210 by guez, Tue Dec 13 16:02:23 2016 UTC revision 211 by guez, Tue Dec 13 17:23:09 2016 UTC
# Line 14  CONTAINS Line 14  CONTAINS
14      USE comconst, ONLY: cpp, kappa      USE comconst, ONLY: cpp, kappa
15      USE conf_gcm_m, ONLY: day_step      USE conf_gcm_m, ONLY: day_step
16      use conf_guide_m, only: guide_u, guide_v, guide_t, guide_q, ini_anal, &      use conf_guide_m, only: guide_u, guide_v, guide_t, guide_q, ini_anal, &
17           tau_min_u, tau_max_u, tau_min_v, tau_max_v, tau_min_t, tau_max_t, &           alpha_u, alpha_v, alpha_t, alpha_q
          tau_min_q, tau_max_q, online, factt  
18      USE dimens_m, ONLY: iim, jjm, llm      USE dimens_m, ONLY: iim, jjm, llm
19      USE disvert_m, ONLY: ap, bp, preff      USE disvert_m, ONLY: ap, bp, preff
     use dynetat0_m, only: grossismx, grossismy, rlatu, rlatv  
20      USE exner_hyb_m, ONLY: exner_hyb      USE exner_hyb_m, ONLY: exner_hyb
     use init_tau2alpha_m, only: init_tau2alpha  
     USE paramet_m, ONLY: iip1, jjp1  
21      USE q_sat_m, ONLY: q_sat      USE q_sat_m, ONLY: q_sat
22      use read_reanalyse_m, only: read_reanalyse      use read_reanalyse_m, only: read_reanalyse
     use tau2alpha_m, only: tau2alpha  
23      use writefield_m, only: writefield      use writefield_m, only: writefield
24    
25      INTEGER, INTENT(IN):: itau      INTEGER, INTENT(IN):: itau
# Line 46  CONTAINS Line 41  CONTAINS
41    
42      REAL, save:: tetarea1(iim + 1, jjm + 1, llm)      REAL, save:: tetarea1(iim + 1, jjm + 1, llm)
43      ! potential temperture from reanalysis      ! potential temperture from reanalysis
44        
45      REAL, save:: qrea1(iim + 1, jjm + 1, llm)      REAL, save:: qrea1(iim + 1, jjm + 1, llm)
46    
47      REAL, save:: ucovrea2(iim + 1, jjm + 1, llm), vcovrea2(iim + 1, jjm, llm)      REAL, save:: ucovrea2(iim + 1, jjm + 1, llm), vcovrea2(iim + 1, jjm, llm)
# Line 54  CONTAINS Line 49  CONTAINS
49    
50      REAL, save:: tetarea2(iim + 1, jjm + 1, llm)      REAL, save:: tetarea2(iim + 1, jjm + 1, llm)
51      ! potential temperture from reanalysis      ! potential temperture from reanalysis
       
     REAL, save:: qrea2(iim + 1, jjm + 1, llm)  
52    
53      ! alpha détermine la part des injections de données à chaque étape      REAL, save:: qrea2(iim + 1, jjm + 1, llm)
     ! alpha=0 signifie pas d'injection  
     ! alpha=1 signifie injection totale  
     REAL, save:: alpha_q(iim + 1, jjm + 1)  
     REAL, save:: alpha_t(iim + 1, jjm + 1)  
     REAL, save:: alpha_u(iim + 1, jjm + 1), alpha_v(iim + 1, jjm)  
54    
55      INTEGER l      INTEGER l
56      REAL tau      REAL tau
# Line 72  CONTAINS Line 60  CONTAINS
60      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)
61      REAL qsat(iim + 1, jjm + 1, llm)      REAL qsat(iim + 1, jjm + 1, llm)
62    
     REAL dxdys(iip1, jjp1), dxdyu(iip1, jjp1), dxdyv(iip1, jjm)  
   
63      !-----------------------------------------------------------------------      !-----------------------------------------------------------------------
64    
65      IF (itau == 0) THEN      IF (itau == 0) THEN
        IF (online) THEN  
           IF (abs(grossismx - 1.) < 0.1 .OR. abs(grossismy - 1.) < 0.1) THEN  
              ! grille regulière  
              if (guide_u) alpha_u = 1. - exp(- factt / tau_max_u)  
              if (guide_v) alpha_v = 1. - exp(- factt / tau_max_v)  
              if (guide_t) alpha_t = 1. - exp(- factt / tau_max_t)  
              if (guide_q) alpha_q = 1. - exp(- factt / tau_max_q)  
           else  
              call init_tau2alpha(dxdys, dxdyu, dxdyv)  
   
              if (guide_u) then  
                 CALL tau2alpha(dxdyu, rlatu, tau_min_u, tau_max_u, alpha_u)  
                 CALL writefield("alpha_u", alpha_u)  
              end if  
   
              if (guide_v) then  
                 CALL tau2alpha(dxdyv, rlatv, tau_min_v, tau_max_v, alpha_v)  
                 CALL writefield("alpha_v", alpha_v)  
              end if  
   
              if (guide_t) then  
                 CALL tau2alpha(dxdys, rlatu, tau_min_t, tau_max_t, alpha_t)  
                 CALL writefield("alpha_t", alpha_t)  
              end if  
   
              if (guide_q)  then  
                 CALL tau2alpha(dxdys, rlatu, tau_min_q, tau_max_q, alpha_q)  
                 CALL writefield("alpha_q", alpha_q)  
              end if  
           end IF  
        ELSE  
           ! Cas où on force exactement par les variables analysées  
           if (guide_u) alpha_u = 1.  
           if (guide_v) alpha_v = 1.  
           if (guide_t) alpha_t = 1.  
           if (guide_q) alpha_q = 1.  
        END IF  
   
66         ! Lecture du premier état des réanalyses :         ! Lecture du premier état des réanalyses :
67         CALL read_reanalyse(ps, ucovrea2, vcovrea2, tetarea2, qrea2)         CALL read_reanalyse(ps, ucovrea2, vcovrea2, tetarea2, qrea2)
68         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)

Legend:
Removed from v.210  
changed lines
  Added in v.211

  ViewVC Help
Powered by ViewVC 1.1.21