C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_calc_urms.F,v 1.2 2013/07/11 14:33:23 m_bates Exp $
C $Name: $
#include "GMREDI_OPTIONS.h"
C !ROUTINE: EIGENVAL
C !INTERFACE:
SUBROUTINE GMREDI_CALC_URMS(
I iMin, iMax, jMin, jMax,
I bi, bj, N2, myThid,
U urms)
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE GMREDI_CALC_URMS
C | o Calculate the vertical structure of the rms eddy
C | velocity based on baroclinic modal decomposition
C *==========================================================*
C \ev
IMPLICIT NONE
C == Global variables ==
#include "SIZE.h"
#include "GRID.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GMREDI.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine arguments ==
C bi, bj :: tile indices
INTEGER iMin,iMax,jMin,jMax
INTEGER bi, bj
INTEGER myThid
_RL N2( 1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
_RL urms(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
#ifdef GM_K3D
C !LOCAL VARIABLES:
C == Local variables ==
INTEGER i,j,k
C bbs :: bottom boundary condition (set to zero for now)
C const :: a constant for each water column
_RL bbc( 1-Olx:sNx+Olx,1-Oly:sNy+Oly)
_RL const( 1-Olx:sNx+Olx,1-Oly:sNy+Oly)
C Constant zero bottom boundary condition
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
bbc(i,j) = zeroRL
ENDDO
ENDDO
C Fit urms to the first baroclinic mode using the SBC and BBC
C We need at least two cells to do this
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
k = kLowC(i,j,bi,bj)
IF (k.GT.2) THEN
const(i,j) = (urms(i,j,k)-urms(i,j,1))
& /(modesC(1,i,j,k,bi,bj)-modesC(1,i,j,1,bi,bj))
ELSE
const(i,j) = zeroRL
ENDIF
ENDDO
ENDDO
DO k=2,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (k.LT.kLowC(i,j,bi,bj)) THEN
urms(i,j,k) = urms(i,j,1) +
& const(i,j)*(modesC(1,i,j,k,bi,bj)-modesC(1,i,j,1,bi,bj))
ELSE
urms(i,j,k)=zeroRL
ENDIF
ENDDO
ENDDO
ENDDO
C Land, so, we fill with zeros
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
if (kLowC(i,j,bi,bj).EQ.0) urms(i,j,1) = zeroRL
ENDDO
ENDDO
#endif /* GM_K3D */
RETURN
END