193 |
KE(i,j) = 0. |
KE(i,j) = 0. |
194 |
C- need to initialise hDiv for MOM_VI_DEL2UV(call FILL_CS_CORNER_TR_RL) |
C- need to initialise hDiv for MOM_VI_DEL2UV(call FILL_CS_CORNER_TR_RL) |
195 |
hDiv(i,j) = 0. |
hDiv(i,j) = 0. |
196 |
viscAh_Z(i,j) = 0. |
c viscAh_Z(i,j) = 0. |
197 |
viscAh_D(i,j) = 0. |
c viscAh_D(i,j) = 0. |
198 |
viscA4_Z(i,j) = 0. |
c viscA4_Z(i,j) = 0. |
199 |
viscA4_D(i,j) = 0. |
c viscA4_D(i,j) = 0. |
|
|
|
200 |
strain(i,j) = 0. _d 0 |
strain(i,j) = 0. _d 0 |
201 |
tension(i,j) = 0. _d 0 |
tension(i,j) = 0. _d 0 |
202 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
271 |
ENDDO |
ENDDO |
272 |
ENDDO |
ENDDO |
273 |
|
|
274 |
C-- Calculate Viscosities |
C-- Calculate Lateral Viscosities |
275 |
CALL MOM_CALC_VISC( bi, bj, k, |
DO j=1-OLy,sNy+OLy |
276 |
O viscAh_Z, viscAh_D, viscA4_Z, viscA4_D, |
DO i=1-OLx,sNx+OLx |
277 |
I hDiv, vort3, tension, strain, KE, hfacZ, |
viscAh_D(i,j) = viscAhD |
278 |
I myThid ) |
viscAh_Z(i,j) = viscAhZ |
279 |
|
viscA4_D(i,j) = viscA4D |
280 |
|
viscA4_Z(i,j) = viscA4Z |
281 |
|
ENDDO |
282 |
|
ENDDO |
283 |
|
IF ( useVariableVisc ) THEN |
284 |
|
CALL MOM_CALC_VISC( bi, bj, k, |
285 |
|
O viscAh_Z, viscAh_D, viscA4_Z, viscA4_D, |
286 |
|
I hDiv, vort3, tension, strain, KE, hfacZ, |
287 |
|
I myThid ) |
288 |
|
ENDIF |
289 |
|
|
290 |
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 |
291 |
IF (useBiharmonicVisc) THEN |
IF (useBiharmonicVisc) THEN |
350 |
O guDiss, gvDiss, |
O guDiss, gvDiss, |
351 |
& myThid ) |
& myThid ) |
352 |
ENDIF |
ENDIF |
|
C-- if (momViscosity) end of block. |
|
|
ENDIF |
|
|
|
|
|
C- Return to standard hfacZ (min-4) and mask vort3 accordingly: |
|
|
c CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid) |
|
353 |
|
|
354 |
C--- Other dissipation terms in Zonal momentum equation |
C--- Other dissipation terms in Zonal momentum equation |
355 |
|
|
356 |
C-- Vertical flux (fVer is at upper face of "u" cell) |
C-- Vertical flux (fVer is at upper face of "u" cell) |
|
|
|
357 |
C Eddy component of vertical flux (interior component only) -> vrF |
C Eddy component of vertical flux (interior component only) -> vrF |
358 |
IF (momViscosity.AND..NOT.implicitViscosity) THEN |
IF ( .NOT.implicitViscosity ) THEN |
359 |
CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,KappaRU,vrF,myThid) |
CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,KappaRU,vrF,myThid) |
|
|
|
360 |
C Combine fluxes |
C Combine fluxes |
361 |
DO j=jMin,jMax |
DO j=jMin,jMax |
362 |
DO i=iMin,iMax |
DO i=iMin,iMax |
363 |
fVerUkp(i,j) = ArDudrFac*vrF(i,j) |
fVerUkp(i,j) = ArDudrFac*vrF(i,j) |
364 |
ENDDO |
ENDDO |
365 |
ENDDO |
ENDDO |
|
|
|
366 |
C-- Tendency is minus divergence of the fluxes |
C-- Tendency is minus divergence of the fluxes |
367 |
DO j=jMin,jMax |
DO j=jMin,jMax |
368 |
DO i=iMin,iMax |
DO i=iMin,iMax |
375 |
ENDIF |
ENDIF |
376 |
|
|
377 |
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 |
378 |
IF (momViscosity.AND.no_slip_sides) THEN |
IF ( no_slip_sides ) THEN |
379 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
380 |
CALL MOM_U_SIDEDRAG( bi, bj, k, |
CALL MOM_U_SIDEDRAG( bi, bj, k, |
381 |
I uFld, del2u, hFacZ, |
I uFld, del2u, hFacZ, |
389 |
ENDDO |
ENDDO |
390 |
ENDDO |
ENDDO |
391 |
ENDIF |
ENDIF |
392 |
|
|
393 |
C- No-slip BCs impose a drag at bottom |
C- No-slip BCs impose a drag at bottom |
394 |
IF (momViscosity.AND.bottomDragTerms) THEN |
IF ( bottomDragTerms ) THEN |
395 |
CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid) |
CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid) |
396 |
DO j=jMin,jMax |
DO j=jMin,jMax |
397 |
DO i=iMin,iMax |
DO i=iMin,iMax |
400 |
ENDDO |
ENDDO |
401 |
ENDIF |
ENDIF |
402 |
#ifdef ALLOW_SHELFICE |
#ifdef ALLOW_SHELFICE |
403 |
IF (useShelfIce.AND.momViscosity.AND.bottomDragTerms) THEN |
IF ( useShelfIce.AND.bottomDragTerms ) THEN |
404 |
CALL SHELFICE_U_DRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid) |
CALL SHELFICE_U_DRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid) |
405 |
DO j=jMin,jMax |
DO j=jMin,jMax |
406 |
DO i=iMin,iMax |
DO i=iMin,iMax |
410 |
ENDIF |
ENDIF |
411 |
#endif /* ALLOW_SHELFICE */ |
#endif /* ALLOW_SHELFICE */ |
412 |
|
|
|
|
|
413 |
C--- Other dissipation terms in Meridional momentum equation |
C--- Other dissipation terms in Meridional momentum equation |
414 |
|
|
415 |
C-- Vertical flux (fVer is at upper face of "v" cell) |
C-- Vertical flux (fVer is at upper face of "v" cell) |
|
|
|
416 |
C Eddy component of vertical flux (interior component only) -> vrF |
C Eddy component of vertical flux (interior component only) -> vrF |
417 |
IF (momViscosity.AND..NOT.implicitViscosity) THEN |
IF ( .NOT.implicitViscosity ) THEN |
418 |
CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,KappaRV,vrF,myThid) |
CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,KappaRV,vrF,myThid) |
|
|
|
419 |
C Combine fluxes -> fVerV |
C Combine fluxes -> fVerV |
420 |
DO j=jMin,jMax |
DO j=jMin,jMax |
421 |
DO i=iMin,iMax |
DO i=iMin,iMax |
422 |
fVerVkp(i,j) = ArDvdrFac*vrF(i,j) |
fVerVkp(i,j) = ArDvdrFac*vrF(i,j) |
423 |
ENDDO |
ENDDO |
424 |
ENDDO |
ENDDO |
|
|
|
425 |
C-- Tendency is minus divergence of the fluxes |
C-- Tendency is minus divergence of the fluxes |
426 |
DO j=jMin,jMax |
DO j=jMin,jMax |
427 |
DO i=iMin,iMax |
DO i=iMin,iMax |
434 |
ENDIF |
ENDIF |
435 |
|
|
436 |
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 |
437 |
IF (momViscosity.AND.no_slip_sides) THEN |
IF ( no_slip_sides ) THEN |
438 |
C- No-slip BCs impose a drag at walls... |
C- No-slip BCs impose a drag at walls... |
439 |
CALL MOM_V_SIDEDRAG( bi, bj, k, |
CALL MOM_V_SIDEDRAG( bi, bj, k, |
440 |
I vFld, del2v, hFacZ, |
I vFld, del2v, hFacZ, |
448 |
ENDDO |
ENDDO |
449 |
ENDDO |
ENDDO |
450 |
ENDIF |
ENDIF |
451 |
|
|
452 |
C- No-slip BCs impose a drag at bottom |
C- No-slip BCs impose a drag at bottom |
453 |
IF (momViscosity.AND.bottomDragTerms) THEN |
IF ( bottomDragTerms ) THEN |
454 |
CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid) |
CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid) |
455 |
DO j=jMin,jMax |
DO j=jMin,jMax |
456 |
DO i=iMin,iMax |
DO i=iMin,iMax |
459 |
ENDDO |
ENDDO |
460 |
ENDIF |
ENDIF |
461 |
#ifdef ALLOW_SHELFICE |
#ifdef ALLOW_SHELFICE |
462 |
IF (useShelfIce.AND.momViscosity.AND.bottomDragTerms) THEN |
IF (useShelfIce.AND.bottomDragTerms ) THEN |
463 |
CALL SHELFICE_V_DRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid) |
CALL SHELFICE_V_DRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid) |
464 |
DO j=jMin,jMax |
DO j=jMin,jMax |
465 |
DO i=iMin,iMax |
DO i=iMin,iMax |
469 |
ENDIF |
ENDIF |
470 |
#endif /* ALLOW_SHELFICE */ |
#endif /* ALLOW_SHELFICE */ |
471 |
|
|
472 |
|
C-- if (momViscosity) end of block. |
473 |
|
ENDIF |
474 |
|
|
475 |
|
C- Return to standard hfacZ (min-4) and mask vort3 accordingly: |
476 |
|
c CALL MOM_VI_MASK_VORT3(bi,bj,k,hFacZ,r_hFacZ,vort3,myThid) |
477 |
|
|
478 |
C- Vorticity diagnostics: |
C- Vorticity diagnostics: |
479 |
IF ( writeDiag ) THEN |
IF ( writeDiag ) THEN |