#include "CPP_OPTIONS.h"
#include "PACKAGES_CONFIG.h"
CBOP
C !ROUTINE: RBCS_ADD_TSTENDENCY
C !INTERFACE: ==========================================================
SUBROUTINE RBCS_ADD_TENDENCY(bi,bj,k, tracernum,
& myTime, myThid )
C !DESCRIPTION:
C Will update tendencies with terms to relax to 3-D field
C !USES: ===============================================================
IMPLICIT NONE
#include "SIZE.h"
#include "GRID.h"
#include "DYNVARS.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#ifdef ALLOW_PTRACERS
#include "PTRACERS_SIZE.h"
#include "PTRACERS.h"
#endif
#include "RBCS.h"
C !INPUT PARAMETERS: ===================================================
C myThid :: thread number
C myIter :: current timestep
C myTime :: current time
C iTracer :: ptracer number
C bi,bj :: tile indices
C k :: vertical level
INTEGER myThid, myIter
_RL myTime
INTEGER bi,bj,k
INTEGER tracernum
C !LOCAL VARIABLES: ====================================================
C i,j :: loop indices
INTEGER i,j
INTEGER iTracer
INTEGER irbc
CEOP
#ifdef ALLOW_RBCS
if (tracernum.eq.1) then
if (useRBCtemp) then
DO j=1,sNy
DO i=1,sNx
gT(I,J,K,bi,bj) = gT(I,J,K,bi,bj)
& - maskC(I,J,K,bi,bj)*
& RBC_mask(I,J,K,bi,bj,1)/tauRelaxT*
& (theta(I,J,K,bi,bj)-
& RBCtemp(I,J,K,bi,bj))
ENDDO
ENDDO
endif
endif
if (tracernum.eq.2) then
if (useRBCsalt) then
DO j=1,sNy
DO i=1,sNx
gS(I,J,K,bi,bj) = gS(I,J,K,bi,bj)
& - maskC(I,J,K,bi,bj)*
& RBC_mask(I,J,K,bi,bj,2)/tauRelaxS*
& (salt(I,J,K,bi,bj)-
& RBCsalt(I,J,K,bi,bj))
ENDDO
ENDDO
endif
endif
#ifdef ALLOW_PTRACERS
if (tracernum.gt.2) then
iTracer=tracernum-2
irbc=max(maskLEN,tracernum)
if (useRBCptracers) then
if (useRBCptrnum(iTracer)) then
DO j=1,sNy
DO i=1,sNx
gPtr(I,J,K,bi,bj,iTracer) = gPtr(I,J,K,bi,bj,iTracer)
& - maskC(I,J,K,bi,bj)*
& RBC_mask(I,J,K,bi,bj,irbc)/tauRelaxPTR(iTracer)*
& (pTracer(I,J,K,bi,bj,iTracer)-
& RBC_ptracers(I,J,K,bi,bj,iTracer))
ENDDO
ENDDO
endif
endif
endif
#endif
#endif /* ALLOW_RBCS */
RETURN
END