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

Diff of /trunk/dyn3d/bilan_dyn.f

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

revision 134 by guez, Wed Apr 29 15:47:56 2015 UTC revision 161 by guez, Fri Jul 24 14:27:59 2015 UTC
# Line 9  contains Line 9  contains
9    
10      ! From LMDZ4/libf/dyn3d/bilan_dyn.F, version 1.5 2005/03/16 10:12:17      ! From LMDZ4/libf/dyn3d/bilan_dyn.F, version 1.5 2005/03/16 10:12:17
11    
12      ! Sous-programme consacré à des diagnostics dynamiques de base.      ! Sous-programme consacr\'e \`a des diagnostics dynamiques de
13      ! De façon générale, les moyennes des scalaires Q sont pondérées      ! base.  De fa\c{}con g\'en\'erale, les moyennes des scalaires Q
14      ! par la masse. Les flux de masse sont, eux, simplement moyennés.      ! sont pond\'er\'ees par la masse. Les flux de masse sont, eux,
15        ! simplement moyenn\'es.
16    
17      USE comconst, ONLY: cpp      USE comconst, ONLY: cpp
18      USE comgeom, ONLY: constang_2d, cu_2d, cv_2d      USE comgeom, ONLY: constang_2d, cu_2d, cv_2d
19        use covcont_m, only: covcont
20      USE dimens_m, ONLY: iim, jjm, llm      USE dimens_m, ONLY: iim, jjm, llm
21      USE histwrite_m, ONLY: histwrite      USE histwrite_m, ONLY: histwrite
22      use init_dynzon_m, only: ncum, fileid, znom, ntr, nq, nom      use init_dynzon_m, only: ncum, fileid, znom, ntr, nq, nom
# Line 37  contains Line 39  contains
39      integer:: itau = 0      integer:: itau = 0
40      real qy, factv(jjm, llm)      real qy, factv(jjm, llm)
41    
42      ! Variables dynamiques intermédiaires      ! Variables dynamiques interm\'ediaires
43      REAL vcont(iip1, jjm, llm), ucont(iip1, jjp1, llm)      REAL vcont(iip1, jjm, llm), ucont(iip1, jjp1, llm)
44      REAL ang(iip1, jjp1, llm), unat(iip1, jjp1, llm)      REAL ang(iip1, jjp1, llm), unat(iip1, jjp1, llm)
45      REAL massebx(iip1, jjp1, llm), masseby(iip1, jjm, llm)      REAL massebx(iip1, jjp1, llm), masseby(iip1, jjm, llm)
46      REAL ecin(iip1, jjp1, llm)      REAL ecin(iip1, jjp1, llm)
47    
48      ! Champ contenant les scalaires advectés      ! Champ contenant les scalaires advect\'es
49      real Q(iip1, jjp1, llm, nQ)      real Q(iip1, jjp1, llm, nQ)
50    
51      ! Champs cumulés      ! Champs cumul\'es
52      real, save:: ps_cum(iip1, jjp1)      real, save:: ps_cum(iip1, jjp1)
53      real, save:: masse_cum(iip1, jjp1, llm)      real, save:: masse_cum(iip1, jjp1, llm)
54      real, save:: flux_u_cum(iip1, jjp1, llm)      real, save:: flux_u_cum(iip1, jjp1, llm)
# Line 69  contains Line 71  contains
71    
72      ! Calcul des champs dynamiques      ! Calcul des champs dynamiques
73    
74      ! Énergie cinétique      ! \'Energie cin\'etique
75      ucont = 0      ucont = 0
76      CALL covcont(llm, ucov, vcov, ucont, vcont)      CALL covcont(llm, ucov, vcov, ucont, vcont)
77      CALL enercin(vcov, ucov, vcont, ucont, ecin)      CALL enercin(vcov, ucov, vcont, ucont, ecin)
78    
79      ! moment cinétique      ! moment cin\'etique
80      forall (l = 1: llm)      forall (l = 1: llm)
81         ang(:, :, l) = ucov(:, :, l) + constang_2d         ang(:, :, l) = ucov(:, :, l) + constang_2d
82         unat(:, :, l) = ucont(:, :, l) * cu_2d         unat(:, :, l) = ucont(:, :, l) * cu_2d
# Line 117  contains Line 119  contains
119           + flux_u(i, :, :) * 0.5 * (Q(i, :, :, iQ) + Q(i + 1, :, :, iQ))           + flux_u(i, :, :) * 0.5 * (Q(i, :, :, iQ) + Q(i + 1, :, :, iQ))
120      flux_uQ_cum(iip1, :, :, :) = flux_uQ_cum(1, :, :, :)      flux_uQ_cum(iip1, :, :, :) = flux_uQ_cum(1, :, :, :)
121    
122      ! Flux méridien      ! Flux m\'eridien
123      forall (iQ = 1: nQ, j = 1: jjm) flux_vQ_cum(:, j, :, iQ) &      forall (iQ = 1: nQ, j = 1: jjm) flux_vQ_cum(:, j, :, iQ) &
124           = flux_vQ_cum(:, j, :, iQ) &           = flux_vQ_cum(:, j, :, iQ) &
125           + flux_v(:, j, :) * 0.5 * (Q(:, j, :, iQ) + Q(:, j + 1, :, iQ))           + flux_v(:, j, :) * 0.5 * (Q(:, j, :, iQ) + Q(:, j + 1, :, iQ))
# Line 132  contains Line 134  contains
134         flux_uQ_cum = flux_uQ_cum / ncum         flux_uQ_cum = flux_uQ_cum / ncum
135         flux_vQ_cum = flux_vQ_cum / ncum         flux_vQ_cum = flux_vQ_cum / ncum
136    
137         ! Transport méridien         ! Transport m\'eridien
138    
139         ! Cumul zonal des masses des mailles         ! Cumul zonal des masses des mailles
140    
# Line 176  contains Line 178  contains
178                  vq(j, l, istn, iQ) = vqtmp(j, l) - vq(j, l, immc, iQ)                  vq(j, l, istn, iQ) = vqtmp(j, l) - vq(j, l, immc, iQ)
179               enddo               enddo
180            enddo            enddo
181            ! Fonction de courant méridienne pour la quantité Q            ! Fonction de courant m\'eridienne pour la quantit\'e Q
182            do l = llm, 1, -1            do l = llm, 1, -1
183               do j = 1, jjm               do j = 1, jjm
184                  psiQ(j, l, iQ) = psiQ(j, l + 1, iQ) + vq(j, l, itot, iQ)                  psiQ(j, l, iQ) = psiQ(j, l + 1, iQ) + vq(j, l, itot, iQ)
# Line 184  contains Line 186  contains
186            enddo            enddo
187         enddo         enddo
188    
189         ! Fonction de courant pour la circulation méridienne moyenne         ! Fonction de courant pour la circulation m\'eridienne moyenne
190         psi = 0.         psi = 0.
191         do l = llm, 1, -1         do l = llm, 1, -1
192            do j = 1, jjm            do j = 1, jjm
# Line 206  contains Line 208  contains
208         psi = psi * 1e-9         psi = psi * 1e-9
209         call histwrite(fileid, 'psi', itau, psi(:, :llm))         call histwrite(fileid, 'psi', itau, psi(:, :llm))
210    
211         ! Intégrale verticale         ! Int\'egrale verticale
212    
213         forall (iQ = 1: nQ, itr = 2: ntr) avq(:, itr, iQ) &         forall (iQ = 1: nQ, itr = 2: ntr) avq(:, itr, iQ) &
214              = sum(vq(:, :, itr, iQ) * zmasse, dim=2) / cv_2d(1, :)              = sum(vq(:, :, itr, iQ) * zmasse, dim=2) / cv_2d(1, :)

Legend:
Removed from v.134  
changed lines
  Added in v.161

  ViewVC Help
Powered by ViewVC 1.1.21