/[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.9 - (show annotations) (download)
Tue Jun 26 22:19:17 2012 UTC (11 years, 11 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63o, checkpoint64
Changes since 1.8: +15 -7 lines
- added rbcsVanishingTime runt time parameter. When rbcsVanishingTime.GT.0. then
  the relaxation strength reduces linearly to vanish at myTime.EQ.rbcsVanishingTime.
- this replaces the previous hard-coded ALLOW_RBCS_SPIN.

1 C $Header: /u/gcmpack/MITgcm/pkg/rbcs/rbcs_add_tendency.F,v 1.8 2011/05/21 00:44:53 gforget 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 _RL rbcsVanishingFac
49 #ifdef ALLOW_PTRACERS
50 INTEGER iTracer
51 INTEGER irbc
52 #endif
53 CEOP
54
55 #ifdef ALLOW_RBCS
56
57 if (rbcsVanishingTime.GT.0. _d 0) then
58 rbcsVanishingFac =
59 & MAX( 0. _d 0 , 1. _d 0 - mytime / rbcsVanishingTime )
60 else
61 rbcsVanishingFac = 1. _d 0
62 endif
63
64 #ifndef DISABLE_RBCS_MOM
65 IF ( tracerNum.EQ.-1 .AND. useRBCuVel ) THEN
66 DO j=0,sNy+1
67 DO i=0,sNx+1
68 gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)
69 & - RBC_maskU(i,j,k,bi,bj)/tauRelaxU
70 & *( uVel(i,j,k,bi,bj)- RBCuVel(i,j,k,bi,bj) )
71 c & *maskW(i,j,k,bi,bj)
72 & *rbcsVanishingFac
73 ENDDO
74 ENDDO
75 ENDIF
76 IF ( tracerNum.EQ.-2 .AND. useRBCvVel ) THEN
77 DO j=0,sNy+1
78 DO i=0,sNx+1
79 gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)
80 & - RBC_maskV(i,j,k,bi,bj)/tauRelaxV
81 & *( vVel(i,j,k,bi,bj)- RBCvVel(i,j,k,bi,bj) )
82 c & *maskS(i,j,k,bi,bj)
83 & *rbcsVanishingFac
84 ENDDO
85 ENDDO
86 ENDIF
87 #endif /* DISABLE_RBCS_MOM */
88
89 IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
90 DO j=1,sNy
91 DO i=1,sNx
92 gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)
93 & - RBC_mask(i,j,k,bi,bj,1)/tauRelaxT
94 & *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
95 c & *maskC(i,j,k,bi,bj)
96 & *rbcsVanishingFac
97
98 ENDDO
99 ENDDO
100 ENDIF
101
102 IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
103 DO j=1,sNy
104 DO i=1,sNx
105 gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)
106 & - RBC_mask(i,j,k,bi,bj,2)/tauRelaxS
107 & *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
108 c & *maskC(i,j,k,bi,bj)
109 & *rbcsVanishingFac
110 ENDDO
111 ENDDO
112 ENDIF
113
114 #ifdef ALLOW_PTRACERS
115 IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN
116 iTracer = tracerNum-2
117 irbc = MIN(maskLEN,tracerNum)
118 IF ( useRBCptrnum(iTracer) ) THEN
119 DO j=1,sNy
120 DO i=1,sNx
121 gPtr(i,j,k,bi,bj,iTracer) = gPtr(i,j,k,bi,bj,iTracer)
122 & - RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)
123 & *( pTracer(i,j,k,bi,bj,iTracer)
124 & - RBC_ptracers(i,j,k,bi,bj,iTracer) )
125 c & *maskC(i,j,k,bi,bj)
126 & *rbcsVanishingFac
127 ENDDO
128 ENDDO
129 ENDIF
130 ENDIF
131 #endif /* ALLOW_PTRACERS */
132
133 #endif /* ALLOW_RBCS */
134
135 RETURN
136 END

  ViewVC Help
Powered by ViewVC 1.1.22