/[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.5 - (show annotations) (download)
Tue Apr 6 20:38:18 2010 UTC (14 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62x
Changes since 1.4: +48 -53 lines
clean-up RBCS code: add RBCS_OPTIONS.h file ; fix multi-threaded ;
  change (+ fix IO calls) type of array RBC_mask from _RL to _RS.

1 C $Header: /u/gcmpack/MITgcm/pkg/rbcs/rbcs_add_tendency.F,v 1.4 2007/11/05 19:08:51 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 "GRID.h"
21 #include "DYNVARS.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #ifdef ALLOW_PTRACERS
25 #include "PTRACERS_SIZE.h"
26 #include "PTRACERS_FIELDS.h"
27 #endif
28 #include "RBCS.h"
29
30 C !INPUT PARAMETERS: ===================================================
31 C bi,bj :: tile indices
32 C k :: vertical level index
33 C tracerNum :: tracer number (1=Temp, 2=Salt, >2 : ptracer)
34 C myTime :: current time
35 C myIter :: current timestep
36 C myThid :: my Thread Id number
37 INTEGER bi, bj, k
38 INTEGER tracerNum
39 _RL myTime
40 c INTEGER myIter
41 INTEGER myThid
42
43 C !LOCAL VARIABLES: ====================================================
44 C i,j :: loop indices
45 INTEGER i,j
46 #ifdef ALLOW_PTRACERS
47 INTEGER iTracer
48 INTEGER irbc
49 #endif
50 CEOP
51
52 #ifdef ALLOW_RBCS
53
54 IF ( tracerNum.EQ.1 .AND. useRBCtemp ) THEN
55 DO j=1,sNy
56 DO i=1,sNx
57 gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj)
58 & - maskC(i,j,k,bi,bj)
59 & *RBC_mask(i,j,k,bi,bj,1)/tauRelaxT
60 & *( theta(i,j,k,bi,bj)- RBCtemp(i,j,k,bi,bj) )
61 ENDDO
62 ENDDO
63 ENDIF
64
65 IF ( tracerNum.EQ.2 .AND. useRBCsalt ) THEN
66 DO j=1,sNy
67 DO i=1,sNx
68 gS(i,j,k,bi,bj) = gS(i,j,k,bi,bj)
69 & - maskC(i,j,k,bi,bj)
70 & *RBC_mask(i,j,k,bi,bj,2)/tauRelaxS
71 & *( salt(i,j,k,bi,bj)- RBCsalt(i,j,k,bi,bj) )
72 ENDDO
73 ENDDO
74 ENDIF
75
76 #ifdef ALLOW_PTRACERS
77 IF ( usePTRACERS .AND. tracerNum.GT.2 ) THEN
78 iTracer = tracerNum-2
79 irbc = MIN(maskLEN,tracerNum)
80 IF ( useRBCptrnum(iTracer) ) THEN
81 DO j=1,sNy
82 DO i=1,sNx
83 gPtr(i,j,k,bi,bj,iTracer) = gPtr(i,j,k,bi,bj,iTracer)
84 & - maskC(i,j,k,bi,bj)
85 & *RBC_mask(i,j,k,bi,bj,irbc)/tauRelaxPTR(iTracer)
86 & *( pTracer(i,j,k,bi,bj,iTracer)
87 & - RBC_ptracers(i,j,k,bi,bj,iTracer) )
88 ENDDO
89 ENDDO
90 ENDIF
91 ENDIF
92 #endif /* ALLOW_PTRACERS */
93
94 #endif /* ALLOW_RBCS */
95
96 RETURN
97 END

  ViewVC Help
Powered by ViewVC 1.1.22