/[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

revision 107 by guez, Thu Sep 11 15:09:15 2014 UTC revision 109 by guez, Wed Sep 17 10:08:00 2014 UTC
# Line 21  CONTAINS Line 21  CONTAINS
21           tau_min_t, tau_max_t, tau_min_q, tau_max_q, online           tau_min_t, tau_max_t, tau_min_q, tau_max_q, online
22      USE dimens_m, ONLY: iim, jjm, llm      USE dimens_m, ONLY: iim, jjm, llm
23      USE disvert_m, ONLY: ap, bp, preff, presnivs      USE disvert_m, ONLY: ap, bp, preff, presnivs
     use dump2d_m, only: dump2d  
24      USE exner_hyb_m, ONLY: exner_hyb      USE exner_hyb_m, ONLY: exner_hyb
     USE inigrads_m, ONLY: inigrads  
25      use netcdf, only: nf90_nowrite      use netcdf, only: nf90_nowrite
26      use netcdf95, only: nf95_close, nf95_inq_dimid, nf95_inquire_dimension, &      use netcdf95, only: nf95_close, nf95_inq_dimid, nf95_inquire_dimension, &
27           nf95_open           nf95_open
# Line 32  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
35    
36      INTEGER, INTENT(IN):: itau      INTEGER, INTENT(IN):: itau
   
     ! variables dynamiques  
   
37      REAL, intent(inout):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant      REAL, intent(inout):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant
38      REAL, intent(inout):: vcov(:, :, :) ! (iim + 1, jjm, llm) ! vent covariant      REAL, intent(inout):: vcov(:, :, :) ! (iim + 1, jjm, llm) ! vent covariant
39    
40      REAL, intent(inout):: teta(iim + 1, jjm + 1, llm) ! température potentielle      REAL, intent(inout):: teta(:, :, :) ! (iim + 1, jjm + 1, llm)
41      REAL, intent(inout):: q(iim + 1, jjm + 1, llm)      ! température potentielle
42    
43        REAL, intent(inout):: q(:, :, :) ! (iim + 1, jjm + 1, llm)
44      REAL, intent(in):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol      REAL, intent(in):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol
45    
46      ! Local:      ! Local:
47    
48      ! variables dynamiques pour les reanalyses.      ! variables dynamiques pour les réanalyses
49    
50      REAL, save:: ucovrea1(iim + 1, jjm + 1, llm), vcovrea1(iim + 1, jjm, llm)      REAL, save:: ucovrea1(iim + 1, jjm + 1, llm), vcovrea1(iim + 1, jjm, llm)
51      ! vents covariants reanalyses      ! vents covariants reanalyses
# Line 73  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 ncidpl      INTEGER ncid, dimid
     INTEGER rid  
77      REAL tau      REAL tau
78      INTEGER, SAVE:: nlev      INTEGER, SAVE:: nlev
79    
80      ! TEST SUR QSAT      ! TEST SUR QSAT
81      REAL p(iim + 1, jjm + 1, llmp1)      REAL p(iim + 1, jjm + 1, llmp1)
82      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)
   
83      REAL qsat(iim + 1, jjm + 1, llm)      REAL qsat(iim + 1, jjm + 1, llm)
84    
     INTEGER, parameter:: igrads = 2  
     REAL:: dtgrads = 100.  
   
85      !-----------------------------------------------------------------------      !-----------------------------------------------------------------------
86    
87      PRINT *, 'Call sequence information: guide'      !!PRINT *, 'Call sequence information: guide'
88    
89      first_call: IF (itau == 0) THEN      first_call: IF (itau == 0) THEN
90         CALL conf_guide         CALL conf_guide
        CALL inigrads(igrads, rlonv, 180. / pi, -180., 180., rlatu, -90., &  
             90., 180. / pi, presnivs, 1., dtgrads, 'guide', 'dyn_zon ')  
