/[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.3 - (show annotations) (download)
Sun Jun 11 01:36:56 2017 UTC (6 years, 11 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, HEAD
Changes since 1.2: +4 -1 lines
adding comments that only normal flow is applied by obcs_add_tides.F

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

  ViewVC Help
Powered by ViewVC 1.1.22