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
da39eae0fb Jean*0004
d74b62818e Step*0005
0006
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
da39eae0fb Jean*0013
d74b62818e Step*0014
0015
0016 IMPLICIT NONE
0017 #include "SIZE.h"
0018 #include "EEPARAMS.h"
0019 #include "PARAMS.h"
a16c4403c6 Jean*0020
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
0031
c3afacc940 Jean*0032
da39eae0fb Jean*0033
c3afacc940 Jean*0034
0035
0036
0037
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
c3afacc940 Jean*0046
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
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