/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_velmask_upd.F
ViewVC logotype

Contents of /MITgcm_contrib/dgoldberg/streamice/streamice_velmask_upd.F

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


Revision 1.1 - (show annotations) (download)
Thu Mar 29 15:59:21 2012 UTC (13 years, 3 months ago) by heimbach
Branch: MAIN
Initial check-in of Dan Goldberg's streamice package

1 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_varia.F,v 1.6 2011/06/29 16:24:10 dng Exp $
2 C $Name: $
3
4 #include "STREAMICE_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7
8 CBOP
9 SUBROUTINE STREAMICE_VELMASK_UPD ( myThid )
10
11 C /============================================================\
12 C | SUBROUTINE |
13 C | o |
14 C |============================================================|
15 C | |
16 C \============================================================/
17 IMPLICIT NONE
18
19 C === Global variables ===
20 #include "SIZE.h"
21 #include "GRID.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "STREAMICE.h"
25 ! #include "STREAMICE_ADV.h"
26
27 INTEGER myThid
28
29 #ifdef ALLOW_STREAMICE
30
31 INTEGER i, j, bi, bj, ki, kj
32 INTEGER maskFlag
33
34 DO bj=myByLo(myThid),myByHi(myThid)
35 DO bi=myBxLo(myThid),myBxHi(myThid)
36 DO j=1-OLy,sNy+OLy
37 DO i=1-OLx,sNx+OLx
38 STREAMICE_umask(i,j,bi,bj) = 0. _d 0
39 STREAMICE_vmask(i,j,bi,bj) = 0. _d 0
40 STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0
41 STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0
42 ENDDO
43 ENDDO
44 ENDDO
45 ENDDO
46
47 DO bj=myByLo(myThid),myByHi(myThid)
48 DO bi=myBxLo(myThid),myBxHi(myThid)
49 DO j=0,sNy+1
50 DO i=0,sNx+1
51 IF (STREAMICE_hmask(i,j,bi,bj) .eq. 1) THEN
52
53 DO kj=0,1
54 DO ki=0,1
55 STREAMICE_umask (i+ki,j+kj,bi,bj) = 1.0
56 STREAMICE_vmask (i+ki,j+kj,bi,bj) = 1.0
57 ENDDO
58 ENDDO
59
60 DO ki=0,1
61 maskFlag=INT(STREAMICE_ufacemask_bdry(i+ki,j,bi,bj))
62 IF (maskFlag.EQ.3) THEN
63 DO kj=0,1
64 STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0
65 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
66 ENDDO
67 STREAMICE_ufacemask(i+ki,j,bi,bj) = 3.0
68 ELSE IF (maskFlag.EQ.2) THEN
69 DO kj=0,1
70 STREAMICE_ufacemask(i+ki,j+kj,bi,bj) = 2.0
71 ENDDO
72 ELSE IF (maskFlag.EQ.4) THEN
73 DO kj=0,1
74 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
75 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
76 ENDDO
77 STREAMICE_ufacemask(i+ki,j,bi,bj) = 4.0
78 ELSE IF (maskFlag.EQ.0) THEN
79 DO kj=0,1
80 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
81 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
82 ENDDO
83 STREAMICE_ufacemask(i+ki,j,bi,bj) = 0.0
84 ELSE IF (maskFlag.EQ.1) THEN
85 DO kj=0,1
86 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
87 ENDDO
88 END IF
89 ENDDO
90
91 DO kj=0,1
92 maskFlag=INT(STREAMICE_vfacemask_bdry(i,j+kj,bi,bj))
93 IF (maskFlag.EQ.3) THEN
94 DO ki=0,1
95 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0
96 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
97 ENDDO
98 STREAMICE_vfacemask(i+ki,j,bi,bj) = 3.0
99 ELSE IF (maskFlag.EQ.2) THEN
100 DO ki=0,1
101 STREAMICE_vfacemask(i+ki,j+kj,bi,bj) = 2.0
102 ENDDO
103 ELSE IF (maskFlag.EQ.4) THEN
104 DO ki=0,1
105 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
106 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
107 ENDDO
108 STREAMICE_vfacemask(i+ki,j,bi,bj) = 4.0
109 ELSE IF (maskFlag.EQ.0) THEN
110 DO ki=0,1
111 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
112 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
113 ENDDO
114 STREAMICE_vfacemask(i+ki,j,bi,bj) = 0.0
115 ELSE IF (maskFlag.EQ.1) THEN
116 DO ki=0,1
117 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
118 ENDDO
119 ENDIF
120 ENDDO
121
122 IF (i .lt. sNx+OLx) THEN
123 IF ((STREAMICE_hmask(i+1,j,bi,bj) .eq. 0.0) .OR.
124 & (STREAMICE_hmask(i+1,j,bi,bj) .eq. 2.0)) THEN
125 !right boundary or adjacent to unfilled cell
126 STREAMICE_ufacemask(i+1,j,bi,bj) = 2.0
127 ENDIF
128 ENDIF
129
130 IF (i .gt. 1-OLx) THEN
131 IF ((STREAMICE_hmask(i-1,j,bi,bj) .eq. 0.0) .OR.
132 & (STREAMICE_hmask(i-1,j,bi,bj) .eq. 2.0)) THEN
133 !left boundary or adjacent to unfilled cell
134 STREAMICE_ufacemask(i,j,bi,bj) = 2
135 ENDIF
136 ENDIF
137
138 IF (j .lt. sNy+OLy) THEN
139 IF ((STREAMICE_hmask(i,j+1,bi,bj) .eq. 0.0) .OR.
140 & (STREAMICE_hmask(i,j+1,bi,bj) .eq. 2.0)) THEN
141 !top boundary or adjacent to unfilled cell
142 STREAMICE_vfacemask(i,j+1,bi,bj) = 2
143 ENDIF
144 ENDIF
145
146 IF (j .gt. 1-OLy) THEN
147 IF ((STREAMICE_hmask(i,j-1,bi,bj) .eq. 0.0) .OR.
148 & (STREAMICE_hmask(i,j-1,bi,bj) .eq. 2.0)) THEN
149 !bot boundary or adjacent to unfilled cell
150 STREAMICE_vfacemask(i,j,bi,bj) = 2.0
151 ENDIF
152 ENDIF
153
154 ENDIF
155 ENDDO
156 ENDDO
157 ENDDO
158 ENDDO
159
160 _EXCH_XY_RL( STREAMICE_ufacemask, myThid )
161 _EXCH_XY_RL( STREAMICE_vfacemask, myThid )
162 _EXCH_XY_RL( STREAMICE_umask, myThid )
163 _EXCH_XY_RL( STREAMICE_vmask, myThid )
164
165 ! CALL WRITE_FULLARRAY_RL ("umask",STREAMICE_umask,
166 ! c 1,0,0,1,0,myThid)
167 ! CALL WRITE_FLD_XY_RL ("umask2","",STREAMICE_umask,0,myThid)
168
169
170
171 #endif
172 RETURN
173 END

  ViewVC Help
Powered by ViewVC 1.1.22