Back to home page

MITgcm

 
 

    


File indexing completed on 2023-09-21 05:10:50 UTC

view on githubraw file Latest commit 96b00645 on 2023-09-20 15:15:14 UTC
29d9814714 Dani*0001 #include "STREAMICE_OPTIONS.h"
                0002 
                0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 
                0005 CBOP
96b006450c dngo*0006       SUBROUTINE STREAMICE_DRIVING_STRESS_FD( myThid )
                0007 c      O taudx,
                0008 c      O taudy )
29d9814714 Dani*0009 
                0010 C     /============================================================\
96b006450c dngo*0011 C     | SUBROUTINE                                                 |
29d9814714 Dani*0012 C     | o                                                          |
                0013 C     |============================================================|
                0014 C     |                                                            |
                0015 C     \============================================================/
                0016       IMPLICIT NONE
                0017 
                0018 C     === Global variables ===
                0019 #include "SIZE.h"
                0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
                0022 #include "GRID.h"
                0023 #include "STREAMICE.h"
                0024 #include "STREAMICE_CG.h"
                0025 
                0026 C     !INPUT/OUTPUT ARGUMENTS
                0027       INTEGER myThid
96b006450c dngo*0028 c       _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0029 c       _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
29d9814714 Dani*0030 
                0031 #ifdef ALLOW_STREAMICE
                0032 
                0033 C     LOCAL VARIABLES
96b006450c dngo*0034       INTEGER i, j, bi, bj
                0035 c     INTEGER Gi, Gj
29d9814714 Dani*0036       _RL dsdx
                0037      & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0038       _RL dsdy
                0039      & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0040       _RL face_factor, grd_below_sl, i_rhow
                0041 
                0042       i_rhow = 1./streamice_density_ocean_avg
                0043 
                0044       DO bj = myByLo(myThid), myByHi(myThid)
                0045        DO bi = myBxLo(myThid), myBxHi(myThid)
                0046         DO j=1-OLy+1,sNy+OLy-1
                0047          DO i=1-OLx+1,sNx+OLx-1
                0048           taudx_SI(i,j,bi,bj) = 0. _d 0
96b006450c dngo*0049           taudy_SI(i,j,bi,bj) = 0. _d 0
29d9814714 Dani*0050          ENDDO
                0051         ENDDO
                0052        ENDDO
                0053       ENDDO
                0054 
                0055       DO bj = myByLo(myThid), myByHi(myThid)
                0056        DO bi = myBxLo(myThid), myBxHi(myThid)
b2df4048e4 Dani*0057         DO j=1,sNy
                0058          DO i=1,sNx
29d9814714 Dani*0059 
                0060           IF (streamice_hmask(i,j,bi,bj) .eq. 1) THEN
                0061 
96b006450c dngo*0062 c    ds/dx ------------------------------------------------
29d9814714 Dani*0063 
                0064            IF (streamice_hmask(i-1,j,bi,bj) .eq. 1) THEN
                0065 
                0066             dsdx(i,j,bi,bj) = recip_dxC(i,j,bi,bj) *
96b006450c dngo*0067      &       (surf_el_streamice(i,j,bi,bj) -
29d9814714 Dani*0068      &        surf_el_streamice(i-1,j,bi,bj))
                0069 
                0070            ELSEIF (streamice_hmask(i-1,j,bi,bj).eq.0.or.
                0071      &             streamice_hmask(i-1,j,bi,bj).eq.2) THEN
                0072 
                0073             IF (streamice_hmask(i+1,j,bi,bj).eq.1) THEN
                0074              dsdx(i,j,bi,bj) = recip_dxC(i+1,j,bi,bj) *
96b006450c dngo*0075      &       (surf_el_streamice(i+1,j,bi,bj) -
29d9814714 Dani*0076      &        surf_el_streamice(i,j,bi,bj))
                0077             ELSE
                0078              dsdx(i,j,bi,bj) = 0.0
                0079             ENDIF
                0080 
                0081            ELSE ! streamice_hmask(i-1,j,bi,bj).eq. -1
                0082             dsdx(i,j,bi,bj) = 0.0
                0083            ENDIF
                0084 
96b006450c dngo*0085 c    ds/dy ------------------------------------------------
29d9814714 Dani*0086 
                0087            IF (streamice_hmask(i,j-1,bi,bj) .eq. 1) THEN
                0088 
                0089             dsdy(i,j,bi,bj) = recip_dyC(i,j,bi,bj) *
