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

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

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


Revision 1.7 - (hide annotations) (download)
Fri May 20 22:26:37 2011 UTC (13 years ago) by gforget
Branch: MAIN
Changes since 1.6: +9 -1 lines
introduce ALLOW_RBCS_SPIN to allow a decrease
to zero of the relaxation strength over the first 3 years

1 gforget 1.7 C $Header: /u/gcmpack/MITgcm/pkg/rbcs/rbcs_add_tendency.F,v 1.6 2011/05/14 19:52:12 jmc Exp $
2 jmc 1.3 C $Name: $
3 stephd 1.1
4 jmc 1.5 #include "RBCS_OPTIONS.h"
5 stephd 1.1
6     CBOP
7     C !ROUTINE: RBCS_ADD_TSTENDENCY
8    
9     C !INTERFACE: ==========================================================
10 jmc 1.5 SUBROUTINE RBCS_ADD_TENDENCY(
11     I bi, bj, k, tracerNum,
12     I myTime, myThid )
13 stephd 1.1
14     C !DESCRIPTION:
15     C Will update tendencies with terms to relax to 3-D field
16    
17     C !USES: ===============================================================
18     IMPLICIT NONE
19     #include "SIZE.h"
20     #include "EEPARAMS.h"
21     #include "PARAMS.h"
22 jmc 1.6 c#include "GRID.h"
23     #include "DYNVARS.h"
24 stephd 1.1 #ifdef ALLOW_PTRACERS
25     #include "PTRACERS_SIZE.h"
26 jmc 1.4 #include "PTRACERS_FIELDS.h"
27 stephd 1.1 #endif
28 jmc 1.6 #include "RBCS_SIZE.h"
29     #include "RBCS_PARAMS.h"
30     #include "RBCS_FIELDS.h"
31 stephd 1.1
32     C !INPUT PARAMETERS: ===================================================
33 jmc 1.5 C bi,bj :: tile indices
34     C k :: vertical level index
35     C tracerNum :: tracer number (1=Temp, 2=Salt, >2 : ptracer)
36     C myTime :: current time
37     C myIter :: current timestep
38     C myThid :: my Thread Id number
39     INTEGER bi, bj, k
40     INTEGER tracerNum
41 stephd 1.1 _RL myTime
42 jmc 1.5 c INTEGER myIter
43     INTEGER myThid
44 stephd 1.1
45     C !LOCAL VARIABLES: ====================================================
46 jmc 1.5 C i,j :: loop indices
47 stephd 1.1 INTEGER i,j
48 jmc 1.5 #ifdef ALLOW_PTRACERS
49 stephd 1.1 INTEGER iTracer
50     INTEGER irbc
51 jmc 1.5 #endif
52 stephd 1.1 CEOP
53    
54     #ifdef ALLOW_RBCS
55    
56 jmc 1.6 #ifndef DISABLE_RBCS_MOM
57     IF ( tracerNum.EQ.-1 .AND. useRBCuVel ) THEN
58     DO j=0,sNy+1
59     DO i=0,sNx+1
60     gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
61     & - RBC_maskU(i,j,k,bi,bj)/tauRelaxU
62     & *( uVel(i,j,k,bi,bj)- RBCuVel(i,j,k,bi,bj) )
63     c & *maskW(i,j,k,bi,bj)
64     ENDDO
65     ENDDO
66     ENDIF
67     IF ( tracerNum.EQ.-2 .AND. useRBCvVel ) THEN
68     DO j=0,sNy+1
69     DO i=0,sNx+1
70     gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
71     & - RBC_maskV(i,j,k,bi,bj)/tauRelaxV
72     & *( vVel(i,j,k,bi,bj)- RBCvVel(i,j,k,bi,bj) )
73     c & *maskS(i,j,k,bi,bj)
74     ENDDO
75     ENDDO
76     ENDIF
77     #endif /* DISABLE_RBCS_MOM */
78    
79 jmc 1.5 IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
80 stephd 1.1 DO j=1,sNy
81 jmc 1.5 DO i=1,sNx
82     gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)
83 jmc 1.6 & - RBC_mask(i,j,k,bi,bj,1)/tauRelaxT
84 jmc 1.5 & *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
85 jmc 1.6 c & *maskC(i,j,k,bi,bj)
86 gforget 1.7 #ifdef ALLOW_RBCS_SPIN
87     cgf decrease relaxation time scale linearly over 3 years
88     & *mytime/( 94608000. _d 0 )
89     #endif
90 jmc 1.5 ENDDO
91 stephd 1.1 ENDDO
92 jmc 1.5 ENDIF
93 stephd 1.1
94 jmc 1.5 IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
95 stephd 1.1 DO j=1,sNy
96 jmc 1.5 DO i=1,sNx
97     gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)
98 jmc 1.6 & - RBC_mask(i,j,k,bi,bj,2)/tauRelaxS
99 jmc 1.5 & *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
100 jmc 1.6 c & *maskC(i,j,k,bi,bj)
101 gforget 1.7 #ifdef ALLOW_RBCS_SPIN
102     cgf decrease relaxation time scale linearly over 3 years
103     & *mytime/( 94608000. _d 0 )
104     #endif
105 jmc 1.5 ENDDO
106 stephd 1.1 ENDDO
107 jmc 1.5 ENDIF
108 stephd 1.1
109     #ifdef ALLOW_PTRACERS
110 jmc 1.5 IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN
111     iTracer = tracerNum-2
112     irbc = MIN(maskLEN,tracerNum)
113     IF ( useRBCptrnum(iTracer) ) THEN
114     DO j=1,sNy
115 stephd 1.1 DO i=1,sNx
116 jmc 1.5 gPtr(i,j,k,bi,bj,iTracer) = gPtr(i,j,k,bi,bj,iTracer)
117 jmc 1.6 & - RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)
118 jmc 1.5 & *( pTracer(i,j,k,bi,bj,iTracer)
119     & - RBC_ptracers(i,j,k,bi,bj,iTracer) )
120 jmc 1.6 c & *maskC(i,j,k,bi,bj)
121 stephd 1.1 ENDDO
122 jmc 1.5 ENDDO
123     ENDIF
124     ENDIF
125     #endif /* ALLOW_PTRACERS */
126 stephd 1.1
127     #endif /* ALLOW_RBCS */
128    
129     RETURN
130     END

  ViewVC Help
Powered by ViewVC 1.1.22