31 |
C !ROUTINE: MOM_FLUXFORM |
C !ROUTINE: MOM_FLUXFORM |
32 |
|
|
33 |
C !INTERFACE: ========================================================== |
C !INTERFACE: ========================================================== |
34 |
SUBROUTINE MOM_FLUXFORM( |
SUBROUTINE MOM_FLUXFORM( |
35 |
I bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown, |
I bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown, |
36 |
I KappaRU, KappaRV, |
I KappaRU, KappaRV, |
37 |
U fVerU, fVerV, |
U fVerU, fVerV, |
52 |
#include "PARAMS.h" |
#include "PARAMS.h" |
53 |
#include "GRID.h" |
#include "GRID.h" |
54 |
#include "SURFACE.h" |
#include "SURFACE.h" |
55 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
56 |
# include "tamc.h" |
# include "tamc.h" |
57 |
# include "tamc_keys.h" |
# include "tamc_keys.h" |
58 |
# include "MOM_FLUXFORM.h" |
# include "MOM_FLUXFORM.h" |
98 |
C fMer :: meridional fluxes |
C fMer :: meridional fluxes |
99 |
C fVrUp,fVrDw :: vertical viscous fluxes at interface k-1 & k |
C fVrUp,fVrDw :: vertical viscous fluxes at interface k-1 & k |
100 |
INTEGER i,j |
INTEGER i,j |
101 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
102 |
INTEGER imomkey |
INTEGER imomkey |
103 |
#endif |
#endif |
104 |
_RL vF(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL vF(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
110 |
_RL fVrUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL fVrUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
111 |
_RL fVrDw(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL fVrDw(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
112 |
C afFacMom :: Tracer parameters for turning terms on and off. |
C afFacMom :: Tracer parameters for turning terms on and off. |
113 |
C vfFacMom |
C vfFacMom |
114 |
C pfFacMom afFacMom - Advective terms |
C pfFacMom afFacMom - Advective terms |
115 |
C cfFacMom vfFacMom - Eddy viscosity terms |
C cfFacMom vfFacMom - Eddy viscosity terms |
116 |
C mtFacMom pfFacMom - Pressure terms |
C mtFacMom pfFacMom - Pressure terms |
117 |
C cfFacMom - Coriolis terms |
C cfFacMom - Coriolis terms |
169 |
act3 = myThid - 1 |
act3 = myThid - 1 |
170 |
max3 = nTx*nTy |
max3 = nTx*nTy |
171 |
act4 = ikey_dynamics - 1 |
act4 = ikey_dynamics - 1 |
172 |
imomkey = (act0 + 1) |
imomkey = (act0 + 1) |
173 |
& + act1*max0 |
& + act1*max0 |
174 |
& + act2*max0*max1 |
& + act2*max0*max1 |
175 |
& + act3*max0*max1*max2 |
& + act3*max0*max1*max2 |
432 |
C--- Calculate eddy fluxes (dissipation) between cells for zonal flow. |
C--- Calculate eddy fluxes (dissipation) between cells for zonal flow. |
433 |
|
|
434 |
C Bi-harmonic term del^2 U -> v4F |
C Bi-harmonic term del^2 U -> v4F |
435 |
IF (biharmonic) |
IF (biharmonic) |
436 |
& CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid) |
& CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid) |
437 |
|
|
438 |
C Laplacian and bi-harmonic terms, Zonal Fluxes -> fZon |
C Laplacian and bi-harmonic terms, Zonal Fluxes -> fZon |
476 |
ENDIF |
ENDIF |
477 |
#endif |
#endif |
478 |
|
|
479 |
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 |
480 |
IF (no_slip_sides) THEN |
IF (no_slip_sides) THEN |
481 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
482 |
CALL MOM_U_SIDEDRAG( |
CALL MOM_U_SIDEDRAG( |
634 |
IF (momViscosity) THEN |
IF (momViscosity) THEN |
635 |
C--- Calculate eddy fluxes (dissipation) between cells for meridional flow. |
C--- Calculate eddy fluxes (dissipation) between cells for meridional flow. |
636 |
C Bi-harmonic term del^2 V -> v4F |
C Bi-harmonic term del^2 V -> v4F |
637 |
IF (biharmonic) |
IF (biharmonic) |
638 |
& CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid) |
& CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid) |
639 |
|
|
640 |
C Laplacian and bi-harmonic terms, Zonal Fluxes -> fZon |
C Laplacian and bi-harmonic terms, Zonal Fluxes -> fZon |
678 |
ENDIF |
ENDIF |
679 |
#endif |
#endif |
680 |
|
|
681 |
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 |
682 |
IF (no_slip_sides) THEN |
IF (no_slip_sides) THEN |
683 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
684 |
CALL MOM_V_SIDEDRAG( |
CALL MOM_V_SIDEDRAG( |
784 |
ENDIF |
ENDIF |
785 |
|
|
786 |
C-- 3.D Coriolis term (horizontal momentum, Eastward component: -f'*w) |
C-- 3.D Coriolis term (horizontal momentum, Eastward component: -f'*w) |
787 |
IF ( nonHydrostatic.OR.quasiHydrostatic ) THEN |
IF ( use3dCoriolis ) THEN |
788 |
CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,cf,myThid) |
CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,cf,myThid) |
789 |
DO j=jMin,jMax |
DO j=jMin,jMax |
790 |
DO i=iMin,iMax |
DO i=iMin,iMax |