/[MITgcm]/MITgcm/pkg/seaice/seaice_init_varia.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_init_varia.F

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

revision 1.21 by dimitri, Fri Sep 21 06:46:30 2007 UTC revision 1.22 by dimitri, Thu Oct 11 10:30:34 2007 UTC
# Line 47  C     i,j,k,bi,bj - Loop counters Line 47  C     i,j,k,bi,bj - Loop counters
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
# Line 96  C--   Initialize grid info Line 94  C--   Initialize grid info
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

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

  ViewVC Help
Powered by ViewVC 1.1.22