/[MITgcm]/MITgcm/pkg/rbcs/rbcs_add_tendency.F
ViewVC logotype

Diff of /MITgcm/pkg/rbcs/rbcs_add_tendency.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.9 by gforget, Tue Jun 26 22:19:17 2012 UTC revision 1.10 by jmc, Wed Jul 9 16:58:09 2014 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "RBCS_OPTIONS.h"  #include "RBCS_OPTIONS.h"
5    
6  CBOP  CBOP
7  C !ROUTINE: RBCS_ADD_TSTENDENCY  C !ROUTINE: RBCS_ADD_TENDENCY
8    
9  C !INTERFACE: ==========================================================  C !INTERFACE: ==========================================================
10        SUBROUTINE RBCS_ADD_TENDENCY(        SUBROUTINE RBCS_ADD_TENDENCY(
11       I                    bi, bj, k, tracerNum,       U                    gTendency,
12       I                    myTime, myThid )       I                    k, bi, bj, tracerNum,
13         I                    myTime, myIter, myThid )
14    
15  C !DESCRIPTION:  C !DESCRIPTION:
16  C     Will update tendencies with terms to relax to 3-D field  C     Add to tendency array the contribution from 3-D field relaxation
17    
18  C !USES: ===============================================================  C !USES: ===============================================================
19        IMPLICIT NONE        IMPLICIT NONE
# Line 29  c#include "GRID.h" Line 30  c#include "GRID.h"
30  #include "RBCS_PARAMS.h"  #include "RBCS_PARAMS.h"
31  #include "RBCS_FIELDS.h"  #include "RBCS_FIELDS.h"
32    
33  C !INPUT PARAMETERS: ===================================================  C !INPUT/OUTPUT PARAMETERS: ============================================
34  C  bi,bj          :: tile indices  C  gTendency      :: the tendency array
35  C  k              :: vertical level index  C  k              :: vertical level index
36    C  bi,bj          :: tile indices
37  C  tracerNum      :: tracer number (1=Temp, 2=Salt, >2 : ptracer)  C  tracerNum      :: tracer number (1=Temp, 2=Salt, >2 : ptracer)
38  C  myTime         :: current time  C  myTime         :: current time
39  C  myIter         :: current timestep  C  myIter         :: current timestep
40  C  myThid         :: my Thread Id number  C  myThid         :: my Thread Id number
41        INTEGER bi, bj, k        _RL gTendency(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42          INTEGER k, bi, bj
43        INTEGER tracerNum        INTEGER tracerNum
44        _RL myTime        _RL myTime
45  c     INTEGER myIter        INTEGER myIter
46        INTEGER myThid        INTEGER myThid
47    
48  C !LOCAL VARIABLES: ====================================================  C !LOCAL VARIABLES: ====================================================
# Line 55  CEOP Line 58  CEOP
58  #ifdef ALLOW_RBCS  #ifdef ALLOW_RBCS
59    
60        if (rbcsVanishingTime.GT.0. _d 0) then        if (rbcsVanishingTime.GT.0. _d 0) then
61          rbcsVanishingFac =          rbcsVanishingFac =
62       &  MAX( 0. _d 0 , 1. _d 0 - mytime / rbcsVanishingTime )       &  MAX( 0. _d 0 , 1. _d 0 - myTime / rbcsVanishingTime )
63        else        else
64          rbcsVanishingFac = 1. _d 0          rbcsVanishingFac = 1. _d 0
65        endif        endif
66    
67  #ifndef DISABLE_RBCS_MOM  #ifndef DISABLE_RBCS_MOM
68        IF ( tracerNum.EQ.-1 .AND. useRBCuVel ) THEN        IF ( tracerNum.EQ.-1 .AND. useRBCuVel ) THEN
69          DO j=0,sNy+1          DO j=0,sNy+1
70           DO i=0,sNx+1           DO i=0,sNx+1
71            gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)            gTendency(i,j) = gTendency(i,j)
72       &       - RBC_maskU(i,j,k,bi,bj)/tauRelaxU       &       - RBC_maskU(i,j,k,bi,bj)/tauRelaxU
73       &        *( uVel(i,j,k,bi,bj)- RBCuVel(i,j,k,bi,bj) )       &        *( uVel(i,j,k,bi,bj)- RBCuVel(i,j,k,bi,bj) )
74  c    &        *maskW(i,j,k,bi,bj)  c    &        *maskW(i,j,k,bi,bj)
75       &        *rbcsVanishingFac               &        *rbcsVanishingFac
76           ENDDO           ENDDO
77          ENDDO          ENDDO
78        ENDIF        ENDIF
79        IF ( tracerNum.EQ.-2 .AND. useRBCvVel ) THEN        IF ( tracerNum.EQ.-2 .AND. useRBCvVel ) THEN
80          DO j=0,sNy+1          DO j=0,sNy+1
81           DO i=0,sNx+1           DO i=0,sNx+1
82            gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)            gTendency(i,j) = gTendency(i,j)
83       &       - RBC_maskV(i,j,k,bi,bj)/tauRelaxV       &       - RBC_maskV(i,j,k,bi,bj)/tauRelaxV
84       &        *( vVel(i,j,k,bi,bj)- RBCvVel(i,j,k,bi,bj) )       &        *( vVel(i,j,k,bi,bj)- RBCvVel(i,j,k,bi,bj) )
85  c    &        *maskS(i,j,k,bi,bj)  c    &        *maskS(i,j,k,bi,bj)
86       &        *rbcsVanishingFac               &        *rbcsVanishingFac
87           ENDDO           ENDDO
88          ENDDO          ENDDO
89        ENDIF        ENDIF
# Line 89  c    &        *maskS(i,j,k,bi,bj) Line 92  c    &        *maskS(i,j,k,bi,bj)
92        IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN        IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
93          DO j=1,sNy          DO j=1,sNy
94           DO i=1,sNx           DO i=1,sNx
95            gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)            gTendency(i,j) = gTendency(i,j)
96       &       - RBC_mask(i,j,k,bi,bj,1)/tauRelaxT       &       - RBC_mask(i,j,k,bi,bj,1)/tauRelaxT
97       &        *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )       &        *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
98  c    &        *maskC(i,j,k,bi,bj)  c    &        *maskC(i,j,k,bi,bj)
# Line 102  c    &        *maskC(i,j,k,bi,bj) Line 105  c    &        *maskC(i,j,k,bi,bj)
105        IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN        IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
106          DO j=1,sNy          DO j=1,sNy
107           DO i=1,sNx           DO i=1,sNx
108            gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)            gTendency(i,j) = gTendency(i,j)
109       &       - RBC_mask(i,j,k,bi,bj,2)/tauRelaxS       &       - RBC_mask(i,j,k,bi,bj,2)/tauRelaxS
110       &        *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )       &        *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
111  c    &        *maskC(i,j,k,bi,bj)  c    &        *maskC(i,j,k,bi,bj)
# Line 115  c    &        *maskC(i,j,k,bi,bj) Line 118  c    &        *maskC(i,j,k,bi,bj)
118        IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN        IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN
119         iTracer = tracerNum-2         iTracer = tracerNum-2
120         irbc = MIN(maskLEN,tracerNum)         irbc = MIN(maskLEN,tracerNum)
121         IF ( useRBCptrnum(iTracer) ) THEN         IF ( useRBCpTrNum(iTracer) ) THEN
122          DO j=1,sNy          DO j=1,sNy
123           DO i=1,sNx           DO i=1,sNx
124            gPtr(i,j,k,bi,bj,iTracer) = gPtr(i,j,k,bi,bj,iTracer)            gTendency(i,j) = gTendency(i,j)
125       &       - RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)       &       - RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)
126       &        *( pTracer(i,j,k,bi,bj,iTracer)       &        *( pTracer(i,j,k,bi,bj,iTracer)
127       &           - RBC_ptracers(i,j,k,bi,bj,iTracer) )       &           - RBC_ptracers(i,j,k,bi,bj,iTracer) )

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22