/[MITgcm]/MITgcm/pkg/mom_vecinv/mom_vecinv.F
ViewVC logotype

Annotation of /MITgcm/pkg/mom_vecinv/mom_vecinv.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.14 - (hide annotations) (download)
Sat Feb 7 23:15:47 2004 UTC (20 years, 3 months ago) by dimitri
Branch: MAIN
CVS Tags: hrcube4, checkpoint52j_pre, checkpoint52k_post, hrcube_3, checkpoint52j_post
Changes since 1.13: +4 -3 lines
minor bug fixes for viscA4Grid

1 dimitri 1.14 C $Header: /usr/local/gcmpack/MITgcm/pkg/mom_vecinv/mom_vecinv.F,v 1.13 2004/01/25 00:31:52 dimitri Exp $
2 adcroft 1.2 C $Name: $
3 adcroft 1.1
4 edhill 1.10 #include "PACKAGES_CONFIG.h"
5 adcroft 1.1 #include "CPP_OPTIONS.h"
6    
7     SUBROUTINE MOM_VECINV(
8     I bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,
9 jmc 1.4 I dPhiHydX,dPhiHydY,KappaRU,KappaRV,
10 adcroft 1.1 U fVerU, fVerV,
11 adcroft 1.2 I myCurrentTime, myIter, myThid)
12 adcroft 1.1 C /==========================================================\
13     C | S/R MOM_VECINV |
14     C | o Form the right hand-side of the momentum equation. |
15     C |==========================================================|
16     C | Terms are evaluated one layer at a time working from |
17     C | the bottom to the top. The vertically integrated |
18     C | barotropic flow tendency term is evluated by summing the |
19     C | tendencies. |
20     C | Notes: |
21     C | We have not sorted out an entirely satisfactory formula |
22     C | for the diffusion equation bc with lopping. The present |
23     C | form produces a diffusive flux that does not scale with |
24     C | open-area. Need to do something to solidfy this and to |
25     C | deal "properly" with thin walls. |
26     C \==========================================================/
27     IMPLICIT NONE
28    
29     C == Global variables ==
30     #include "SIZE.h"
31     #include "DYNVARS.h"
32     #include "EEPARAMS.h"
33     #include "PARAMS.h"
34     #include "GRID.h"
35 jmc 1.7 #ifdef ALLOW_TIMEAVE
36     #include "TIMEAVE_STATV.h"
37     #endif
38 adcroft 1.1
39     C == Routine arguments ==
40     C fVerU - Flux of momentum in the vertical
41     C fVerV direction out of the upper face of a cell K
42     C ( flux into the cell above ).
43 jmc 1.4 C dPhiHydX,Y :: Gradient (X & Y dir.) of Hydrostatic Potential
44 adcroft 1.1 C bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation
45     C results will be set.
46     C kUp, kDown - Index for upper and lower layers.
47     C myThid - Instance number for this innvocation of CALC_MOM_RHS
48 jmc 1.4 _RL dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
49     _RL dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
50 adcroft 1.1 _RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
51     _RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
52     _RL fVerU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
53     _RL fVerV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
54     INTEGER kUp,kDown
55 adcroft 1.2 _RL myCurrentTime
56     INTEGER myIter
57 adcroft 1.1 INTEGER myThid
58     INTEGER bi,bj,iMin,iMax,jMin,jMax
59    
60 edhill 1.11 #ifdef ALLOW_MOM_VECINV
61 jmc 1.7
62 adcroft 1.2 C == Functions ==
63     LOGICAL DIFFERENT_MULTIPLE
64     EXTERNAL DIFFERENT_MULTIPLE
65    
66 adcroft 1.1 C == Local variables ==
67     _RL aF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
68     _RL vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
69     _RL vrF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
70     _RL uCf (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
71     _RL vCf (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
72     _RL mT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
73     _RL pF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
74     _RL del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
75     _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
76 adcroft 1.3 _RL tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
77     _RL strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
78 adcroft 1.1 _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
79     _RS r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
80     _RS xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
81     _RS yA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
82     _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
83     _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
84     _RL dStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
85     _RL zStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
86     _RL uDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
87     _RL vDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
88     C I,J,K - Loop counters
89     INTEGER i,j,k
90     C rVelMaskOverride - Factor for imposing special surface boundary conditions
91     C ( set according to free-surface condition ).
92     C hFacROpen - Lopped cell factos used tohold fraction of open
93     C hFacRClosed and closed cell wall.
94     _RL rVelMaskOverride
95     C xxxFac - On-off tracer parameters used for switching terms off.
96     _RL uDudxFac
97     _RL AhDudxFac
98     _RL A4DuxxdxFac
99     _RL vDudyFac
100     _RL AhDudyFac
101     _RL A4DuyydyFac
102     _RL rVelDudrFac
103     _RL ArDudrFac
104     _RL fuFac
105     _RL phxFac
106     _RL mtFacU
107     _RL uDvdxFac
108     _RL AhDvdxFac
109     _RL A4DvxxdxFac
110     _RL vDvdyFac
111     _RL AhDvdyFac
112     _RL A4DvyydyFac
113     _RL rVelDvdrFac
114     _RL ArDvdrFac
115     _RL fvFac
116     _RL phyFac
117     _RL vForcFac
118     _RL mtFacV
119     _RL wVelBottomOverride
120     LOGICAL bottomDragTerms
121     _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
122     _RL omega3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
123     _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
124     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
125    
126 heimbach 1.9 #ifdef ALLOW_AUTODIFF_TAMC
127     C-- only the kDown part of fverU/V is set in this subroutine
128     C-- the kUp is still required
129     C-- In the case of mom_fluxform Kup is set as well
130     C-- (at least in part)
131     fVerU(1,1,kUp) = fVerU(1,1,kUp)
132     fVerV(1,1,kUp) = fVerV(1,1,kUp)
133     #endif
134    
135 adcroft 1.1 rVelMaskOverride=1.
136     IF ( k .EQ. 1 ) rVelMaskOverride=freeSurfFac
137     wVelBottomOverride=1.
138     IF (k.EQ.Nr) wVelBottomOverride=0.
139    
140     C Initialise intermediate terms
141     DO J=1-OLy,sNy+OLy
142     DO I=1-OLx,sNx+OLx
143     aF(i,j) = 0.
144     vF(i,j) = 0.
145     vrF(i,j) = 0.
146     uCf(i,j) = 0.
147     vCf(i,j) = 0.
148     mT(i,j) = 0.
149     pF(i,j) = 0.
150     del2u(i,j) = 0.
151     del2v(i,j) = 0.
152     dStar(i,j) = 0.
153     zStar(i,j) = 0.
154     uDiss(i,j) = 0.
155     vDiss(i,j) = 0.
156     vort3(i,j) = 0.
157     omega3(i,j) = 0.
158     ke(i,j) = 0.
159 heimbach 1.8 #ifdef ALLOW_AUTODIFF_TAMC
160     strain(i,j) = 0. _d 0
161     tension(i,j) = 0. _d 0
162     #endif
163 adcroft 1.1 ENDDO
164     ENDDO
165    
166     C-- Term by term tracer parmeters
167     C o U momentum equation
168     uDudxFac = afFacMom*1.
169     AhDudxFac = vfFacMom*1.
170     A4DuxxdxFac = vfFacMom*1.
171     vDudyFac = afFacMom*1.
172     AhDudyFac = vfFacMom*1.
173     A4DuyydyFac = vfFacMom*1.
174     rVelDudrFac = afFacMom*1.
175     ArDudrFac = vfFacMom*1.
176     mTFacU = mtFacMom*1.
177     fuFac = cfFacMom*1.
178     phxFac = pfFacMom*1.
179     C o V momentum equation
180     uDvdxFac = afFacMom*1.
181     AhDvdxFac = vfFacMom*1.
182     A4DvxxdxFac = vfFacMom*1.
183     vDvdyFac = afFacMom*1.
184     AhDvdyFac = vfFacMom*1.
185     A4DvyydyFac = vfFacMom*1.
186     rVelDvdrFac = afFacMom*1.
187     ArDvdrFac = vfFacMom*1.
188     mTFacV = mtFacMom*1.
189     fvFac = cfFacMom*1.
190     phyFac = pfFacMom*1.
191     vForcFac = foFacMom*1.
192    
193     IF ( no_slip_bottom
194     & .OR. bottomDragQuadratic.NE.0.
195     & .OR. bottomDragLinear.NE.0.) THEN
196     bottomDragTerms=.TRUE.
197     ELSE
198     bottomDragTerms=.FALSE.
199     ENDIF
200    
201     C-- with stagger time stepping, grad Phi_Hyp is directly incoporated in TIMESTEP
202     IF (staggerTimeStep) THEN
203     phxFac = 0.
204     phyFac = 0.
205     ENDIF
206    
207     C-- Calculate open water fraction at vorticity points
208     CALL MOM_CALC_HFACZ(bi,bj,k,hFacZ,r_hFacZ,myThid)
209    
210     C---- Calculate common quantities used in both U and V equations
211     C Calculate tracer cell face open areas
212     DO j=1-OLy,sNy+OLy
213     DO i=1-OLx,sNx+OLx
214     xA(i,j) = _dyG(i,j,bi,bj)
215     & *drF(k)*_hFacW(i,j,k,bi,bj)
216     yA(i,j) = _dxG(i,j,bi,bj)
217     & *drF(k)*_hFacS(i,j,k,bi,bj)
218     ENDDO
219     ENDDO
220    
221     C Make local copies of horizontal flow field
222     DO j=1-OLy,sNy+OLy
223     DO i=1-OLx,sNx+OLx
224     uFld(i,j) = uVel(i,j,k,bi,bj)
225     vFld(i,j) = vVel(i,j,k,bi,bj)
226     ENDDO
227     ENDDO
228    
229 jmc 1.7 C note (jmc) : Dissipation and Vort3 advection do not necesary
230     C use the same maskZ (and hFacZ) => needs 2 call(s)
231     c CALL MOM_VI_HFACZ_DISS(bi,bj,k,hFacZ,r_hFacZ,myThid)
232    
233 adcroft 1.1 CALL MOM_VI_CALC_KE(bi,bj,k,uFld,vFld,KE,myThid)
234    
235     CALL MOM_VI_CALC_HDIV(bi,bj,k,uFld,vFld,hDiv,myThid)
236    
237     CALL MOM_VI_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
238    
239 jmc 1.5 c CALL MOM_VI_CALC_ABSVORT3(bi,bj,k,vort3,omega3,myThid)
240 adcroft 1.1
241     IF (momViscosity) THEN
242     C Calculate del^2 u and del^2 v for bi-harmonic term
243 dimitri 1.14 IF (viscA4.NE.0. .OR. viscA4Grid.NE.0.) THEN
244 adcroft 1.2 CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ,
245     O del2u,del2v,
246     & myThid)
247     CALL MOM_VI_CALC_HDIV(bi,bj,k,del2u,del2v,dStar,myThid)
248     CALL MOM_VI_CALC_RELVORT3(
249     & bi,bj,k,del2u,del2v,hFacZ,zStar,myThid)
250     ENDIF
251 adcroft 1.1 C Calculate dissipation terms for U and V equations
252 adcroft 1.2 C in terms of vorticity and divergence
253 dimitri 1.14 IF (viscAh.NE.0. .OR. viscA4.NE.0. .OR.
254     & viscAhGrid.NE.0. .OR. viscA4Grid.NE.0. ) THEN
255 adcroft 1.2 CALL MOM_VI_HDISSIP(bi,bj,k,hDiv,vort3,hFacZ,dStar,zStar,
256     O uDiss,vDiss,
257     & myThid)
258     ENDIF
259 adcroft 1.3 C or in terms of tension and strain
260     IF (viscAstrain.NE.0. .OR. viscAtension.NE.0.) THEN
261     CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,
262     O tension,
263     I myThid)
264     CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,
265     O strain,
266     I myThid)
267     CALL MOM_HDISSIP(bi,bj,k,
268     I tension,strain,hFacZ,viscAtension,viscAstrain,
269     O uDiss,vDiss,
270     I myThid)
271     ENDIF
272 adcroft 1.1 ENDIF
273    
274 jmc 1.7 C- Return to standard hfacZ (min-4) and mask vort3 accordingly:
275     c CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid)
276    
277 adcroft 1.1 C---- Zonal momentum equation starts here
278    
279     C-- Vertical flux (fVer is at upper face of "u" cell)
280    
281     C Eddy component of vertical flux (interior component only) -> vrF
282     IF (momViscosity.AND..NOT.implicitViscosity)
283     & CALL MOM_U_RVISCFLUX(bi,bj,k,uVel,KappaRU,vrF,myThid)
284    
285     C Combine fluxes
286     DO j=jMin,jMax
287     DO i=iMin,iMax
288     fVerU(i,j,kDown) = ArDudrFac*vrF(i,j)
289     ENDDO
290     ENDDO
291    
292     C-- Tendency is minus divergence of the fluxes + coriolis + pressure term
293     DO j=2-Oly,sNy+Oly-1
294     DO i=2-Olx,sNx+Olx-1
295     gU(i,j,k,bi,bj) = uDiss(i,j)
296     & -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
297     & *recip_rAw(i,j,bi,bj)
298     & *(
299     & +fVerU(i,j,kUp)*rkFac - fVerU(i,j,kDown)*rkFac
300     & )
301 jmc 1.4 & - phxFac*dPhiHydX(i,j)
302 adcroft 1.1 ENDDO
303     ENDDO
304    
305     C-- No-slip and drag BCs appear as body forces in cell abutting topography
306     IF (momViscosity.AND.no_slip_sides) THEN
307     C- No-slip BCs impose a drag at walls...
308     CALL MOM_U_SIDEDRAG(bi,bj,k,uFld,del2u,hFacZ,vF,myThid)
309     DO j=jMin,jMax
310     DO i=iMin,iMax
311     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+vF(i,j)
312     ENDDO
313     ENDDO
314     ENDIF
315 heimbach 1.8
316 adcroft 1.1 C- No-slip BCs impose a drag at bottom
317     IF (momViscosity.AND.bottomDragTerms) THEN
318     CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)
319     DO j=jMin,jMax
320     DO i=iMin,iMax
321     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+vF(i,j)
322     ENDDO
323     ENDDO
324     ENDIF
325    
326     C-- Metric terms for curvilinear grid systems
327     c IF (usingSphericalPolarMTerms) THEN
328     C o Spherical polar grid metric terms
329     c CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)
330     c DO j=jMin,jMax
331     c DO i=iMin,iMax
332     c gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mTFacU*mT(i,j)
333     c ENDDO
334     c ENDDO
335     c ENDIF
336    
337     C---- Meridional momentum equation starts here
338    
339     C-- Vertical flux (fVer is at upper face of "v" cell)
340    
341     C Eddy component of vertical flux (interior component only) -> vrF
342     IF (momViscosity.AND..NOT.implicitViscosity)
343     & CALL MOM_V_RVISCFLUX(bi,bj,k,vVel,KappaRV,vrf,myThid)
344    
345     C Combine fluxes -> fVerV
346     DO j=jMin,jMax
347     DO i=iMin,iMax
348     fVerV(i,j,kDown) = ArDvdrFac*vrF(i,j)
349     ENDDO
350     ENDDO
351    
352     C-- Tendency is minus divergence of the fluxes + coriolis + pressure term
353     DO j=jMin,jMax
354     DO i=iMin,iMax
355     gV(i,j,k,bi,bj) = vDiss(i,j)
356     & -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
357     & *recip_rAs(i,j,bi,bj)
358     & *(
359     & +fVerV(i,j,kUp)*rkFac - fVerV(i,j,kDown)*rkFac
360     & )
361 jmc 1.4 & - phyFac*dPhiHydY(i,j)
362 adcroft 1.1 ENDDO
363     ENDDO
364    
365     C-- No-slip and drag BCs appear as body forces in cell abutting topography
366     IF (momViscosity.AND.no_slip_sides) THEN
367     C- No-slip BCs impose a drag at walls...
368     CALL MOM_V_SIDEDRAG(bi,bj,k,vFld,del2v,hFacZ,vF,myThid)
369     DO j=jMin,jMax
370     DO i=iMin,iMax
371     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vF(i,j)
372     ENDDO
373     ENDDO
374     ENDIF
375     C- No-slip BCs impose a drag at bottom
376     IF (momViscosity.AND.bottomDragTerms) THEN
377     CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid)
378     DO j=jMin,jMax
379     DO i=iMin,iMax
380     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vF(i,j)
381     ENDDO
382     ENDDO
383     ENDIF
384    
385     C-- Metric terms for curvilinear grid systems
386     c IF (usingSphericalPolarMTerms) THEN
387     C o Spherical polar grid metric terms
388     c CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)
389     c DO j=jMin,jMax
390     c DO i=iMin,iMax
391     c gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mTFacV*mT(i,j)
392     c ENDDO
393     c ENDDO
394     c ENDIF
395    
396 jmc 1.5 C-- Horizontal Coriolis terms
397 jmc 1.6 IF (useCoriolis .AND. .NOT.useCDscheme) THEN
398 jmc 1.7 CALL MOM_VI_CORIOLIS(bi,bj,k,uFld,vFld,omega3,hFacZ,r_hFacZ,
399 jmc 1.5 & uCf,vCf,myThid)
400     DO j=jMin,jMax
401     DO i=iMin,iMax
402     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
403     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
404     ENDDO
405 adcroft 1.1 ENDDO
406 jmc 1.5 ENDIF
407 adcroft 1.1
408 jmc 1.5 IF (momAdvection) THEN
409     C-- Horizontal advection of relative vorticity
410     c CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,r_hFacZ,uCf,myThid)
411 jmc 1.7 CALL MOM_VI_U_CORIOLIS(bi,bj,k,vFld,vort3,hFacZ,r_hFacZ,
412     & uCf,myThid)
413 jmc 1.5 c CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K,vFld,vort3,r_hFacZ,uCf,myThid)
414     DO j=jMin,jMax
415     DO i=iMin,iMax
416     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
417     ENDDO
418 adcroft 1.1 ENDDO
419 jmc 1.5 c CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,r_hFacZ,vCf,myThid)
420 jmc 1.7 CALL MOM_VI_V_CORIOLIS(bi,bj,k,uFld,vort3,hFacZ,r_hFacZ,
421     & vCf,myThid)
422 jmc 1.5 c CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3,r_hFacZ,vCf,myThid)
423     DO j=jMin,jMax
424     DO i=iMin,iMax
425     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
426     ENDDO
427 adcroft 1.1 ENDDO
428    
429 jmc 1.7 #ifdef ALLOW_TIMEAVE
430 dimitri 1.13 #ifndef HRCUBE
431 jmc 1.7 IF (taveFreq.GT.0.) THEN
432     CALL TIMEAVE_CUMUL_1K1T(uZetatave,vCf,deltaTClock,
433     & Nr, k, bi, bj, myThid)
434     CALL TIMEAVE_CUMUL_1K1T(vZetatave,uCf,deltaTClock,
435     & Nr, k, bi, bj, myThid)
436     ENDIF
437 dimitri 1.13 #endif /* ALLOW_TIMEAVE */
438     #endif /* ndef HRCUBE */
439 jmc 1.7
440 jmc 1.5 C-- Vertical shear terms (-w*du/dr & -w*dv/dr)
441 jmc 1.12 IF ( .NOT. momImplVertAdv ) THEN
442     CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)
443     DO j=jMin,jMax
444     DO i=iMin,iMax
445     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
446     ENDDO
447 jmc 1.5 ENDDO
448 jmc 1.12 CALL MOM_VI_V_VERTSHEAR(bi,bj,K,vVel,wVel,vCf,myThid)
449     DO j=jMin,jMax
450     DO i=iMin,iMax
451     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
452     ENDDO
453 jmc 1.5 ENDDO
454 jmc 1.12 ENDIF
455 adcroft 1.1
456     C-- Bernoulli term
457 jmc 1.5 CALL MOM_VI_U_GRAD_KE(bi,bj,K,KE,uCf,myThid)
458     DO j=jMin,jMax
459     DO i=iMin,iMax
460     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
461     ENDDO
462     ENDDO
463     CALL MOM_VI_V_GRAD_KE(bi,bj,K,KE,vCf,myThid)
464     DO j=jMin,jMax
465     DO i=iMin,iMax
466     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
467     ENDDO
468 adcroft 1.1 ENDDO
469 jmc 1.5 C-- end if momAdvection
470     ENDIF
471    
472     C-- Set du/dt & dv/dt on boundaries to zero
473 adcroft 1.1 DO j=jMin,jMax
474     DO i=iMin,iMax
475 jmc 1.5 gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)*_maskW(i,j,k,bi,bj)
476     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)*_maskS(i,j,k,bi,bj)
477 adcroft 1.1 ENDDO
478     ENDDO
479 jmc 1.5
480 adcroft 1.2
481     IF (
482     & DIFFERENT_MULTIPLE(diagFreq,myCurrentTime,
483     & myCurrentTime-deltaTClock)
484     & ) THEN
485 adcroft 1.3 CALL WRITE_LOCAL_RL('Ds','I10',1,strain,bi,bj,k,myIter,myThid)
486     CALL WRITE_LOCAL_RL('Dt','I10',1,tension,bi,bj,k,myIter,myThid)
487 adcroft 1.2 CALL WRITE_LOCAL_RL('fV','I10',1,uCf,bi,bj,k,myIter,myThid)
488     CALL WRITE_LOCAL_RL('fU','I10',1,vCf,bi,bj,k,myIter,myThid)
489     CALL WRITE_LOCAL_RL('Du','I10',1,uDiss,bi,bj,k,myIter,myThid)
490     CALL WRITE_LOCAL_RL('Dv','I10',1,vDiss,bi,bj,k,myIter,myThid)
491 adcroft 1.3 CALL WRITE_LOCAL_RL('Z3','I10',1,vort3,bi,bj,k,myIter,myThid)
492 jmc 1.5 c CALL WRITE_LOCAL_RL('W3','I10',1,omega3,bi,bj,k,myIter,myThid)
493 adcroft 1.3 CALL WRITE_LOCAL_RL('KE','I10',1,KE,bi,bj,k,myIter,myThid)
494     CALL WRITE_LOCAL_RL('D','I10',1,hdiv,bi,bj,k,myIter,myThid)
495 adcroft 1.1 ENDIF
496 jmc 1.7
497 edhill 1.11 #endif /* ALLOW_MOM_VECINV */
498 adcroft 1.1
499     RETURN
500     END

  ViewVC Help
Powered by ViewVC 1.1.22