96b006450c dngo*0090      &       (surf_el_streamice(i,j,bi,bj) -
29d9814714 Dani*0091      &        surf_el_streamice(i,j-1,bi,bj))
                0092 
                0093            ELSEIF (streamice_hmask(i,j-1,bi,bj).eq.0.or.
                0094      &             streamice_hmask(i,j-1,bi,bj).eq.2) THEN
                0095 
                0096             IF (streamice_hmask(i,j+1,bi,bj).eq.1) THEN
                0097              dsdy(i,j,bi,bj) = recip_dyC(i,j+1,bi,bj) *
96b006450c dngo*0098      &       (surf_el_streamice(i,j+1,bi,bj) -
29d9814714 Dani*0099      &        surf_el_streamice(i,j,bi,bj))
                0100             ELSE
                0101              dsdy(i,j,bi,bj) = 0.0
                0102             ENDIF
                0103 
                0104            ELSE ! streamice_hmask(i-1,j,bi,bj).eq. -1
                0105             dsdx(i,j,bi,bj) = 0.0
                0106            ENDIF
                0107 
96b006450c dngo*0108 c    end ------------------------------------------------
29d9814714 Dani*0109 
                0110           ELSEIF(streamice_hmask(i,j,bi,bj).eq.0.or.
                0111      &            streamice_hmask(i,j,bi,bj).eq.2) THEN
                0112 
96b006450c dngo*0113 c    ds/dx ------------------------------------------------
29d9814714 Dani*0114 
                0115            IF(streamice_hmask(i-1,j,bi,bj).eq.1.and.
                0116      &         streamice_hmask(i-2,j,bi,bj).eq.1) THEN
                0117 
                0118              dsdx(i,j,bi,bj) = recip_dxC(i-1,j,bi,bj) *
96b006450c dngo*0119      &       (surf_el_streamice(i-1,j,bi,bj) -
29d9814714 Dani*0120      &        surf_el_streamice(i-2,j,bi,bj))
                0121 
                0122            ELSE
                0123             dsdx(i,j,bi,bj) = 0.0
                0124 
                0125            ENDIF
                0126 
96b006450c dngo*0127 c    ds/dy ------------------------------------------------
29d9814714 Dani*0128 
                0129            IF(streamice_hmask(i,j-1,bi,bj).eq.1.and.
                0130      &         streamice_hmask(i,j-2,bi,bj).eq.1) THEN
                0131 
                0132              dsdy(i,j,bi,bj) = recip_dyC(i,j-1,bi,bj) *
96b006450c dngo*0133      &       (surf_el_streamice(i,j-1,bi,bj) -
29d9814714 Dani*0134      &        surf_el_streamice(i,j-2,bi,bj))
                0135 
                0136            ELSE
                0137             dsdy(i,j,bi,bj) = 0.0
                0138 
                0139            ENDIF
                0140 
96b006450c dngo*0141 c    end ------------------------------------------------
                0142 
29d9814714 Dani*0143           ENDIF
                0144          ENDDO
                0145         ENDDO
                0146        ENDDO
                0147       ENDDO
                0148 
96b006450c dngo*0149       _EXCH_XY_RL(dsdy, myThid)
                0150       _EXCH_XY_RL(dsdx, myThid)
29d9814714 Dani*0151 
                0152       DO bj = myByLo(myThid), myByHi(myThid)
                0153        DO bi = myBxLo(myThid), myBxHi(myThid)
96b006450c dngo*0154 
29d9814714 Dani*0155         DO i=1,sNx
                0156          DO j=1,sNy
                0157 
96b006450c dngo*0158 c           Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
                0159 c           Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
29d9814714 Dani*0160 
                0161           IF (streamice_hmask(i,j,bi,bj).eq.1.0) THEN
96b006450c dngo*0162 
29d9814714 Dani*0163            IF (streamice_umask(i,j,bi,bj).eq.1.0) THEN
                0164 
96b006450c dngo*0165             taudx_si(i,j,bi,bj) = taudx_si(i,j,bi,bj) +
                0166      &       gravity * streamice_density *
                0167      &       H_streamice (i,j,bi,bj) * dsdx (i,j,bi,bj) *
                0168      &       (0.5 * dyG(i,j,bi,bj) + 0.25 * dyF(i,j,bi,bj)) *
29d9814714 Dani*0169      &       0.5 * dxG(i,j,bi,bj)
                0170 
