C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/SOSE/code_ad/calc_viscosity.F,v 1.1 2010/04/23 19:55:11 mmazloff Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" CBOP C !ROUTINE: CALC_VISCOSITY C !INTERFACE: SUBROUTINE CALC_VISCOSITY( I bi,bj,iMin,iMax,jMin,jMax, O KappaRU,KappaRV, I myThid) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE CALC_VISCOSITY C | o Calculate net vertical viscosity C *==========================================================* C \ev C !USES: IMPLICIT NONE C == GLobal variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" #include "GRID.h" C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation C myThid - Instance number for this innvocation of CALC_COMMON_FACTORS C KappaRU :: Total vertical viscosity for zonal flow. C KappaRV :: Total vertical viscosity for meridional flow. INTEGER bi,bj,iMin,iMax,jMin,jMax _RL KappaRU(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) _RL KappaRV(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C I, J, K - Loop counters INTEGER i,j,k CMM( INTEGER mm,klevbm,kplace _RL MMKappaRUscale CMM) CEOP DO k = 1,NR DO j = 1-Oly, sNy+Oly DO i = 1-Olx, sNx+Olx CMM( what k is the last wet point klevbm = 0 do mm = 1,Nr if (rf(mm).GE.r_low(i,j,bi,bj)) then klevbm = mm endif enddo kplace=klevbm-k CMM) CMM( ARE WE NEAR THE BOTTOM CMM kplace = 0 is first wet cell, 1 is second, etc Cmm kplace GT 3 excludes bottom 4 cells IF (kplace.GT.2) THEN MMKappaRUscale = 1.D0 ELSE MMKappaRUscale = 10.D0 ENDIF CMM) KappaRU(i,j,k) = viscArNr(k) CMM( & *MMKappaRUscale CMM) KappaRV(i,j,k) = viscArNr(k) CMM( & *MMKappaRUscale CMM) CMMold KappaRU(i,j,k) = viscAr CMM( CMMold & *MMKappaRUscale CMM) CMMols KappaRV(i,j,k) = viscAr CMM( CMMols & *MMKappaRUscale CMM) ENDDO ENDDO #ifdef ALLOW_KPP IF (useKPP) CALL KPP_CALC_VISC( I bi,bj, iMin,iMax,jMin,jMax,K, O KappaRU,KappaRV, I myThid) #endif #ifdef ALLOW_PP81 IF (usePP81) CALL PP81_CALC_VISC( I bi,bj, iMin,iMax,jMin,jMax,K, O KappaRU,KappaRV, I myThid) #endif #ifdef ALLOW_MY82 IF (useMY82) CALL MY82_CALC_VISC( I bi,bj, iMin,iMax,jMin,jMax,K, O KappaRU,KappaRV, I myThid) #endif #ifdef ALLOW_GGL90 IF (useGGL90) CALL GGL90_CALC_VISC( I bi,bj, iMin,iMax,jMin,jMax,K, O KappaRU,KappaRV, I myThid) #endif C-- end of k loop ENDDO RETURN END