/[MITgcm]/MITgcm/pkg/obcs/obcs_add_tides.F
ViewVC logotype

Contents of /MITgcm/pkg/obcs/obcs_add_tides.F

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


Revision 1.2 - (show annotations) (download)
Thu Nov 15 20:46:52 2012 UTC (11 years, 5 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64o, checkpoint64a, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint64n, checkpoint66h, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64c, checkpoint64g, checkpoint64f, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint65, checkpoint64j, checkpoint64m, checkpoint64l
Changes since 1.1: +5 -4 lines
fixing some bugs for recent obcs_add_tides commit

1 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_add_tides.F,v 1.1 2012/11/15 15:55:42 dimitri Exp $
2 C $Name: $
3
4 #include "OBCS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: OBCS_ADD_TIDES
9
10 C !INTERFACE:
11 SUBROUTINE OBCS_ADD_TIDES( myTime, myIter, myThid )
12
13 C !DESCRIPTION:
14 C *==========================================================*
15 C | SUBROUTINE OBCS_ADD_TIDES
16 C | o Modify OB normal flow to add tidal forcing
17 C *==========================================================*
18
19 C !USES:
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "GRID.h"
27 #include "OBCS_PARAMS.h"
28 #include "OBCS_GRID.h"
29 #include "OBCS_FIELDS.h"
30
31 C !INPUT/OUTPUT PARAMETERS:
32 _RL myTime
33 INTEGER myIter
34 INTEGER myThid
35 CEOP
36
37 #ifdef ALLOW_OBCS
38 #ifdef ALLOW_OBCS_TIDES
39
40 C !FUNCTIONS:
41
42 C !LOCAL VARIABLES:
43 C bi, bj :: tile indices
44 C i,j,k :: loop indices
45 C iB, jB :: local index of open boundary
46 C msgBuf :: Informational/error message buffer
47 INTEGER bi, bj
48 INTEGER i, j, k, iB, jB
49 INTEGER td
50
51 #ifdef ALLOW_DEBUG
52 IF (debugMode) CALL DEBUG_ENTER('OBCS_ADD_TIDES',myThid)
53 #endif
54
55 C-- Add tidal currents:
56 DO bj=myByLo(myThid),myByHi(myThid)
57 DO bi=myBxLo(myThid),myBxHi(myThid)
58
59 #ifdef ALLOW_OBCS_EAST
60 IF ( tileHasOBE(bi,bj) ) THEN
61 DO k=1,Nr
62 DO j=1-OLy,sNy+OLy
63 iB = OB_Ie(j,bi,bj)
64 IF ( iB.NE.OB_indexNone ) THEN
65 DO td=1,tidalComponents
66 OBEu(j,k,bi,bj) = OBEu(j,k,bi,bj) +
67 & maskW(iB,j,k,bi,bj) * OBEam(j,td,bi,bj) *
68 & COS( 2.D0 * PI * (myTime-OBEph(j,td,bi,bj)) /
69 & tidalPeriod(td) )
70 ENDDO
71 ENDIF
72 ENDDO
73 ENDDO
74 ENDIF
75 #endif /* ALLOW_OBCS_EAST */
76
77 #ifdef ALLOW_OBCS_WEST
78 IF ( tileHasOBW(bi,bj) ) THEN
79 DO k=1,Nr
80 DO j=1-OLy,sNy+OLy
81 iB = OB_Iw(j,bi,bj)
82 IF ( iB.NE.OB_indexNone ) THEN
83 DO td=1,tidalComponents
84 OBWu(j,k,bi,bj) = OBWu(j,k,bi,bj) +
85 & maskW(1+iB,j,k,bi,bj) * OBWam(j,td,bi,bj) *
86 & COS( 2.D0 * PI * (myTime-OBWph(j,td,bi,bj)) /
87 & tidalPeriod(td) )
88 ENDDO
89 ENDIF
90 ENDDO
91 ENDDO
92 ENDIF
93 #endif /* ALLOW_OBCS_WEST */
94
95 #ifdef ALLOW_OBCS_NORTH
96 IF ( tileHasOBN(bi,bj) ) THEN
97 DO k=1,Nr
98 DO i=1-OLx,sNx+OLx
99 jB = OB_Jn(i,bi,bj)
100 IF ( jB.NE.OB_indexNone ) THEN
101 DO td=1,tidalComponents
102 OBNv(i,k,bi,bj) = OBNv(i,k,bi,bj) +
103 & maskS(i,jB,k,bi,bj) * OBNam(i,td,bi,bj) *
104 & COS( 2.D0 * PI * (myTime-OBNph(i,td,bi,bj)) /
105 & tidalPeriod(td) )
106 ENDDO
107 ENDIF
108 ENDDO
109 ENDDO
110 ENDIF
111 #endif /* ALLOW_OBCS_NORTH */
112
113 #ifdef ALLOW_OBCS_SOUTH
114 IF ( tileHasOBS(bi,bj) ) THEN
115 DO k=1,Nr
116 DO i=1-OLx,sNx+OLx
117 jB = OB_Js(i,bi,bj)
118 IF ( jB.NE.OB_indexNone ) THEN
119 DO td=1,tidalComponents
120 OBSv(i,k,bi,bj) = OBSv(i,k,bi,bj) +
121 & maskS(i,1+jB,k,bi,bj)* OBSam(i,td,bi,bj) *
122 & COS( 2.D0 * PI * (myTime-OBSph(i,td,bi,bj)) /
123 & tidalPeriod(td) )
124 ENDDO
125 ENDIF
126 ENDDO
127 ENDDO
128 ENDIF
129 #endif /* ALLOW_OBCS_SOUTH */
130
131 ENDDO
132 ENDDO
133
134 #ifdef ALLOW_DEBUG
135 IF (debugMode) CALL DEBUG_LEAVE('OBCS_ADD_TIDES',myThid)
136 #endif
137
138 #endif /* ALLOW_OBCS_TIDES */
139 #endif /* ALLOW_OBCS */
140
141 RETURN
142 END

  ViewVC Help
Powered by ViewVC 1.1.22