96b006450c dngo*0171             taudx_si(i,j,bi,bj) = taudx_si(i,j,bi,bj) +
                0172      &       gravity * streamice_density *
                0173      &       H_streamice (i,j,bi,bj) * dsdx (i+1,j,bi,bj) *
                0174      &       0.25 * dyF(i,j,bi,bj) *
29d9814714 Dani*0175      &       0.5 * dxG(i,j,bi,bj)
                0176 
                0177            ENDIF
                0178 
                0179            IF (streamice_umask(i+1,j,bi,bj).eq.1.0) THEN
                0180 
96b006450c dngo*0181             taudx_si(i+1,j,bi,bj) = taudx_si(i+1,j,bi,bj) +
                0182      &       gravity * streamice_density *
                0183      &       H_streamice (i,j,bi,bj) * dsdx (i+1,j,bi,bj) *
                0184      &       (0.5 * dyG(i+1,j,bi,bj) + 0.25 * dyF(i,j,bi,bj)) *
29d9814714 Dani*0185      &       0.5 * dxG(i,j,bi,bj)
                0186 
96b006450c dngo*0187             taudx_si(i+1,j,bi,bj) = taudx_si(i+1,j,bi,bj) +
                0188      &       gravity * streamice_density *
                0189      &       H_streamice (i,j,bi,bj) * dsdx (i,j,bi,bj) *
                0190      &       0.25 * dyF(i,j,bi,bj) *
29d9814714 Dani*0191      &       0.5 * dxG(i,j,bi,bj)
                0192 
                0193            ENDIF
                0194 
                0195            IF (streamice_umask(i,j+1,bi,bj).eq.1.0) THEN
                0196 
96b006450c dngo*0197             taudx_si(i,j+1,bi,bj) = taudx_si(i,j+1,bi,bj) +
                0198      &       gravity * streamice_density *
                0199      &       H_streamice (i,j,bi,bj) * dsdx (i,j,bi,bj) *
                0200      &       (0.5 * dyG(i,j,bi,bj) + 0.25 * dyF(i,j,bi,bj)) *
29d9814714 Dani*0201      &       0.5 * dxG(i,j+1,bi,bj)
                0202 
96b006450c dngo*0203             taudx_si(i,j+1,bi,bj) = taudx_si(i,j+1,bi,bj) +
                0204      &       gravity * streamice_density *
                0205      &       H_streamice (i,j,bi,bj) * dsdx (i+1,j,bi,bj) *
                0206      &       0.25 * dyF(i,j,bi,bj) *
29d9814714 Dani*0207      &       0.5 * dxG(i,j+1,bi,bj)
                0208 
                0209            ENDIF
                0210 
                0211            IF (streamice_umask(i+1,j+1,bi,bj).eq.1.0) THEN
                0212 
96b006450c dngo*0213             taudx_si(i+1,j+1,bi,bj) = taudx_si(i+1,j+1,bi,bj) +
                0214      &       gravity * streamice_density *
                0215      &       H_streamice (i,j,bi,bj) * dsdx (i+1,j,bi,bj) *
                0216      &       (0.5 * dyG(i+1,j,bi,bj) + 0.25 * dyF(i,j,bi,bj)) *
29d9814714 Dani*0217      &       0.5 * dxG(i,j+1,bi,bj)
                0218 
96b006450c dngo*0219             taudx_si(i+1,j+1,bi,bj) = taudx_si(i+1,j+1,bi,bj) +
                0220      &       gravity * streamice_density *
                0221      &       H_streamice (i,j,bi,bj) * dsdx (i,j,bi,bj) *
                0222      &       0.25 * dyF(i,j,bi,bj) *
29d9814714 Dani*0223      &       0.5 * dxG(i,j+1,bi,bj)
                0224 
                0225            ENDIF
                0226 
                0227 #ifdef USE_ALT_RLOW
                0228            IF (R_low_si(i,j,bi,bj) .lt. 0. _d 0) then
96b006450c dngo*0229 #else
29d9814714 Dani*0230            IF (R_low(i,j,bi,bj) .lt. 0. _d 0) then
96b006450c dngo*0231 #endif
29d9814714 Dani*0232               grd_below_sl = 1. _d 0
                0233            else
                0234               grd_below_sl = 0. _d 0
                0235            endif
                0236 
