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

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

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

trunk/dyn3d/guide.f revision 108 by guez, Tue Sep 16 14:00:41 2014 UTC trunk/dyn3d/Guide/guide.f revision 114 by guez, Fri Sep 19 11:41:35 2014 UTC
# Line 30  CONTAINS Line 30  CONTAINS
30      USE q_sat_m, ONLY: q_sat      USE q_sat_m, ONLY: q_sat
31      use read_reanalyse_m, only: read_reanalyse      use read_reanalyse_m, only: read_reanalyse
32      USE serre, ONLY: clat, clon      USE serre, ONLY: clat, clon
33      use tau2alpha_m, only: tau2alpha, dxdys      use tau2alpha_m, only: tau2alpha
34      use writefield_m, only: writefield      use writefield_m, only: writefield
35    
36      INTEGER, INTENT(IN):: itau      INTEGER, INTENT(IN):: itau
# Line 61  CONTAINS Line 61  CONTAINS
61      REAL, save:: masserea2(ip1jmp1, llm) ! masse      REAL, save:: masserea2(ip1jmp1, llm) ! masse
62    
63      ! alpha determine la part des injections de donnees a chaque etape      ! alpha determine la part des injections de donnees a chaque etape
64      ! alpha=1 signifie pas d'injection      ! alpha=0 signifie pas d'injection
65      ! alpha=0 signifie injection totale      ! alpha=1 signifie injection totale
66      REAL, save:: alpha_q(iim + 1, jjm + 1)      REAL, save:: alpha_q(iim + 1, jjm + 1)
67      REAL, save:: alpha_t(iim + 1, jjm + 1)      REAL, save:: alpha_t(iim + 1, jjm + 1)
68      REAL, save:: alpha_u(iim + 1, jjm + 1), alpha_v(iim + 1, jjm)      REAL, save:: alpha_u(iim + 1, jjm + 1), alpha_v(iim + 1, jjm)
# Line 71  CONTAINS Line 71  CONTAINS
71    
72      INTEGER ilon, ilat      INTEGER ilon, ilat
73      REAL factt ! pas de temps entre deux appels au guidage, en fraction de jour      REAL factt ! pas de temps entre deux appels au guidage, en fraction de jour
     real ztau(iim + 1, jjm + 1)  
74    
75      INTEGER ij, l      INTEGER ij, l
76      INTEGER ncid, dimid      INTEGER ncid, dimid
# Line 105  CONTAINS Line 104  CONTAINS
104    
105            factt = dtvr * iperiod / daysec            factt = dtvr * iperiod / daysec
106    
107            CALL tau2alpha(3, factt, tau_min_v, tau_max_v, alpha_v)            if (guide_u) CALL tau2alpha(3, factt, tau_min_v, tau_max_v, alpha_v)
108            CALL tau2alpha(2, factt, tau_min_u, tau_max_u, alpha_u)            if (guide_v) CALL tau2alpha(2, factt, tau_min_u, tau_max_u, alpha_u)
109            CALL tau2alpha(1, factt, tau_min_t, tau_max_t, alpha_t)            if (guide_t) CALL tau2alpha(1, factt, tau_min_t, tau_max_t, alpha_t)
110            CALL tau2alpha(1, factt, tau_min_q, tau_max_q, alpha_q)            if (guide_q) CALL tau2alpha(1, factt, tau_min_q, tau_max_q, alpha_q)
111         ELSE         ELSE
112            ! Cas où on force exactement par les variables analysées            ! Cas où on force exactement par les variables analysées
113            alpha_t = 0.            if (guide_u) alpha_t = 1.
114            alpha_u = 0.            if (guide_v) alpha_u = 1.
115            alpha_v = 0.            if (guide_t) alpha_v = 1.
116            alpha_q = 0.            if (guide_q) alpha_q = 1.
117         END IF         END IF
118    
119         step_rea = 1         step_rea = 1
120         count_no_rea = 0         count_no_rea = 0
        ncid = -99  
121    
122         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux
123         if (guide_u) call nf95_open('u.nc',Nf90_NOWRITe,ncid)         if (guide_u) then
124         if (guide_v) call nf95_open('v.nc',nf90_nowrite,ncid)            call nf95_open('u.nc',Nf90_NOWRITe,ncid)
125         if (guide_T) call nf95_open('T.nc',nf90_nowrite,ncid)         else if (guide_v) then
126         if (guide_Q) call nf95_open('hur.nc',nf90_nowrite, ncid)            call nf95_open('v.nc',nf90_nowrite,ncid)
127           else if (guide_T) then
128              call nf95_open('T.nc',nf90_nowrite,ncid)
129           else
130              call nf95_open('hur.nc',nf90_nowrite, ncid)
131           end if
132    
133         IF (ncep) THEN         IF (ncep) THEN
134            call nf95_inq_dimid(ncid, 'LEVEL', dimid)            call nf95_inq_dimid(ncid, 'LEVEL', dimid)
# Line 139  CONTAINS Line 142  CONTAINS
142         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &
143              masserea2, nlev)              masserea2, nlev)
144         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)
145    
146           if (guide_u) CALL writefield("alpha_u", alpha_u)
147           if (guide_t) CALL writefield("alpha_t", alpha_t)
148      END IF first_call      END IF first_call
149    
150      ! IMPORTATION DES VENTS, PRESSION ET TEMPERATURE REELS:      ! IMPORTATION DES VENTS, PRESSION ET TEMPERATURE REELS:
# Line 157  CONTAINS Line 163  CONTAINS
163              masserea2, nlev)              masserea2, nlev)
164         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)
165         factt = dtvr * iperiod / daysec         factt = dtvr * iperiod / daysec
166         ztau = factt / max(alpha_t, 1E-10)  
167         CALL writefield("aire", aire)         if (guide_u) then
168         CALL writefield("dxdys", dxdys)            CALL writefield("ucov", ucov)
169         CALL writefield("alpha_u", alpha_u)            CALL writefield("ucovrea2", ucovrea2)
170         CALL writefield("alpha_t", alpha_t)         end if
171         CALL writefield("ztau", ztau)  
172         CALL writefield("ucov", ucov)         if (guide_t) then
173         CALL writefield("ucovrea2", ucovrea2)            CALL writefield("teta", teta)
174         CALL writefield("teta", teta)            CALL writefield("tetarea2", tetarea2)
175         CALL writefield("tetarea2", tetarea2)         end if
176         CALL writefield("qrea2", qrea2)  
177         CALL writefield("q", q)         if (guide_q) then
178              CALL writefield("qrea2", qrea2)
179              CALL writefield("q", q)
180           end if
181      ELSE      ELSE
182         count_no_rea = count_no_rea + 1         count_no_rea = count_no_rea + 1
183      END IF      END IF

Legend:
Removed from v.108  
changed lines
  Added in v.114

  ViewVC Help
Powered by ViewVC 1.1.21