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

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

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


Revision 1.7 - (show 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 C $Header: /u/gcmpack/MITgcm/pkg/rbcs/rbcs_add_tendency.F,v 1.6 2011/05/14 19:52:12 jmc Exp $
2 C $Name: $
3
4 #include "RBCS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: RBCS_ADD_TSTENDENCY
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE RBCS_ADD_TENDENCY(
11 I bi, bj, k, tracerNum,
12 I myTime, myThid )
13
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 c#include "GRID.h"
23 #include "DYNVARS.h"
24 #ifdef ALLOW_PTRACERS
25 #include "PTRACERS_SIZE.h"
26 #include "PTRACERS_FIELDS.h"
27 #endif
28 #include "RBCS_SIZE.h"
29 #include "RBCS_PARAMS.h"
30 #include "RBCS_FIELDS.h"
31
32 C !INPUT PARAMETERS: ===================================================
33 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 _RL myTime
42 c INTEGER myIter
43 INTEGER myThid
44
45 C !LOCAL VARIABLES: ====================================================
46 C i,j :: loop indices
47 INTEGER i,j
48 #ifdef ALLOW_PTRACERS
49 INTEGER iTracer
50 INTEGER irbc
51 #endif
52 CEOP
53
54 #ifdef ALLOW_RBCS
55
56 #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 IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
80 DO j=1,sNy
81 DO i=1,sNx
82 gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)
83 & - RBC_mask(i,j,k,bi,bj,1)/tauRelaxT
84 & *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
85 c & *maskC(i,j,k,bi,bj)
86 #ifdef ALLOW_RBCS_SPIN
87 cgf decrease relaxation time scale linearly over 3 years
88 & *mytime/( 94608000. _d 0 )
89 #endif
90 ENDDO
91 ENDDO
92 ENDIF
93
94 IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
95 DO j=1,sNy
96 DO i=1,sNx
97 gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)
98 & - RBC_mask(i,j,k,bi,bj,2)/tauRelaxS
99 & *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
100 c & *maskC(i,j,k,bi,bj)
101 #ifdef ALLOW_RBCS_SPIN
102 cgf decrease relaxation time scale linearly over 3 years
103 & *mytime/( 94608000. _d 0 )
104 #endif
105 ENDDO
106 ENDDO
107 ENDIF
108
109 #ifdef ALLOW_PTRACERS
110 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 DO i=1,sNx
116 gPtr(i,j,k,bi,bj,iTracer) = gPtr(i,j,k,bi,bj,iTracer)
117 & - RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)
118 & *( pTracer(i,j,k,bi,bj,iTracer)
119 & - RBC_ptracers(i,j,k,bi,bj,iTracer) )
120 c & *maskC(i,j,k,bi,bj)
121 ENDDO
122 ENDDO
123 ENDIF
124 ENDIF
125 #endif /* ALLOW_PTRACERS */
126
127 #endif /* ALLOW_RBCS */
128
129 RETURN
130 END

  ViewVC Help
Powered by ViewVC 1.1.22