| 158 |
_RL sideMaskFac |
_RL sideMaskFac |
| 159 |
LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity |
LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity |
| 160 |
CEOP |
CEOP |
| 161 |
|
#ifdef MOM_BOUNDARY_CONSERVE |
| 162 |
|
COMMON / MOM_FLUXFORM_LOCAL / uBnd, vBnd |
| 163 |
|
_RL uBnd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
| 164 |
|
_RL vBnd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
| 165 |
|
#endif /* MOM_BOUNDARY_CONSERVE */ |
| 166 |
|
|
| 167 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
| 168 |
act0 = k - 1 |
act0 = k - 1 |
| 305 |
C--- First call (k=1): compute vertical adv. flux fVerU(kUp) & fVerV(kUp) |
C--- First call (k=1): compute vertical adv. flux fVerU(kUp) & fVerV(kUp) |
| 306 |
IF (momAdvection.AND.k.EQ.1) THEN |
IF (momAdvection.AND.k.EQ.1) THEN |
| 307 |
|
|
| 308 |
|
#ifdef MOM_BOUNDARY_CONSERVE |
| 309 |
|
CALL MOM_UV_BOUNDARY( bi, bj, k, |
| 310 |
|
I uVel, vVel, |
| 311 |
|
O uBnd(1-OLx,1-OLy,k,bi,bj), |
| 312 |
|
O vBnd(1-OLx,1-OLy,k,bi,bj), |
| 313 |
|
I myTime, myIter, myThid ) |
| 314 |
|
#endif /* MOM_BOUNDARY_CONSERVE */ |
| 315 |
|
|
| 316 |
C- Calculate vertical transports above U & V points (West & South face): |
C- Calculate vertical transports above U & V points (West & South face): |
| 317 |
|
|
| 318 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
| 349 |
I myTime, myIter, myThid) |
I myTime, myIter, myThid) |
| 350 |
ENDIF |
ENDIF |
| 351 |
|
|
| 352 |
|
#ifdef MOM_BOUNDARY_CONSERVE |
| 353 |
|
IF ( momAdvection .AND. k.LT.Nr ) THEN |
| 354 |
|
CALL MOM_UV_BOUNDARY( bi, bj, k+1, |
| 355 |
|
I uVel, vVel, |
| 356 |
|
O uBnd(1-OLx,1-OLy,k+1,bi,bj), |
| 357 |
|
O vBnd(1-OLx,1-OLy,k+1,bi,bj), |
| 358 |
|
I myTime, myIter, myThid ) |
| 359 |
|
ENDIF |
| 360 |
|
#endif /* MOM_BOUNDARY_CONSERVE */ |
| 361 |
|
|
| 362 |
IF (momViscosity) THEN |
IF (momViscosity) THEN |
| 363 |
CALL MOM_CALC_VISC( |
CALL MOM_CALC_VISC( |
| 364 |
I bi,bj,k, |
I bi,bj,k, |
| 375 |
IF (momAdvection) THEN |
IF (momAdvection) THEN |
| 376 |
C--- Calculate mean fluxes (advection) between cells for zonal flow. |
C--- Calculate mean fluxes (advection) between cells for zonal flow. |
| 377 |
|
|
| 378 |
|
#ifdef MOM_BOUNDARY_CONSERVE |
| 379 |
|
CALL MOM_U_ADV_UU( bi,bj,k,uTrans,uBnd(1-OLx,1-OLy,k,bi,bj), |
| 380 |
|
O fZon,myThid ) |
| 381 |
|
CALL MOM_U_ADV_VU( bi,bj,k,vTrans,uBnd(1-OLx,1-OLy,k,bi,bj), |
| 382 |
|
O fMer,myThid ) |
| 383 |
|
CALL MOM_U_ADV_WU( |
| 384 |
|
I bi,bj,k+1,uBnd,wVel,rTransU, |
| 385 |
|
O fVerU(1-OLx,1-OLy,kDown), myThid ) |
| 386 |
|
#else /* MOM_BOUNDARY_CONSERVE */ |
| 387 |
C-- Zonal flux (fZon is at east face of "u" cell) |
C-- Zonal flux (fZon is at east face of "u" cell) |
| 388 |
C Mean flow component of zonal flux -> fZon |
C Mean flow component of zonal flux -> fZon |
| 389 |
CALL MOM_U_ADV_UU(bi,bj,k,uTrans,uFld,fZon,myThid) |
CALL MOM_U_ADV_UU(bi,bj,k,uTrans,uFld,fZon,myThid) |
| 397 |
CALL MOM_U_ADV_WU( |
CALL MOM_U_ADV_WU( |
| 398 |
I bi,bj,k+1,uVel,wVel,rTransU, |
I bi,bj,k+1,uVel,wVel,rTransU, |
| 399 |
O fVerU(1-OLx,1-OLy,kDown), myThid ) |
O fVerU(1-OLx,1-OLy,kDown), myThid ) |
| 400 |
|
#endif /* MOM_BOUNDARY_CONSERVE */ |
| 401 |
|
|
| 402 |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
| 403 |
DO j=jMin,jMax |
DO j=jMin,jMax |
| 590 |
C---- Meridional momentum equation starts here |
C---- Meridional momentum equation starts here |
| 591 |
|
|
| 592 |
IF (momAdvection) THEN |
IF (momAdvection) THEN |
| 593 |
|
|
| 594 |
|
#ifdef MOM_BOUNDARY_CONSERVE |
| 595 |
|
CALL MOM_V_ADV_UV( bi,bj,k,uTrans,vBnd(1-OLx,1-OLy,k,bi,bj), |
| 596 |
|
O fZon,myThid ) |
| 597 |
|
CALL MOM_V_ADV_VV( bi,bj,k,vTrans,vBnd(1-OLx,1-OLy,k,bi,bj), |
| 598 |
|
O fMer,myThid ) |
| 599 |
|
CALL MOM_V_ADV_WV( |
| 600 |
|
I bi,bj,k+1,vBnd,wVel,rTransV, |
| 601 |
|
O fVerV(1-OLx,1-OLy,kDown), myThid ) |
| 602 |
|
#else /* MOM_BOUNDARY_CONSERVE */ |
| 603 |
C--- Calculate mean fluxes (advection) between cells for meridional flow. |
C--- Calculate mean fluxes (advection) between cells for meridional flow. |
| 604 |
C Mean flow component of zonal flux -> fZon |
C Mean flow component of zonal flux -> fZon |
| 605 |
CALL MOM_V_ADV_UV(bi,bj,k,uTrans,vFld,fZon,myThid) |
CALL MOM_V_ADV_UV(bi,bj,k,uTrans,vFld,fZon,myThid) |
| 613 |
CALL MOM_V_ADV_WV( |
CALL MOM_V_ADV_WV( |
| 614 |
I bi,bj,k+1,vVel,wVel,rTransV, |
I bi,bj,k+1,vVel,wVel,rTransV, |
| 615 |
O fVerV(1-OLx,1-OLy,kDown), myThid ) |
O fVerV(1-OLx,1-OLy,kDown), myThid ) |
| 616 |
|
#endif /* MOM_BOUNDARY_CONSERVE */ |
| 617 |
|
|
| 618 |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
C-- Tendency is minus divergence of the fluxes + coriolis + pressure term |
| 619 |
DO j=jMin,jMax |
DO j=jMin,jMax |