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

Contents of /MITgcm/pkg/obcs/obcs_copy_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, 7 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: +14 -14 lines
use new parameter OB_indexNone for null index value (instead of hard-coded 0)

1 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_copy_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_COPY_UV_N
8 C !INTERFACE:
9
10 SUBROUTINE OBCS_COPY_UV_N(
11 U uFld, vFld,
12 I kSiz, bi, bj, myThid )
13
14 C !DESCRIPTION: \bv
15 C *==========================================================*
16 C | S/R OBCS_COPY_UV_N
17 C | Copy normal value from the OB location to narrow band
18 C | region (width = same as overlap) beyond the OB.
19 C *==========================================================*
20 C | Note: need to copy at the beginning of the dynamics loop
21 C | only when Stevens boundary conditions are used
22 C *==========================================================*
23 C \ev
24 C !USES:
25 IMPLICIT NONE
26 C == Global variables ==
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "OBCS_PARAMS.h"
31 #include "OBCS_GRID.h"
32
33 C !INPUT/OUTPUT PARAMETERS:
34 C == Routine Arguments ==
35 C u/vFld :: u and v-components which OBC applies to.
36 C kSiz :: 3rd dim of tracer-field array "trFld"
37 C bi, bj :: indices of current tile
38 C myThid :: my Thread Id number
39 INTEGER kSiz
40 _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSiz)
41 _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSiz)
42 INTEGER bi, bj
43 INTEGER myThid
44 CEOP
45
46 #ifdef ALLOW_OBCS_STEVENS
47
48 C !LOCAL VARIABLES:
49 C == Local variables ==
50 INTEGER i, j, k
51 INTEGER Iobc, Jobc
52
53 C Set model variables to OB values on North/South Boundaries
54 #ifdef ALLOW_OBCS_NORTH
55 IF ( tileHasOBN(bi,bj) .AND. useStevensNorth ) THEN
56 C Northern boundary
57 DO i=1-OLx,sNx+OLx
58 Jobc = OB_Jn(i,bi,bj)
59 IF ( Jobc.NE.OB_indexNone ) THEN
60 DO k = 1, kSiz
61 DO j = Jobc+1, Jobc+OLy
62 vFld(i,j,k) = vFld(i,Jobc,k)
63 ENDDO
64 ENDDO
65 ENDIF
66 ENDDO
67 ENDIF
68 #endif /* ALLOW_OBCS_NORTH */
69
70 #ifdef ALLOW_OBCS_SOUTH
71 IF ( tileHasOBS(bi,bj) .AND. useStevensSouth ) THEN
72 C Southern boundary
73 DO i=1-OLx,sNx+OLx
74 Jobc = OB_Js(i,bi,bj)
75 IF ( Jobc.NE.OB_indexNone ) THEN
76 DO k = 1, kSiz
77 DO j = Jobc-OLy, Jobc
78 vFld(i,j,k) = vFld(i,Jobc+1,k)
79 ENDDO
80 ENDDO
81 ENDIF
82 ENDDO
83 ENDIF
84 #endif /* ALLOW_OBCS_SOUTH */
85
86 C Set model variables to OB values on East/West Boundaries
87 #ifdef ALLOW_OBCS_EAST
88 IF ( tileHasOBE(bi,bj) .AND. useStevensEast ) THEN
89 C Eastern boundary
90 DO j=1-OLy,sNy+OLy
91 Iobc = OB_Ie(j,bi,bj)
92 IF ( Iobc.NE.OB_indexNone ) THEN
93 DO k = 1, kSiz
94 DO i = Iobc+1, Iobc+OLx
95 uFld(i,j,k) = uFld(Iobc,j,k)
96 ENDDO
97 ENDDO
98 ENDIF
99 ENDDO
100 ENDIF
101 #endif /* ALLOW_OBCS_EAST */
102
103 #ifdef ALLOW_OBCS_WEST
104 IF ( tileHasOBW(bi,bj) .AND. useStevensWest ) THEN
105 C Western boundary
106 DO j=1-OLy,sNy+OLy
107 Iobc = OB_Iw(j,bi,bj)
108 IF ( Iobc.NE.OB_indexNone ) THEN
109 DO k = 1, kSiz
110 DO i = Iobc-OLx, Iobc
111 uFld(i,j,k) = uFld(Iobc+1,j,k)
112 ENDDO
113 ENDDO
114 ENDIF
115 ENDDO
116 ENDIF
117 #endif /* ALLOW_OBCS_WEST */
118
119 #endif /* ALLOW_OBCS_STEVENS */
120
121 RETURN
122 END

  ViewVC Help
Powered by ViewVC 1.1.22