/[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.3 - (show annotations) (download)
Wed Jan 9 21:56:18 2013 UTC (12 years, 6 months ago) by dgoldberg
Branch: MAIN
Changes since 1.2: +15 -12 lines
changes to accept real datasets

1 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_velmask_upd.F,v 1.2 2012/09/04 21:11:44 dgoldberg 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 _EXCH_XY_RL( H_streamice, myThid )
35 _EXCH_XY_RL( area_shelf_streamice, myThid )
36 _EXCH_XY_RL( STREAMICE_hmask, myThid )
37
38 DO bj=myByLo(myThid),myByHi(myThid)
39 DO bi=myBxLo(myThid),myBxHi(myThid)
40 DO j=1-OLy,sNy+OLy
41 DO i=1-OLx,sNx+OLx
42 STREAMICE_umask(i,j,bi,bj) = 0. _d 0
43 STREAMICE_vmask(i,j,bi,bj) = 0. _d 0
44 STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0
45 STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0
46 ENDDO
47 ENDDO
48 ENDDO
49 ENDDO
50
51 DO bj=myByLo(myThid),myByHi(myThid)
52 DO bi=myBxLo(myThid),myBxHi(myThid)
53 DO j=0,sNy+1
54 DO i=0,sNx+1
55 IF (STREAMICE_hmask(i,j,bi,bj) .eq. 1) THEN
56
57 DO kj=0,1
58 DO ki=0,1
59 STREAMICE_umask (i+ki,j+kj,bi,bj) = 1.0
60 STREAMICE_vmask (i+ki,j+kj,bi,bj) = 1.0
61 ENDDO
62 ENDDO
63
64 DO ki=0,1
65 maskFlag=INT(STREAMICE_ufacemask_bdry(i+ki,j,bi,bj))
66 IF (maskFlag.EQ.3) THEN
67 DO kj=0,1
68 STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0
69 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0
70 ENDDO
71 STREAMICE_ufacemask(i+ki,j,bi,bj) = 3.0
72 ELSE IF (maskFlag.EQ.2) THEN
73 !DO kj=0,1
74 STREAMICE_ufacemask(i+ki,j,bi,bj) = 2.0
75 !ENDDO
76 ELSE IF (maskFlag.EQ.4) THEN
77 DO kj=0,1
78 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
79 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
80 ENDDO
81 STREAMICE_ufacemask(i+ki,j,bi,bj) = 4.0
82 ELSE IF (maskFlag.EQ.0) THEN
83 DO kj=0,1
84 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
85 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
86 ENDDO
87 STREAMICE_ufacemask(i+ki,j,bi,bj) = 0.0
88 ELSE IF (maskFlag.EQ.1) THEN
89 DO kj=0,1
90 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
91 ENDDO
92 END IF
93 ENDDO
94
95 DO kj=0,1
96 maskFlag=INT(STREAMICE_vfacemask_bdry(i,j+kj,bi,bj))
97 IF (maskFlag.EQ.3) THEN
98 DO ki=0,1
99 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0
100 STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0
101 ENDDO
102 STREAMICE_vfacemask(i,j+kj,bi,bj) = 3.0
103 ELSE IF (maskFlag.EQ.2) THEN
104 !DO ki=0,1
105 STREAMICE_vfacemask(i,j+kj,bi,bj) = 2.0
106 !ENDDO
107 ELSE IF (maskFlag.EQ.4) THEN
108 DO ki=0,1
109 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
110 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
111 ENDDO
112 STREAMICE_vfacemask(i,j+kj,bi,bj) = 4.0
113 ELSE IF (maskFlag.EQ.0) THEN
114 DO ki=0,1
115 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
116 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
117 ENDDO
118 STREAMICE_vfacemask(i+ki,j,bi,bj) = 0.0
119 ELSE IF (maskFlag.EQ.1) THEN
120 DO ki=0,1
121 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
122 ENDDO
123 ENDIF
124 ENDDO
125
126 IF (i .lt. sNx+OLx) THEN
127 IF ((STREAMICE_hmask(i+1,j,bi,bj) .eq. 0.0) .OR.
128 & (STREAMICE_hmask(i+1,j,bi,bj) .eq. 2.0)) THEN
129 !right boundary or adjacent to unfilled cell
130 STREAMICE_ufacemask(i+1,j,bi,bj) = 2.0
131 ENDIF
132 ENDIF
133
134 IF (i .gt. 1-OLx) THEN
135 IF ((STREAMICE_hmask(i-1,j,bi,bj) .eq. 0.0) .OR.
136 & (STREAMICE_hmask(i-1,j,bi,bj) .eq. 2.0)) THEN
137 !left boundary or adjacent to unfilled cell
138 STREAMICE_ufacemask(i,j,bi,bj) = 2
139 ENDIF
140 ENDIF
141
142 IF (j .lt. sNy+OLy) THEN
143 IF ((STREAMICE_hmask(i,j+1,bi,bj) .eq. 0.0) .OR.
144 & (STREAMICE_hmask(i,j+1,bi,bj) .eq. 2.0)) THEN
145 !top boundary or adjacent to unfilled cell
146 STREAMICE_vfacemask(i,j+1,bi,bj) = 2
147 ENDIF
148 ENDIF
149
150 IF (j .gt. 1-OLy) THEN
151 IF ((STREAMICE_hmask(i,j-1,bi,bj) .eq. 0.0) .OR.
152 & (STREAMICE_hmask(i,j-1,bi,bj) .eq. 2.0)) THEN
153 !bot boundary or adjacent to unfilled cell
154 STREAMICE_vfacemask(i,j,bi,bj) = 2.0
155 ENDIF
156 ENDIF
157
158 ENDIF
159 ENDDO
160 ENDDO
161 ENDDO
162 ENDDO
163
164 _EXCH_XY_RL( STREAMICE_ufacemask, myThid )
165 _EXCH_XY_RL( STREAMICE_vfacemask, myThid )
166 _EXCH_XY_RL( STREAMICE_umask, myThid )
167 _EXCH_XY_RL( STREAMICE_vmask, myThid )
168
169 ! CALL WRITE_FULLARRAY_RL ("umask",STREAMICE_umask,
170 ! c 1,0,0,1,0,myThid)
171 CALL WRITE_FLD_XY_RL ("umask","",STREAMICE_umask,0,myThid)
172 CALL WRITE_FLD_XY_RL ("vmask","",STREAMICE_vmask,0,myThid)
173 CALL WRITE_FLD_XY_RL ("ufacemask","",STREAMICE_ufacemask,0,myThid)
174 CALL WRITE_FLD_XY_RL ("vfacemask","",STREAMICE_vfacemask,0,myThid)
175
176
177
178 #endif
179 RETURN
180 END

  ViewVC Help
Powered by ViewVC 1.1.22