66     &                           LBi, UBi, LBj, UBj,                    &
 
   67     &                           IminS, ImaxS, JminS, JmaxS,            &
 
   69     &                           rmask, umask, vmask,                   &
 
   91      integer, 
intent(in) :: ng, tile, model
 
   92      integer, 
intent(in) :: LBi, UBi, LBj, UBj
 
   93      integer, 
intent(in) :: IminS, ImaxS, JminS, JmaxS
 
   97      real(r8), 
intent(in) :: rmask(LBi:,LBj:)
 
   98      real(r8), 
intent(in) :: umask(LBi:,LBj:)
 
   99      real(r8), 
intent(in) :: vmask(LBi:,LBj:)
 
  101      real(r8), 
intent(in) :: h(LBi:,LBj:)
 
  102      real(r8), 
intent(in) :: omn(LBi:,LBj:)
 
  104      real(r8), 
intent(in) :: Hz(LBi:,LBj:,:)
 
  105      real(r8), 
intent(in) :: z_w(LBi:,LBj:,0:)
 
  107      real(r8), 
intent(in) :: zeta(LBi:,LBj:,:)
 
  110      real(r8), 
intent(in) :: rmask(LBi:UBi,LBj:UBj)
 
  111      real(r8), 
intent(in) :: umask(LBi:UBi,LBj:UBj)
 
  112      real(r8), 
intent(in) :: vmask(LBi:UBi,LBj:UBj)
 
  114      real(r8), 
intent(in) :: h(LBi:UBi,LBj:UBj)
 
  115      real(r8), 
intent(in) :: omn(LBi:UBi,LBj:UBj)
 
  117      real(r8), 
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
 
  118      real(r8), 
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
 
  120      real(r8), 
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
 
  125      integer :: NSUB, i, j, k
 
  127      real(r8) :: cff, ratio
 
  130      real(r8) :: my_rx0, my_rx1
 
  132      real(r8) :: my_volume0, my_volume1, my_volume2
 
  136      real(r8), 
dimension(5) :: rbuffer
 
  137      character (len=3), 
dimension(5) :: op_handle
 
  139      real(r8), 
dimension(3) :: rbuffer
 
  140      character (len=3), 
dimension(3) :: op_handle
 
  144#include "set_bounds.h" 
  158          IF (umask(i,j).gt.0.0_r8) 
THEN 
  160            my_rx0=max(my_rx0,abs((z_w(i,j,0)-z_w(i-1,j,0))/            &
 
  161     &                            (z_w(i,j,0)+z_w(i-1,j,0))))
 
  163              my_rx1=max(my_rx1,abs((z_w(i,j,k  )-z_w(i-1,j,k  )+       &
 
  164     &                               z_w(i,j,k-1)-z_w(i-1,j,k-1))/      &
 
  165     &                              (z_w(i,j,k  )+z_w(i-1,j,k  )-       &
 
  166     &                               z_w(i,j,k-1)-z_w(i-1,j,k-1))))
 
  176          IF (vmask(i,j).gt.0.0_r8) 
THEN 
  178            my_rx0=max(my_rx0,abs((z_w(i,j,0)-z_w(i,j-1,0))/            &
 
  179     &                            (z_w(i,j,0)+z_w(i,j-1,0))))
 
  181              my_rx1=max(my_rx1,abs((z_w(i,j,k  )-z_w(i,j-1,k  )+       &
 
  182     &                               z_w(i,j,k-1)-z_w(i,j-1,k-1))/      &
 
  183     &                              (z_w(i,j,k  )+z_w(i,j-1,k  )-       &
 
  184     &                               z_w(i,j,k-1)-z_w(i,j-1,k-1))))
 
  198      my_volume1=1.0e+20_r8
 
  206            IF (rmask(i,j).gt.0.0_r8) 
THEN 
  208              cff=omn(i,j)*hz(i,j,k)
 
  209              my_volume0=my_volume0+cff
 
  210              my_volume1=min(my_volume1,cff)
 
  211              my_volume2=max(my_volume2,cff)
 
  222          IF (rmask(i,j).gt.0.0_r8) 
THEN 
  224            cff=omn(i,j)*(zeta(i,j,1)+h(i,j))
 
  225            my_volume0=my_volume0+cff
 
  226            my_volume1=min(my_volume1,cff)
 
  227            my_volume2=max(my_volume2,cff)
 
  242      IF (
domain(ng)%SouthWest_Corner(tile).and.                        &
 
  243     &    
domain(ng)%NorthEast_Corner(tile)) 
THEN 
  254      rx0(ng)=max(
rx0(ng),my_rx0)
 
  255      rx1(ng)=max(
rx1(ng),my_rx1)
 
  276        CALL mp_reduce (ng, model, 5, rbuffer, op_handle)
 
  278        CALL mp_reduce (ng, model, 3, rbuffer, op_handle)
 
  290  10      
FORMAT (/,
' Basin information for Grid ',i2.2,
':',/)
 
  293  20      
FORMAT (
' Maximum grid stiffness ratios:  rx0 = ',1pe14.6,    &
 
  294     &            
' (Beckmann and Haidvogel)',/,t34,
'rx1 = ',1pe14.6,   &
 
  304  30      
FORMAT (/,
' Initial domain volumes:  TotVolume = ',1p,e17.10, &
 
  305     &            0p,
' m3',/,t26,
'MinCellVol = ',1p,e17.10,0p,
' m3',    &
 
  306     &            /,t26, 
'MaxCellVol = ',1p,e17.10,0p,
' m3',            &
 
  307     &            /,t26, 
'   Max/Min = ',1p,e17.10,0p,/)
 
 
subroutine stiffness_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, rmask, umask, vmask, h, omn, hz, z_w, zeta)