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

Annotation 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 - (hide 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 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_save_uv_n.F,v 1.1 2011/10/25 15:09:18 mlosch Exp $
2 mlosch 1.1 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 jmc 1.2 IF ( Jobc.NE.OB_indexNone ) THEN
72 mlosch 1.1 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 jmc 1.2 IF ( Jobc.NE.OB_indexNone ) THEN
86 mlosch 1.1 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 jmc 1.2 IF ( Iobc.NE.OB_indexNone ) THEN
101 mlosch 1.1 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 jmc 1.2 IF ( Iobc.NE.OB_indexNone ) THEN
115 mlosch 1.1 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