C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/dgoldberg/streamice/streamice_forced_buttress.F,v 1.1 2014/08/27 19:29:13 dgoldberg Exp $ C $Name: $ #include "STREAMICE_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP SUBROUTINE STREAMICE_FORCED_BUTTRESS( myThid ) ! O taudx, ! O taudy ) C /============================================================\ C | SUBROUTINE | C | o | C |============================================================| C | | C \============================================================/ IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "STREAMICE.h" #include "STREAMICE_CG.h" C !INPUT/OUTPUT ARGUMENTS INTEGER myThid ! _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) ! _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) #ifdef ALLOW_STREAMICE #ifdef STREAMICE_STRESS_BOUNDARY_CONTROL C LOCAL VARIABLES INTEGER i, j, bi, bj, k, l LOGICAL at_west_bdry, at_east_bdry, & at_north_bdry, at_south_bdry _RL unconf_stress DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO j=1-OLy+1,sNy+OLy-1 DO i=1-OLy+1,sNx+OLy-1 ! taudx_SI(i,j,bi,bj) = 0. _d 0 ! taudy_SI(i,j,bi,bj) = 0. _d 0 if (streamice_hmask(i,j,bi,bj).eq.1.0) then ! baseline unconfined stress IF (float_frac_streamice(i,j,bi,bj) .eq. 1.0) THEN unconf_stress = gravity * & (streamice_density * H_streamice(i,j,bi,bj)**2 - #ifdef USE_ALT_RLOW & streamice_density_ocean_avg * R_low_si(i,j,bi,bj)**2) #else & streamice_density_ocean_avg * R_low(i,j,bi,bj)**2) #endif ELSE unconf_stress = streamice_density * gravity * & (1-streamice_density/streamice_density_ocean_avg) * & H_streamice(i,j,bi,bj)**2 ENDIF ! right face if (streamice_ufacemask(i+1,j,bi,bj).eq.2.0) then do k=0,1 if (streamice_umask(i+1,j+k,bi,bj).eq.1.0) then taudx_SI(i+1,j+k,bi,bj) = taudx_SI(i+1,j+k,bi,bj) + & (streamice_u_normal_pert(i+1,j,bi,bj) + & streamice_u_normal_stress(i+1,j,bi,bj)) * & .5 * unconf_stress * dyG(i+1,j,bi,bj) taudy_SI(i+1,j+k,bi,bj) = taudy_SI(i+1,j+k,bi,bj) + & (streamice_v_shear_pert(i+1,j,bi,bj) + & streamice_v_shear_stress(i+1,j,bi,bj)) * & .5 * unconf_stress * dyG(i+1,j,bi,bj) endif enddo endif ! left face if (streamice_ufacemask(i,j,bi,bj).eq.2.0) then do k=0,1 if (streamice_umask(i,j+k,bi,bj).eq.1.0) then taudx_SI(i,j+k,bi,bj) = taudx_SI(i,j+k,bi,bj) - & (streamice_u_normal_pert(i,j,bi,bj) + & streamice_u_normal_stress(i,j,bi,bj)) * & .5 * unconf_stress * dyG(i,j,bi,bj) taudy_SI(i,j+k,bi,bj) = taudy_SI(i,j+k,bi,bj) - & (streamice_v_shear_pert(i,j,bi,bj) + & streamice_v_shear_stress(i,j,bi,bj)) * & .5 * unconf_stress * dyG(i,j,bi,bj) endif enddo endif if (streamice_vfacemask(i,j+1,bi,bj).eq.2.0) then do k=0,1 if (streamice_umask(i+k,j+1,bi,bj).eq.1.0) then taudy_SI(i+k,j+1,bi,bj) = taudy_SI(i+k,j+1,bi,bj) + & (streamice_v_normal_pert(i,j+1,bi,bj) + & streamice_v_normal_stress(i,j+1,bi,bj)) * & .5 * dxG(i,j+1,bi,bj) * unconf_stress taudx_SI(i+k,j+1,bi,bj) = taudx_SI(i+k,j+1,bi,bj) + & (streamice_u_shear_pert(i,j+1,bi,bj) + & streamice_u_shear_stress(i,j+1,bi,bj)) * & .5 * unconf_stress * dxG(i,j+1,bi,bj) endif enddo endif if (streamice_vfacemask(i,j,bi,bj).eq.2.0) then do k=0,1 if (streamice_umask(i+k,j,bi,bj).eq.1.0) then taudy_SI(i+k,j,bi,bj) = taudy_SI(i+k,j,bi,bj) - & (streamice_v_normal_pert(i,j,bi,bj) + & streamice_v_normal_stress(i,j,bi,bj)) * & .5 * dxG(i,j,bi,bj) * unconf_stress taudx_SI(i+k,j,bi,bj) = taudx_SI(i+k,j,bi,bj) - & (streamice_u_shear_pert(i,j,bi,bj) + & streamice_u_shear_stress(i,j,bi,bj)) * & .5 * unconf_stress * dxG(i,j,bi,bj) endif enddo endif END IF ENDDO ENDDO ENDDO ENDDO #endif #endif RETURN END