96b006450c dngo*0237 c check face to right
29d9814714 Dani*0238            IF (streamice_hmask(i+1,j,bi,bj).eq.0.or.
                0239      &         streamice_hmask(i+1,j,bi,bj).eq.2.or.
                0240      &         streamice_ufacemask(i+1,j,bi,bj).eq.2) THEN
                0241 
                0242             IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) THEN
96b006450c dngo*0243 
                0244              face_factor =
29d9814714 Dani*0245      &        0.25 * dyG(i+1,j,bi,bj) *
96b006450c dngo*0246      &        gravity *
29d9814714 Dani*0247      &        streamice_density * H_streamice(i,j,bi,bj)**2-
                0248 #ifdef USE_ALT_RLOW
96b006450c dngo*0249      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0250      &         R_low_si(i,j,bi,bj)**2
96b006450c dngo*0251 #else
                0252      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0253      &         R_low(i,j,bi,bj)**2
                0254 #endif
                0255 
                0256             ELSE
                0257 
96b006450c dngo*0258              face_factor =
29d9814714 Dani*0259      &        0.25 * dyG(i+1,j,bi,bj) *
                0260      &        streamice_density * gravity *
                0261      &        (1-streamice_density*i_rhow) *
96b006450c dngo*0262      &         H_streamice(i,j,bi,bj)**2
29d9814714 Dani*0263 
                0264             ENDIF
                0265 
96b006450c dngo*0266             taudx_si(i+1,j,bi,bj) = taudx_si(i+1,j,bi,bj)
29d9814714 Dani*0267      &       - face_factor
                0268 
96b006450c dngo*0269             taudx_si(i+1,j+1,bi,bj) = taudx_si(i+1,j+1,bi,bj)
29d9814714 Dani*0270      &       - face_factor
                0271 
                0272            ENDIF
                0273 
96b006450c dngo*0274 c check face to left
29d9814714 Dani*0275            IF (streamice_hmask(i-1,j,bi,bj).eq.0.or.
                0276      &         streamice_hmask(i-1,j,bi,bj).eq.2.or.
                0277      &         streamice_ufacemask(i,j,bi,bj).eq.2) THEN
                0278 
                0279             IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) THEN
96b006450c dngo*0280 
                0281              face_factor =
29d9814714 Dani*0282      &        0.25 * dyG(i,j,bi,bj) *
96b006450c dngo*0283      &        gravity *
29d9814714 Dani*0284      &        streamice_density * H_streamice(i,j,bi,bj)**2-
                0285 #ifdef USE_ALT_RLOW
96b006450c dngo*0286      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0287      &         R_low_si(i,j,bi,bj)**2
96b006450c dngo*0288 #else
                0289      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0290      &         R_low(i,j,bi,bj)**2
                0291 #endif
                0292 
                0293             ELSE
                0294 
96b006450c dngo*0295              face_factor =
29d9814714 Dani*0296      &        0.25 * dyG(i,j,bi,bj) *
                0297      &        streamice_density * gravity *
                0298      &        (1-streamice_density*i_rhow) *
96b006450c dngo*0299      &         H_streamice(i,j,bi,bj)**2
29d9814714 Dani*0300 
                0301             ENDIF
                0302 
96b006450c dngo*0303             taudx_si(i,j,bi,bj) = taudx_si(i,j,bi,bj)
29d9814714 Dani*0304      &       + face_factor
                0305 
96b006450c dngo*0306             taudx_si(i,j+1,bi,bj) = taudx_si(i,j+1,bi,bj)
29d9814714 Dani*0307      &       + face_factor
                0308 
                0309            ENDIF
                0310 
96b006450c dngo*0311 c Y FORCES
29d9814714 Dani*0312 
                0313            IF (streamice_vmask(i,j,bi,bj).eq.1.0) THEN
                0314 
96b006450c dngo*0315             taudy_si(i,j,bi,bj) = taudy_si(i,j,bi,bj) +
                0316      &       gravity * streamice_density *
                0317      &       H_streamice (i,j,bi,bj) * dsdy (i,j,bi,bj) *
                0318      &       (0.5 * dxG(i,j,bi,bj) + 0.25 * dxF(i,j,bi,bj)) *
29d9814714 Dani*0319      &       0.5 * dyG(i,j,bi,bj)
                0320 
