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

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

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


Revision 1.2 - (show annotations) (download)
Tue Sep 18 20:09:17 2012 UTC (11 years, 8 months ago) by jmc
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, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, 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, checkpoint64, checkpoint65, checkpoint64j, checkpoint64m, checkpoint64l, HEAD
Changes since 1.1: +5 -5 lines
use new parameter OB_indexNone for null index value (instead of hard-coded 0)

1 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_save_uv_n.F,v 1.1 2011/10/25 15:09:18 mlosch Exp $
2 C $Name: $
3
4 #include "OBCS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: OBCS_SAVE_UV_N
8 C !INTERFACE:
9 SUBROUTINE OBCS_SAVE_UV_N( bi, bj, iMin, iMax, jMin, jMax, kArg,
10 I uFld, vFld,
11 I myThid )
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | SUBROUTINE OBCS_SAVE_UV_N
15 C | Save normal velocities at the OB location to be used
16 C | in the next time step for Stevens boundary conditions
17 C *==========================================================*
18 C \ev
19 C !USES:
20 IMPLICIT NONE
21 C == Global variables ==
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "OBCS_PARAMS.h"
27 #include "OBCS_GRID.h"
28 #include "OBCS_FIELDS.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 C == Routine Arguments ==
32 C bi, bj :: indices of current tile
33 C iMin,iMax :: array boundaries
34 C jMin,jMax ::
35 C kArg :: index of current level which OBC applies to
36 C or, if zero, apply to all levels
37 C uFld :: horizontal velocity field, 1rst component (zonal)
38 C vFld :: horizontal velocity field, 2nd component (meridional)
39 C myThid :: my Thread Id number
40 INTEGER bi, bj
41 INTEGER iMin, iMax
42 INTEGER jMin, jMax
43 INTEGER kArg
44 _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
45 _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
46 INTEGER myThid
47 CEOP
48
49 #ifdef ALLOW_OBCS_STEVENS
50
51 C !LOCAL VARIABLES:
52 C == Local variables ==
53 INTEGER k, kLo, kHi
54 INTEGER i, j
55 INTEGER Iobc, Jobc
56
57 C-- Save model velocity normal to OB for next time step.
58 IF ( kArg.EQ.0 ) THEN
59 kLo = 1
60 kHi = Nr
61 ELSE
62 kLo = kArg
63 kHi = kArg
64 ENDIF
65
66 #ifdef ALLOW_OBCS_NORTH
67 IF ( tileHasOBN(bi,bj) .AND. useStevensNorth ) THEN
68 C Northern boundary
69 DO i=iMin,iMax
70 Jobc = OB_Jn(i,bi,bj)
71 IF ( Jobc.NE.OB_indexNone ) THEN
72 DO k = kLo,kHi
73 OBNvStevens(i,k,bi,bj) = vFld(i,Jobc,k,bi,bj)
74 & *_maskS(i,Jobc,k,bi,bj)
75 ENDDO
76 ENDIF
77 ENDDO
78 ENDIF
79 #endif
80 #ifdef ALLOW_OBCS_SOUTH
81 IF ( tileHasOBS(bi,bj) .AND. useStevensSouth ) THEN
82 C Southern boundary
83 DO i=iMin,iMax
84 Jobc = OB_Js(i,bi,bj)
85 IF ( Jobc.NE.OB_indexNone ) THEN
86 DO k = kLo,kHi
87 OBSvStevens(i,k,bi,bj) = vFld(i,Jobc+1,k,bi,bj)
88 & *_maskS(i,Jobc+1,k,bi,bj)
89 ENDDO
90 ENDIF
91 ENDDO
92 ENDIF
93 #endif
94
95 #ifdef ALLOW_OBCS_EAST
96 IF ( tileHasOBE(bi,bj) .AND. useStevensEast ) THEN
97 C Eastern boundary
98 DO j=jMin,jMax
99 Iobc = OB_Ie(j,bi,bj)
100 IF ( Iobc.NE.OB_indexNone ) THEN
101 DO k = kLo,kHi
102 OBEuStevens(j,k,bi,bj) = uFld(Iobc,j,k,bi,bj)
103 & *_maskW(Iobc,j,k,bi,bj)
104 ENDDO
105 ENDIF
106 ENDDO
107 ENDIF
108 #endif
109 #ifdef ALLOW_OBCS_WEST
110 IF ( tileHasOBW(bi,bj) .AND. useStevensWest ) THEN
111 C Western boundary
112 DO j=jMin,jMax
113 Iobc = OB_Iw(j,bi,bj)
114 IF ( Iobc.NE.OB_indexNone ) THEN
115 DO k = kLo,kHi
116 OBWuStevens(j,k,bi,bj) = uFld(Iobc+1,j,k,bi,bj)
117 & *_maskW(Iobc+1,j,k,bi,bj)
118 ENDDO
119 ENDIF
120 ENDDO
121 ENDIF
122 #endif
123 #endif /* ALLOW_OBCS_STEVENS */
124
125 RETURN
126 END

  ViewVC Help
Powered by ViewVC 1.1.22