91    
92         IF (online) THEN         IF (online) THEN
93            ! Constantes de temps de rappel en jour            ! Constantes de temps de rappel en jour
# Line 118  CONTAINS Line 108  CONTAINS
108            CALL tau2alpha(2, factt, tau_min_u, tau_max_u, alpha_u)            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)            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)            CALL tau2alpha(1, factt, tau_min_q, tau_max_q, alpha_q)
   
           CALL dump2d(iip1, jjp1, aire, 'AIRE MAILLe ')  
           CALL dump2d(iip1, jjp1, alpha_u, 'COEFF U ')  
           CALL dump2d(iip1, jjp1, alpha_t, 'COEFF T ')  
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.            alpha_t = 0.
# Line 132  CONTAINS Line 118  CONTAINS
118    
119         step_rea = 1         step_rea = 1
120         count_no_rea = 0         count_no_rea = 0
121         ncidpl = -99         ncid = -99
122    
123         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux
124         if (guide_u) call nf95_open('u.nc',Nf90_NOWRITe,ncidpl)         if (guide_u) call nf95_open('u.nc',Nf90_NOWRITe,ncid)
125         if (guide_v) call nf95_open('v.nc',nf90_nowrite,ncidpl)         if (guide_v) call nf95_open('v.nc',nf90_nowrite,ncid)
126         if (guide_T) call nf95_open('T.nc',nf90_nowrite,ncidpl)         if (guide_T) call nf95_open('T.nc',nf90_nowrite,ncid)
127         if (guide_Q) call nf95_open('hur.nc',nf90_nowrite, ncidpl)         if (guide_Q) call nf95_open('hur.nc',nf90_nowrite, ncid)
128    
129         IF (ncep) THEN         IF (ncep) THEN
130            call nf95_inq_dimid(ncidpl, 'LEVEL', rid)            call nf95_inq_dimid(ncid, 'LEVEL', dimid)
131         ELSE         ELSE
132            call nf95_inq_dimid(ncidpl, 'PRESSURE', rid)            call nf95_inq_dimid(ncid, 'PRESSURE', dimid)
133         END IF         END IF
134         call nf95_inquire_dimension(ncidpl, rid, nclen=nlev)         call nf95_inquire_dimension(ncid, dimid, nclen=nlev)
135         PRINT *, 'nlev', nlev         PRINT *, 'nlev', nlev
136         call nf95_close(ncidpl)         call nf95_close(ncid)
137         ! Lecture du premier etat des reanalyses.         ! Lecture du premier etat des reanalyses.
138         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &
139              masserea2, nlev)              masserea2, nlev)
140         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)
141    
142           CALL writefield("alpha_u", alpha_u)
143           CALL writefield("alpha_t", alpha_t)
144      END IF first_call      END IF first_call
145    
146      ! IMPORTATION DES VENTS, PRESSION ET TEMPERATURE REELS:      ! IMPORTATION DES VENTS, PRESSION ET TEMPERATURE REELS:
# Line 170  CONTAINS Line 159  CONTAINS
159              masserea2, nlev)              masserea2, nlev)
160         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)
161         factt = dtvr * iperiod / daysec         factt = dtvr * iperiod / daysec
162         ztau = factt / max(alpha_t, 1E-10)         CALL writefield("ucov", ucov)
163         CALL wrgrads(igrads, 1, aire, 'aire ', 'aire ')         CALL writefield("ucovrea2", ucovrea2)
164         CALL wrgrads(igrads, 1, dxdys, 'dxdy ', 'dxdy ')         CALL writefield("teta", teta)
165         CALL wrgrads(igrads, 1, alpha_u, 'au ', 'au ')         CALL writefield("tetarea2", tetarea2)
166         CALL wrgrads(igrads, 1, alpha_t, 'at ', 'at ')         CALL writefield("qrea2", qrea2)
167         CALL wrgrads(igrads, 1, ztau, 'taut ', 'taut ')         CALL writefield("q", q)
        CALL wrgrads(igrads, llm, ucov, 'u ', 'u ')  
        CALL wrgrads(igrads, llm, ucovrea2, 'ua ', 'ua ')  
        CALL wrgrads(igrads, llm, teta, 'T ', 'T ')  
        CALL wrgrads(igrads, llm, tetarea2, 'Ta ', 'Ta ')  
        CALL wrgrads(igrads, llm, qrea2, 'Qa ', 'Qa ')  
        CALL wrgrads(igrads, llm, q, 'Q ', 'Q ')  
168      ELSE      ELSE
169         count_no_rea = count_no_rea + 1         count_no_rea = count_no_rea + 1
170      END IF      END IF

Legend:
Removed from v.107  
changed lines
  Added in v.109

  ViewVC Help
Powered by ViewVC 1.1.21