96b006450c dngo*0321             taudy_si(i,j,bi,bj) = taudy_si(i,j,bi,bj) +
                0322      &       gravity * streamice_density *
                0323      &       H_streamice (i,j,bi,bj) * dsdy (i,j+1,bi,bj) *
                0324      &       0.25 * dxF(i,j,bi,bj) *
29d9814714 Dani*0325      &       0.5 * dyG(i,j,bi,bj)
                0326 
                0327            ENDIF
                0328 
                0329            IF (streamice_vmask(i,j+1,bi,bj).eq.1.0) THEN
                0330 
96b006450c dngo*0331             taudy_si(i,j+1,bi,bj) = taudy_si(i,j+1,bi,bj) +
                0332      &       gravity * streamice_density *
                0333      &       H_streamice (i,j,bi,bj) * dsdy (i,j+1,bi,bj) *
                0334      &       (0.5 * dxG(i,j+1,bi,bj) + 0.25 * dxF(i,j,bi,bj)) *
29d9814714 Dani*0335      &       0.5 * dyG(i,j,bi,bj)
                0336 
96b006450c dngo*0337             taudy_si(i,j+1,bi,bj) = taudy_si(i,j+1,bi,bj) +
                0338      &       gravity * streamice_density *
                0339      &       H_streamice (i,j,bi,bj) * dsdy (i,j,bi,bj) *
                0340      &       0.25 * dxF(i,j,bi,bj) *
29d9814714 Dani*0341      &       0.5 * dyG(i,j,bi,bj)
                0342 
                0343            ENDIF
                0344 
                0345            IF (streamice_vmask(i+1,j,bi,bj).eq.1.0) THEN
                0346 
96b006450c dngo*0347             taudy_si(i+1,j,bi,bj) = taudy_si(i+1,j,bi,bj) +
                0348      &       gravity * streamice_density *
                0349      &       H_streamice (i,j,bi,bj) * dsdy (i,j,bi,bj) *
                0350      &       (0.5 * dxG(i,j,bi,bj) + 0.25 * dxF(i,j,bi,bj)) *
29d9814714 Dani*0351      &       0.5 * dyG(i+1,j,bi,bj)
                0352 
96b006450c dngo*0353             taudy_si(i+1,j,bi,bj) = taudy_si(i+1,j,bi,bj) +
                0354      &       gravity * streamice_density *
                0355      &       H_streamice (i,j,bi,bj) * dsdy (i,j+1,bi,bj) *
                0356      &       0.25 * dxF(i,j,bi,bj) *
29d9814714 Dani*0357      &       0.5 * dyG(i+1,j,bi,bj)
                0358 
                0359            ENDIF
                0360 
                0361            IF (streamice_umask(i+1,j+1,bi,bj).eq.1.0) THEN
                0362 
96b006450c dngo*0363             taudy_si(i+1,j+1,bi,bj) = taudy_si(i+1,j+1,bi,bj) +
                0364      &       gravity * streamice_density *
                0365      &       H_streamice (i,j,bi,bj) * dsdy (i,j+1,bi,bj) *
                0366      &       (0.5 * dxG(i,j+1,bi,bj) + 0.25 * dxF(i,j,bi,bj)) *
29d9814714 Dani*0367      &       0.5 * dyG(i,j+1,bi,bj)
                0368 
96b006450c dngo*0369             taudy_si(i+1,j+1,bi,bj) = taudy_si(i+1,j+1,bi,bj) +
                0370      &       gravity * streamice_density *
                0371      &       H_streamice (i,j,bi,bj) * dsdy (i,j,bi,bj) *
                0372      &       0.25 * dxF(i,j,bi,bj) *
29d9814714 Dani*0373      &       0.5 * dyG(i,j+1,bi,bj)
                0374 
                0375            ENDIF
                0376 
                0377 #ifdef USE_ALT_RLOW
                0378            IF (R_low_si(i,j,bi,bj) .lt. 0. _d 0) then
96b006450c dngo*0379 #else
29d9814714 Dani*0380            IF (R_low(i,j,bi,bj) .lt. 0. _d 0) then
96b006450c dngo*0381 #endif
29d9814714 Dani*0382               grd_below_sl = 1. _d 0
                0383            else
                0384               grd_below_sl = 0. _d 0
                0385            endif
                0386 
96b006450c dngo*0387 c check face to right
29d9814714 Dani*0388            IF (streamice_hmask(i,j+1,bi,bj).eq.0.or.
                0389      &         streamice_hmask(i,j+1,bi,bj).eq.2.or.
                0390      &         streamice_vfacemask(i,j+1,bi,bj).eq.2) THEN
                0391 
                0392             IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) THEN
