47 |
|
|
48 |
#ifdef ALLOW_OBCS |
#ifdef ALLOW_OBCS |
49 |
INTEGER I_obc, J_obc, kSurface |
INTEGER I_obc, J_obc, kSurface |
|
_RL obc_mask |
|
|
|
|
50 |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
51 |
kSurface = Nr |
kSurface = Nr |
52 |
else |
else |
94 |
IF (_hFacC(i,j,1,bi,bj).eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
IF (_hFacC(i,j,1,bi,bj).eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
95 |
ENDDO |
ENDDO |
96 |
ENDDO |
ENDDO |
97 |
|
DO J=1-OLy+1,sNy+OLy |
98 |
|
DO I=1-OLx+1,sNx+OLx |
99 |
|
#ifdef SEAICE_CGRID |
100 |
|
seaiceMaskU(I,J,bi,bj)= 0.0 _d 0 |
101 |
|
seaiceMaskV(I,J,bi,bj)= 0.0 _d 0 |
102 |
|
mask_uice=HEFFM(I,J,bi,bj)+HEFFM(I-1,J ,bi,bj) |
103 |
|
IF(mask_uice.GT.1.5) seaiceMaskU(I,J,bi,bj)=ONE |
104 |
|
mask_uice=HEFFM(I,J,bi,bj)+HEFFM(I ,J-1,bi,bj) |
105 |
|
IF(mask_uice.GT.1.5) seaiceMaskV(I,J,bi,bj)=ONE |
106 |
|
#else |
107 |
|
UVM(i,j,bi,bj)=0. _d 0 |
108 |
|
mask_uice=HEFFM(I,J, bi,bj)+HEFFM(I-1,J-1,bi,bj) |
109 |
|
& +HEFFM(I,J-1,bi,bj)+HEFFM(I-1,J, bi,bj) |
110 |
|
IF(mask_uice.GT.3.5) UVM(I,J,bi,bj)=ONE |
111 |
|
#endif /* SEAICE_CGRID */ |
112 |
|
ENDDO |
113 |
|
ENDDO |
114 |
|
|
115 |
#ifdef ALLOW_OBCS |
#ifdef ALLOW_OBCS |
116 |
IF (useOBCS) THEN |
IF (useOBCS) THEN |
117 |
C Apply OBCS T/S mask (taken from pkg/obcs/obcs_apply_ts.F) |
C-- If OBCS is turned on, close southern and western boundaries |
|
C Additionally apply a mask along all open boundaries |
|
|
C Until proper seaice open boundaries are implemented, this |
|
|
C masking is needed to avoid communication across open boundaries. |
|
|
#ifdef ALLOW_OBCS_NORTH |
|
|
DO I=1-Olx,sNx+Olx |
|
|
C Northern boundary |
|
|
J_obc = OB_Jn(I,bi,bj) |
|
|
IF (J_obc.NE.0) THEN |
|
|
HEFFM(I,J_obc,bi,bj)=0. _d 0 |
|
|
obc_mask = _maskS(I,J_obc,kSurface,bi,bj) |
|
|
DO J = J_obc, J_obc+Oly |
|
|
IF (obc_mask.eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
|
|
ENDDO |
|
|
ENDIF |
|
|
ENDDO |
|
|
#endif |
|
118 |
#ifdef ALLOW_OBCS_SOUTH |
#ifdef ALLOW_OBCS_SOUTH |
119 |
DO I=1-Olx,sNx+Olx |
DO I=1-Olx,sNx+Olx |
120 |
C Southern boundary |
C Southern boundary |
121 |
J_obc = OB_Js(I,bi,bj) |
J_obc = OB_Js(I,bi,bj) |
122 |
IF (J_obc.NE.0) THEN |
IF (J_obc.NE.0) THEN |
123 |
HEFFM(I,J_obc,bi,bj)=0. _d 0 |
#ifdef SEAICE_CGRID |
124 |
obc_mask = _maskS(I,J_obc+1,kSurface,bi,bj) |
seaiceMaskU(I,J_obc,bi,bj)= 0.0 _d 0 |
125 |
DO J = J_obc-Oly, J_obc |
seaiceMaskV(I,J_obc,bi,bj)= 0.0 _d 0 |
126 |
IF (obc_mask.eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
#else |
127 |
ENDDO |
UVM(I,J_obc,bi,bj)=0. _d 0 |
128 |
ENDIF |
#endif /* SEAICE_CGRID */ |
|
ENDDO |
|
|
#endif |
|
|
#ifdef ALLOW_OBCS_EAST |
|
|
DO J=1-Oly,sNy+Oly |
|
|
C Eastern boundary |
|
|
I_obc = OB_Ie(J,bi,bj) |
|
|
IF (I_obc.NE.0) THEN |
|
|
HEFFM(I_obc,J,bi,bj)=0. _d 0 |
|
|
obc_mask = _maskW(I_obc,J,kSurface,bi,bj) |
|
|
DO I = I_obc, I_obc+Olx |
|
|
IF (obc_mask.eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
|
|
ENDDO |
|
129 |
ENDIF |
ENDIF |
130 |
ENDDO |
ENDDO |
131 |
#endif |
#endif /* ALLOW_OBCS_SOUTH */ |
132 |
#ifdef ALLOW_OBCS_WEST |
#ifdef ALLOW_OBCS_WEST |
133 |
DO J=1-Oly,sNy+Oly |
DO J=1-Oly,sNy+Oly |
134 |
C Western boundary |
C Western boundary |
135 |
I_obc=OB_Iw(J,bi,bj) |
I_obc=OB_Iw(J,bi,bj) |
136 |
IF (I_obc.NE.0) THEN |
IF (I_obc.NE.0) THEN |
|
HEFFM(I_obc,J,bi,bj)=0. _d 0 |
|
|
obc_mask = _maskW(I_obc+1,J,kSurface,bi,bj) |
|
|
DO I = I_obc-Olx, I_obc |
|
|
IF (obc_mask.eq.0.) HEFFM(i,j,bi,bj)=0. _d 0 |
|
|
ENDDO |
|
|
ENDIF |
|
|
ENDDO |
|
|
#endif |
|
|
_EXCH_XY_R8(HEFFM, myThid) |
|
|
ENDIF |
|
|
#endif /* ALLOW_OBCS */ |
|
|
|
|
|
DO J=1-OLy+1,sNy+OLy |
|
|
DO I=1-OLx+1,sNx+OLx |
|
137 |
#ifdef SEAICE_CGRID |
#ifdef SEAICE_CGRID |
138 |
seaiceMaskU(I,J,bi,bj)= 0.0 _d 0 |
seaiceMaskU(I_obc,J,bi,bj)= 0.0 _d 0 |
139 |
seaiceMaskV(I,J,bi,bj)= 0.0 _d 0 |
seaiceMaskV(I_obc,J,bi,bj)= 0.0 _d 0 |
|
mask_uice=HEFFM(I,J,bi,bj)+HEFFM(I-1,J ,bi,bj) |
|
|
IF(mask_uice.GT.1.5) seaiceMaskU(I,J,bi,bj)=ONE |
|
|
mask_uice=HEFFM(I,J,bi,bj)+HEFFM(I ,J-1,bi,bj) |
|
|
IF(mask_uice.GT.1.5) seaiceMaskV(I,J,bi,bj)=ONE |
|
140 |
#else |
#else |
141 |
UVM(i,j,bi,bj)=0. _d 0 |
UVM(I_obc,J,bi,bj)=0. _d 0 |
|
mask_uice=HEFFM(I,J, bi,bj)+HEFFM(I-1,J-1,bi,bj) |
|
|
& +HEFFM(I,J-1,bi,bj)+HEFFM(I-1,J, bi,bj) |
|
|
IF(mask_uice.GT.3.5) UVM(I,J,bi,bj)=ONE |
|
142 |
#endif /* SEAICE_CGRID */ |
#endif /* SEAICE_CGRID */ |
143 |
|
ENDIF |
144 |
ENDDO |
ENDDO |
145 |
ENDDO |
#endif /* ALLOW_OBCS_WEST */ |
146 |
|
ENDIF |
147 |
|
#endif /* ALLOW_OBCS */ |
148 |
|
|
149 |
#ifdef ALLOW_EXCH2 |
#ifdef ALLOW_EXCH2 |
150 |
#ifndef SEAICE_CGRID |
#ifndef SEAICE_CGRID |