2 |
C $Name$ |
C $Name$ |
3 |
|
|
4 |
#include "MOM_VECINV_OPTIONS.h" |
#include "MOM_VECINV_OPTIONS.h" |
5 |
|
#ifdef ALLOW_MOM_COMMON |
6 |
|
# include "MOM_COMMON_OPTIONS.h" |
7 |
|
#endif |
8 |
|
|
9 |
SUBROUTINE MOM_VECINV( |
SUBROUTINE MOM_VECINV( |
10 |
I bi,bj,k,iMin,iMax,jMin,jMax, |
I bi,bj,k,iMin,iMax,jMin,jMax, |
32 |
|
|
33 |
C == Global variables == |
C == Global variables == |
34 |
#include "SIZE.h" |
#include "SIZE.h" |
|
#include "DYNVARS.h" |
|
35 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
36 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
#ifdef ALLOW_MNC |
|
|
#include "MNC_PARAMS.h" |
|
|
#endif |
|
37 |
#include "GRID.h" |
#include "GRID.h" |
38 |
|
#include "DYNVARS.h" |
39 |
|
#ifdef ALLOW_MOM_COMMON |
40 |
|
# include "MOM_VISC.h" |
41 |
|
#endif |
42 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
43 |
#include "TIMEAVE_STATV.h" |
# include "TIMEAVE_STATV.h" |
44 |
|
#endif |
45 |
|
#ifdef ALLOW_MNC |
46 |
|
# include "MNC_PARAMS.h" |
47 |
#endif |
#endif |
48 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
49 |
# include "tamc.h" |
# include "tamc.h" |
117 |
_RL sideMaskFac |
_RL sideMaskFac |
118 |
LOGICAL bottomDragTerms |
LOGICAL bottomDragTerms |
119 |
LOGICAL writeDiag |
LOGICAL writeDiag |
|
LOGICAL harmonic,biharmonic,useVariableViscosity |
|
120 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
121 |
INTEGER imomkey |
INTEGER imomkey |
122 |
#endif |
#endif |
273 |
ENDDO |
ENDDO |
274 |
|
|
275 |
C-- Calculate Viscosities |
C-- Calculate Viscosities |
276 |
CALL MOM_CALC_VISC( |
CALL MOM_CALC_VISC( bi, bj, k, |
277 |
I bi,bj,k, |
O viscAh_Z, viscAh_D, viscA4_Z, viscA4_D, |
278 |
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D, |
I hDiv, vort3, tension, strain, KE, hfacZ, |
279 |
O harmonic,biharmonic,useVariableViscosity, |
I myThid ) |
|
I hDiv,vort3,tension,strain,KE,hfacZ, |
|
|
I myThid) |
|
280 |
|
|
281 |
C Calculate del^2 u and del^2 v for bi-harmonic term |
C Calculate del^2 u and del^2 v for bi-harmonic term |
282 |
IF (biharmonic) THEN |
IF (useBiharmonicVisc) THEN |
283 |
CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ, |
CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ, |
284 |
O del2u,del2v, |
O del2u,del2v, |
285 |
& myThid) |
& myThid) |
326 |
IF ( hFacZ(i,j).EQ.0. ) strain(i,j) = 0. _d 0 |
IF ( hFacZ(i,j).EQ.0. ) strain(i,j) = 0. _d 0 |
327 |
ENDDO |
ENDDO |
328 |
ENDDO |
ENDDO |
329 |
CALL MOM_HDISSIP(bi,bj,k,hDiv,vort3,tension,strain,KE, |
CALL MOM_HDISSIP( bi, bj, k, |
330 |
I hFacZ, |
I hDiv, vort3, tension, strain, KE, hFacZ, |
331 |
I viscAh_Z,viscAh_D,viscA4_Z,viscA4_D, |
I viscAh_Z, viscAh_D, viscA4_Z, viscA4_D, |
332 |
I harmonic,biharmonic,useVariableViscosity, |
I useHarmonicVisc, useBiharmonicVisc, useVariableVisc, |
333 |
O guDiss,gvDiss, |
O guDiss, gvDiss, |
334 |
I myThid) |
I myThid ) |
335 |
ELSE |
ELSE |
336 |
C in terms of vorticity and divergence |
C in terms of vorticity and divergence |
337 |
CALL MOM_VI_HDISSIP(bi,bj,k,hDiv,vort3,tension,strain,KE, |
CALL MOM_VI_HDISSIP( bi, bj, k, |
338 |
I hFacZ,dStar,zStar, |
I hDiv, vort3, tension, strain, KE, hFacZ,dStar,zStar, |
339 |
I viscAh_Z,viscAh_D,viscA4_Z,viscA4_D, |
I viscAh_Z, viscAh_D, viscA4_Z, viscA4_D, |
340 |
I harmonic,biharmonic,useVariableViscosity, |
I useHarmonicVisc, useBiharmonicVisc, useVariableVisc, |
341 |
O guDiss,gvDiss, |
O guDiss, gvDiss, |
342 |
& myThid) |
& myThid ) |
343 |
ENDIF |
ENDIF |
344 |
C-- if (momViscosity) end of block. |
C-- if (momViscosity) end of block. |
345 |
ENDIF |
ENDIF |
376 |
C-- No-slip and drag BCs appear as body forces in cell abutting topography |
C-- No-slip and drag BCs appear as body forces in cell abutting topography |
377 |
IF (momViscosity.AND.no_slip_sides) THEN |
IF (momViscosity.AND.no_slip_sides) THEN |
378 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
379 |
CALL MOM_U_SIDEDRAG( |
CALL MOM_U_SIDEDRAG( bi, bj, k, |
380 |
I bi,bj,k, |
I uFld, del2u, hFacZ, |
381 |
I uFld, del2u, hFacZ, |
I viscAh_Z, viscA4_Z, |
382 |
I viscAh_Z,viscA4_Z, |
I useHarmonicVisc, useBiharmonicVisc, useVariableVisc, |
383 |
I harmonic,biharmonic,useVariableViscosity, |
O vF, |
384 |
O vF, |
I myThid ) |
|
I myThid) |
|
385 |
DO j=jMin,jMax |
DO j=jMin,jMax |
386 |
DO i=iMin,iMax |
DO i=iMin,iMax |
387 |
guDiss(i,j) = guDiss(i,j)+vF(i,j) |
guDiss(i,j) = guDiss(i,j)+vF(i,j) |
438 |
C-- No-slip and drag BCs appear as body forces in cell abutting topography |
C-- No-slip and drag BCs appear as body forces in cell abutting topography |
439 |
IF (momViscosity.AND.no_slip_sides) THEN |
IF (momViscosity.AND.no_slip_sides) THEN |
440 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
441 |
CALL MOM_V_SIDEDRAG( |
CALL MOM_V_SIDEDRAG( bi, bj, k, |
442 |
I bi,bj,k, |
I vFld, del2v, hFacZ, |
443 |
I vFld, del2v, hFacZ, |
I viscAh_Z, viscA4_Z, |
444 |
I viscAh_Z,viscA4_Z, |
I useHarmonicVisc, useBiharmonicVisc, useVariableVisc, |
445 |
I harmonic,biharmonic,useVariableViscosity, |
O vF, |
446 |
O vF, |
I myThid ) |
|
I myThid) |
|
447 |
DO j=jMin,jMax |
DO j=jMin,jMax |
448 |
DO i=iMin,iMax |
DO i=iMin,iMax |
449 |
gvDiss(i,j) = gvDiss(i,j)+vF(i,j) |
gvDiss(i,j) = gvDiss(i,j)+vF(i,j) |