Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:43:04 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
c3afacc940 Jean*0001 #include "RBCS_OPTIONS.h"
d74b62818e Step*0002 
                0003 CBOP
da39eae0fb Jean*0004 C !ROUTINE: RBCS_ADD_TENDENCY
d74b62818e Step*0005 
                0006 C !INTERFACE: ==========================================================
c3afacc940 Jean*0007       SUBROUTINE RBCS_ADD_TENDENCY(
da39eae0fb Jean*0008      U                    gTendency,
                0009      I                    k, bi, bj, tracerNum,
                0010      I                    myTime, myIter, myThid )
d74b62818e Step*0011 
                0012 C !DESCRIPTION:
da39eae0fb Jean*0013 C     Add to tendency array the contribution from 3-D field relaxation
d74b62818e Step*0014 
                0015 C !USES: ===============================================================
                0016       IMPLICIT NONE
                0017 #include "SIZE.h"
                0018 #include "EEPARAMS.h"
                0019 #include "PARAMS.h"
a16c4403c6 Jean*0020 c#include "GRID.h"
                0021 #include "DYNVARS.h"
d74b62818e Step*0022 #ifdef ALLOW_PTRACERS
                0023 #include "PTRACERS_SIZE.h"
847df67610 Jean*0024 #include "PTRACERS_FIELDS.h"
d74b62818e Step*0025 #endif
a16c4403c6 Jean*0026 #include "RBCS_SIZE.h"
                0027 #include "RBCS_PARAMS.h"
                0028 #include "RBCS_FIELDS.h"
d74b62818e Step*0029 
da39eae0fb Jean*0030 C !INPUT/OUTPUT PARAMETERS: ============================================
                0031 C  gTendency      :: the tendency array
c3afacc940 Jean*0032 C  k              :: vertical level index
da39eae0fb Jean*0033 C  bi,bj          :: tile indices
c3afacc940 Jean*0034 C  tracerNum      :: tracer number (1=Temp, 2=Salt, >2 : ptracer)
                0035 C  myTime         :: current time
                0036 C  myIter         :: current timestep
                0037 C  myThid         :: my Thread Id number