96b006450c dngo*0393 
                0394              face_factor =
29d9814714 Dani*0395      &        0.25 * dxG(i,j+1,bi,bj) *
96b006450c dngo*0396      &        gravity *
29d9814714 Dani*0397      &        streamice_density * H_streamice(i,j,bi,bj)**2-
                0398 #ifdef USE_ALT_RLOW
96b006450c dngo*0399      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0400      &         R_low_si(i,j,bi,bj)**2
96b006450c dngo*0401 #else
                0402      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0403      &         R_low(i,j,bi,bj)**2
                0404 #endif
                0405 
                0406             ELSE
                0407 
96b006450c dngo*0408              face_factor =
29d9814714 Dani*0409      &        0.25 * dxG(i,j+1,bi,bj) *
                0410      &        streamice_density * gravity *
                0411      &        (1-streamice_density*i_rhow) *
96b006450c dngo*0412      &         H_streamice(i,j,bi,bj)**2
29d9814714 Dani*0413 
                0414             ENDIF
                0415 
96b006450c dngo*0416             taudy_si(i,j+1,bi,bj) = taudy_si(i,j+1,bi,bj)
29d9814714 Dani*0417      &       - face_factor
                0418 
96b006450c dngo*0419             taudy_si(i+1,j+1,bi,bj) = taudy_si(i+1,j+1,bi,bj)
29d9814714 Dani*0420      &       - face_factor
                0421 
                0422            ENDIF
                0423 
96b006450c dngo*0424 c check face to left
29d9814714 Dani*0425            IF (streamice_hmask(i,j-1,bi,bj).eq.0.or.
                0426      &         streamice_hmask(i,j-1,bi,bj).eq.2.or.
                0427      &         streamice_vfacemask(i,j,bi,bj).eq.2) THEN
                0428 
                0429             IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) THEN
96b006450c dngo*0430 
                0431              face_factor =
29d9814714 Dani*0432      &        0.25 * dxG(i,j,bi,bj) *
96b006450c dngo*0433      &        gravity *
29d9814714 Dani*0434      &        streamice_density * H_streamice(i,j,bi,bj)**2-
                0435 #ifdef USE_ALT_RLOW
96b006450c dngo*0436      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0437      &         R_low_si(i,j,bi,bj)**2
96b006450c dngo*0438 #else
                0439      &         streamice_density_ocean_avg * grd_below_sl *
29d9814714 Dani*0440      &         R_low(i,j,bi,bj)**2
                0441 #endif
                0442 
                0443             ELSE
                0444 
96b006450c dngo*0445              face_factor =
29d9814714 Dani*0446      &        0.25 * dxG(i,j,bi,bj) *
                0447      &        streamice_density * gravity *
                0448      &        (1-streamice_density*i_rhow) *
96b006450c dngo*0449      &         H_streamice(i,j,bi,bj)**2
29d9814714 Dani*0450 
                0451             ENDIF
                0452 
96b006450c dngo*0453             taudy_si(i,j,bi,bj) = taudy_SI(i,j,bi,bj)
29d9814714 Dani*0454      &       + face_factor
                0455 
96b006450c dngo*0456             taudy_si(i+1,j,bi,bj) = taudy_si(i+1,j,bi,bj)
29d9814714 Dani*0457      &       + face_factor
                0458 
                0459            ENDIF
                0460 
                0461           ENDIF
                0462 
                0463          ENDDO
                0464         ENDDO
                0465        ENDDO
                0466       ENDDO
                0467 
                0468       DO bj = myByLo(myThid), myByHi(myThid)
                0469        DO bi = myBxLo(myThid), myBxHi(myThid)
                0470         DO j=1-OLy+1,sNy+OLy-1
                0471          DO i=1-OLx+1,sNx+OLx-1
                0472           taudx_SI(i,j,bi,bj) = -1.*taudx_SI(i,j,bi,bj)
                0473           taudy_SI(i,j,bi,bj) = -1.*taudy_SI(i,j,bi,bj)
                0474          ENDDO
                0475         ENDDO
                0476        ENDDO
                0477       ENDDO
96b006450c dngo*0478 c       call write_fld_xy_rl ('driving_taux','',taudx_si,0,myThid)
29d9814714 Dani*0479 
                0480 #endif
                0481       RETURN
                0482       END