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

Diff of /trunk/dyn3d/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 108 by guez, Tue Sep 16 14:00:41 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 33  CONTAINS Line 31  CONTAINS
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, dxdys
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 76  CONTAINS Line 74  CONTAINS
74      real ztau(iim + 1, jjm + 1)      real ztau(iim + 1, jjm + 1)
75    
76      INTEGER ij, l      INTEGER ij, l
77      INTEGER ncidpl      INTEGER ncid, dimid
     INTEGER rid  
78      REAL tau      REAL tau
79      INTEGER, SAVE:: nlev      INTEGER, SAVE:: nlev
80    
81      ! TEST SUR QSAT      ! TEST SUR QSAT
82      REAL p(iim + 1, jjm + 1, llmp1)      REAL p(iim + 1, jjm + 1, llmp1)
83      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)      real pk(iim + 1, jjm + 1, llm), pks(iim + 1, jjm + 1)
   
84      REAL qsat(iim + 1, jjm + 1, llm)      REAL qsat(iim + 1, jjm + 1, llm)
85    
     INTEGER, parameter:: igrads = 2  
     REAL:: dtgrads = 100.  
   
86      !-----------------------------------------------------------------------      !-----------------------------------------------------------------------
87    
88      PRINT *, 'Call sequence information: guide'      !!PRINT *, 'Call sequence information: guide'
89    
90      first_call: IF (itau == 0) THEN      first_call: IF (itau == 0) THEN
91         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 ')  
92    
93         IF (online) THEN         IF (online) THEN
94            ! Constantes de temps de rappel en jour            ! Constantes de temps de rappel en jour
# Line 118  CONTAINS Line 109  CONTAINS
109            CALL tau2alpha(2, factt, tau_min_u, tau_max_u, alpha_u)            CALL tau2alpha(2, factt, tau_min_u, tau_max_u, alpha_u)
110            CALL tau2alpha(1, factt, tau_min_t, tau_max_t, alpha_t)            CALL tau2alpha(1, factt, tau_min_t, tau_max_t, alpha_t)
111            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 ')  
112         ELSE         ELSE
113            ! Cas où on force exactement par les variables analysées            ! Cas où on force exactement par les variables analysées
114            alpha_t = 0.            alpha_t = 0.
# Line 132  CONTAINS Line 119  CONTAINS
119    
120         step_rea = 1         step_rea = 1
121         count_no_rea = 0         count_no_rea = 0
122         ncidpl = -99         ncid = -99
123    
124         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux         ! lecture d'un fichier netcdf pour determiner le nombre de niveaux
125         if (guide_u) call nf95_open('u.nc',Nf90_NOWRITe,ncidpl)         if (guide_u) call nf95_open('u.nc',Nf90_NOWRITe,ncid)
126         if (guide_v) call nf95_open('v.nc',nf90_nowrite,ncidpl)         if (guide_v) call nf95_open('v.nc',nf90_nowrite,ncid)
127         if (guide_T) call nf95_open('T.nc',nf90_nowrite,ncidpl)         if (guide_T) call nf95_open('T.nc',nf90_nowrite,ncid)
128         if (guide_Q) call nf95_open('hur.nc',nf90_nowrite, ncidpl)         if (guide_Q) call nf95_open('hur.nc',nf90_nowrite, ncid)
129    
130         IF (ncep) THEN         IF (ncep) THEN
131            call nf95_inq_dimid(ncidpl, 'LEVEL', rid)            call nf95_inq_dimid(ncid, 'LEVEL', dimid)
132         ELSE         ELSE
133            call nf95_inq_dimid(ncidpl, 'PRESSURE', rid)            call nf95_inq_dimid(ncid, 'PRESSURE', dimid)
134         END IF         END IF
135         call nf95_inquire_dimension(ncidpl, rid, nclen=nlev)         call nf95_inquire_dimension(ncid, dimid, nclen=nlev)
136         PRINT *, 'nlev', nlev         PRINT *, 'nlev', nlev
137         call nf95_close(ncidpl)         call nf95_close(ncid)
138         ! Lecture du premier etat des reanalyses.         ! Lecture du premier etat des reanalyses.
139         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &         CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, &
140              masserea2, nlev)              masserea2, nlev)
# Line 171  CONTAINS Line 158  CONTAINS
158         qrea2 = max(qrea2, 0.1)         qrea2 = max(qrea2, 0.1)
159         factt = dtvr * iperiod / daysec         factt = dtvr * iperiod / daysec
160         ztau = factt / max(alpha_t, 1E-10)         ztau = factt / max(alpha_t, 1E-10)
161         CALL wrgrads(igrads, 1, aire, 'aire ', 'aire ')         CALL writefield("aire", aire)
162         CALL wrgrads(igrads, 1, dxdys, 'dxdy ', 'dxdy ')         CALL writefield("dxdys", dxdys)
163         CALL wrgrads(igrads, 1, alpha_u, 'au ', 'au ')         CALL writefield("alpha_u", alpha_u)
164         CALL wrgrads(igrads, 1, alpha_t, 'at ', 'at ')         CALL writefield("alpha_t", alpha_t)
165         CALL wrgrads(igrads, 1, ztau, 'taut ', 'taut ')         CALL writefield("ztau", ztau)
166         CALL wrgrads(igrads, llm, ucov, 'u ', 'u ')         CALL writefield("ucov", ucov)
167         CALL wrgrads(igrads, llm, ucovrea2, 'ua ', 'ua ')         CALL writefield("ucovrea2", ucovrea2)
168         CALL wrgrads(igrads, llm, teta, 'T ', 'T ')         CALL writefield("teta", teta)
169         CALL wrgrads(igrads, llm, tetarea2, 'Ta ', 'Ta ')         CALL writefield("tetarea2", tetarea2)
170         CALL wrgrads(igrads, llm, qrea2, 'Qa ', 'Qa ')         CALL writefield("qrea2", qrea2)
171         CALL wrgrads(igrads, llm, q, 'Q ', 'Q ')         CALL writefield("q", q)
172      ELSE      ELSE
173         count_no_rea = count_no_rea + 1         count_no_rea = count_no_rea + 1
174      END IF      END IF

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

  ViewVC Help
Powered by ViewVC 1.1.21