da39eae0fb Jean*0038       _RL gTendency(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0039       INTEGER k, bi, bj
c3afacc940 Jean*0040       INTEGER tracerNum
d74b62818e Step*0041       _RL myTime
da39eae0fb Jean*0042       INTEGER myIter
c3afacc940 Jean*0043       INTEGER myThid
d74b62818e Step*0044 
                0045 C !LOCAL VARIABLES: ====================================================
c3afacc940 Jean*0046 C  i,j            :: loop indices
d74b62818e Step*0047       INTEGER i,j
49bb5dd6f3 Jean*0048       INTEGER irbc
880a0c1fb9 Gael*0049       _RL rbcsVanishingFac
49bb5dd6f3 Jean*0050       _RL rec_tauRlx
c3afacc940 Jean*0051 #ifdef ALLOW_PTRACERS
d74b62818e Step*0052       INTEGER iTracer
c3afacc940 Jean*0053 #endif
d74b62818e Step*0054 CEOP
                0055 
                0056 #ifdef ALLOW_RBCS
                0057 
49bb5dd6f3 Jean*0058       IF ( rbcsVanishingTime.GT.0. _d 0 ) THEN
da39eae0fb Jean*0059         rbcsVanishingFac =
49bb5dd6f3 Jean*0060      &      MAX( 0. _d 0 , 1. _d 0 - myTime / rbcsVanishingTime )
                0061       ELSE
880a0c1fb9 Gael*0062         rbcsVanishingFac = 1. _d 0
49bb5dd6f3 Jean*0063       ENDIF
da39eae0fb Jean*0064 
a16c4403c6 Jean*0065 #ifndef DISABLE_RBCS_MOM
                0066       IF ( tracerNum.EQ.-1 .AND. useRBCuVel ) THEN
49bb5dd6f3 Jean*0067         rec_tauRlx = rbcsVanishingFac/tauRelaxU
a16c4403c6 Jean*0068         DO j=0,sNy+1
                0069          DO i=0,sNx+1
da39eae0fb Jean*0070           gTendency(i,j) = gTendency(i,j)
49bb5dd6f3 Jean*0071      &       - RBC_maskU(i,j,k,bi,bj)*rec_tauRlx
a16c4403c6 Jean*0072      &        *( uVel(i,j,k,bi,bj)- RBCuVel(i,j,k,bi,bj) )
                0073          ENDDO
                0074         ENDDO
                0075       ENDIF
                0076       IF ( tracerNum.EQ.-2 .AND. useRBCvVel ) THEN
49bb5dd6f3 Jean*0077         rec_tauRlx = rbcsVanishingFac/tauRelaxV
a16c4403c6 Jean*0078         DO j=0,sNy+1
                0079          DO i=0,sNx+1
da39eae0fb Jean*0080           gTendency(i,j) = gTendency(i,j)
49bb5dd6f3 Jean*0081      &       - RBC_maskV(i,j,k,bi,bj)*rec_tauRlx
a16c4403c6 Jean*0082      &        *( vVel(i,j,k,bi,bj)- RBCvVel(i,j,k,bi,bj) )
                0083          ENDDO
                0084         ENDDO
                0085       ENDIF
                0086 #endif /* DISABLE_RBCS_MOM */
                0087 
c3afacc940 Jean*0088       IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
49bb5dd6f3 Jean*0089         irbc = MIN(maskLEN,tracerNum)
                0090         rec_tauRlx = rbcsVanishingFac/tauRelaxT
5daf6d9fa9 Jean*0091         DO j=0,sNy+1
                0092          DO i=0,sNx+1
da39eae0fb Jean*0093           gTendency(i,j) = gTendency(i,j)
49bb5dd6f3 Jean*0094      &       - RBC_mask(i,j,k,bi,bj,irbc)*rec_tauRlx
c3afacc940 Jean*0095      &        *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
880a0c1fb9 Gael*0096 
c3afacc940 Jean*0097          ENDDO
d74b62818e Step*0098         ENDDO
c3afacc940 Jean*0099       ENDIF
d74b62818e Step*0100 
c3afacc940 Jean*0101       IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
49bb5dd6f3 Jean*0102         irbc = MIN(maskLEN,tracerNum)
                0103         rec_tauRlx = rbcsVanishingFac/tauRelaxS
5daf6d9fa9 Jean*0104         DO j=0,sNy+1
                0105          DO i=0,sNx+1
da39eae0fb Jean*0106           gTendency(i,j) = gTendency(i,j)
49bb5dd6f3 Jean*0107      &       - RBC_mask(i,j,k,bi,bj,irbc)*rec_tauRlx
c3afacc940 Jean*0108      &        *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
                0109          ENDDO
d74b62818e Step*0110         ENDDO
c3afacc940 Jean*0111       ENDIF
d74b62818e Step*0112 
                0113 #ifdef ALLOW_PTRACERS
c3afacc940 Jean*0114       IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN
                0115        iTracer = tracerNum-2
da39eae0fb Jean*0116        IF ( useRBCpTrNum(iTracer) ) THEN
49bb5dd6f3 Jean*0117         irbc = MIN(maskLEN,tracerNum)
                0118         rec_tauRlx = rbcsVanishingFac/tauRelaxPTR(iTracer)
5daf6d9fa9 Jean*0119         DO j=0,sNy+1
                0120          DO i=0,sNx+1
da39eae0fb Jean*0121           gTendency(i,j) = gTendency(i,j)
49bb5dd6f3 Jean*0122      &       - RBC_mask(i,j,k,bi,bj,irbc)*rec_tauRlx
c3afacc940 Jean*0123      &        *( pTracer(i,j,k,bi,bj,iTracer)
                0124      &           - RBC_ptracers(i,j,k,bi,bj,iTracer) )
d74b62818e Step*0125          ENDDO
c3afacc940 Jean*0126         ENDDO
                0127        ENDIF
                0128       ENDIF
                0129 #endif /* ALLOW_PTRACERS */
d74b62818e Step*0130 
                0131 #endif /* ALLOW_RBCS */
                0132 
                0133       RETURN
                0134       END