95     &                             LBi, UBi, LBj, UBj,                  &
 
   96     &                             IminS, ImaxS, JminS, JmaxS,          &
 
  102#ifdef TIDE_GENERATING_FORCES
 
  103     &                             eq_tide, tl_eq_tide,                 &
 
  119      integer, 
intent(in) :: ng, tile
 
  120      integer, 
intent(in) :: LBi, UBi, LBj, UBj
 
  121      integer, 
intent(in) :: IminS, ImaxS, JminS, JmaxS
 
  122      integer, 
intent(in) :: nrhs
 
  125      real(r8), 
intent(in) :: om_v(LBi:,LBj:)
 
  126      real(r8), 
intent(in) :: on_u(LBi:,LBj:)
 
  127      real(r8), 
intent(in) :: Hz(LBi:,LBj:,:)
 
  128      real(r8), 
intent(in) :: z_w(LBi:,LBj:,0:)
 
  129      real(r8), 
intent(in) :: rho(LBi:,LBj:,:)
 
  131      real(r8), 
intent(in) :: tl_Hz(LBi:,LBj:,:)
 
  132      real(r8), 
intent(in) :: tl_z_w(LBi:,LBj:,0:)
 
  133      real(r8), 
intent(in) :: tl_rho(LBi:,LBj:,:)
 
  134# ifdef TIDE_GENERATING_FORCES 
  135      real(r8), 
intent(in) :: eq_tide(LBi:,LBj:)
 
  136      real(r8), 
intent(in) :: tl_eq_tide(LBi:,LBj:)
 
  139      real(r8), 
intent(in) :: Pair(LBi:,LBj:)
 
  141# ifdef DIAGNOSTICS_UV 
  145      real(r8), 
intent(inout) :: tl_ru(LBi:,LBj:,0:,:)
 
  146      real(r8), 
intent(inout) :: tl_rv(LBi:,LBj:,0:,:)
 
  148      real(r8), 
intent(in) :: om_v(LBi:UBi,LBj:UBj)
 
  149      real(r8), 
intent(in) :: on_u(LBi:UBi,LBj:UBj)
 
  150      real(r8), 
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
 
  151      real(r8), 
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
 
  152      real(r8), 
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
 
  154      real(r8), 
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
 
  155      real(r8), 
intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:N(ng))
 
  156      real(r8), 
intent(in) :: tl_rho(LBi:UBi,LBj:UBj,N(ng))
 
  157# ifdef TIDE_GENERATING_FORCES 
  158      real(r8), 
intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
 
  159      real(r8), 
intent(in) :: tl_eq_tide(LBi:UBi,LBj:UBj)
 
  162      real(r8), 
intent(in) :: Pair(LBi:UBi,LBj:UBj)
 
  164# ifdef DIAGNOSTICS_UV 
  168      real(r8), 
intent(inout) :: tl_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
 
  169      real(r8), 
intent(inout) :: tl_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
 
  176      real(r8) :: cff, cff1, dh
 
  179      real(r8) :: OneAtm, fac
 
  181      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
 
  183      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_FX
 
  185      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: P
 
  186      real(r8), 
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: tl_P
 
  188#include "set_bounds.h" 
  201      j_loop : 
DO j=jstrv-1,jend
 
  205          p(i,j,n(ng))=p(i,j,n(ng))+fac*(pair(i,j)-oneatm)
 
  207          tl_p(i,j,n(ng))=0.0_r8
 
  208#ifdef TIDE_GENERATING_FORCES 
  209          p(i,j,n(ng))=p(i,j,n(ng))-
g*eq_tide(i,j)
 
  210          tl_p(i,j,n(ng))=tl_p(i,j,n(ng))-
g*tl_eq_tide(i,j)
 
  215            p(i,j,k-1)=p(i,j,k)+                                        &
 
  216     &                 hz(i,j,k)*rho(i,j,k)
 
  217            tl_p(i,j,k-1)=tl_p(i,j,k)+                                  &
 
  218     &                    tl_hz(i,j,k)*rho(i,j,k)+                      &
 
  219     &                    hz(i,j,k)*tl_rho(i,j,k)
 
  222            tl_fx(i,j,k)=0.5_r8*                                        &
 
  223     &                   (tl_hz(i,j,k)*(p(i,j,k)+p(i,j,k-1))+           &
 
  224     &                    hz(i,j,k)*(tl_p(i,j,k)+tl_p(i,j,k-1)))
 
  234            tl_fc(i,n(ng))=0.0_r8
 
  240              dh=z_w(i,j,k-1)-z_w(i-1,j,k-1)
 
  241              tl_dh=tl_z_w(i,j,k-1)-tl_z_w(i-1,j,k-1)
 
  244              tl_fc(i,k-1)=0.5_r8*                                      &
 
  245     &                     (tl_dh*(p(i,j,k-1)+p(i-1,j,k-1))+            &
 
  246     &                      dh*(tl_p(i,j,k-1)+tl_p(i-1,j,k-1)))
 
  256              tl_ru(i,j,k,nrhs)=(cff*((tl_hz(i-1,j,k)+                  &
 
  258     &                                (z_w(i-1,j,n(ng))-                &
 
  259     &                                 z_w(i  ,j,n(ng)))+               &
 
  262     &                                (tl_z_w(i-1,j,n(ng))-             &
 
  263     &                                 tl_z_w(i  ,j,n(ng))))+           &
 
  264     &                           cff1*(tl_fx(i-1,j,k)-                  &
 
  267     &                                 tl_fc(i,k-1)))*on_u(i,j)
 
  281            tl_fc(i,n(ng))=0.0_r8
 
  287              dh=z_w(i,j,k-1)-z_w(i,j-1,k-1)
 
  288              tl_dh=tl_z_w(i,j,k-1)-tl_z_w(i,j-1,k-1)
 
  291              tl_fc(i,k-1)=0.5_r8*                                      &
 
  292     &                     (tl_dh*(p(i,j,k-1)+p(i,j-1,k-1))+            &
 
  293     &                      dh*(tl_p(i,j,k-1)+tl_p(i,j-1,k-1))
 
  303              tl_rv(i,j,k,nrhs)=(cff*((tl_hz(i,j-1,k)+                  &
 
  305     &                                (z_w(i,j-1,n(ng))-                &
 
  306     &                                 z_w(i,j  ,n(ng)))+               &
 
  309     &                                (tl_z_w(i,j-1,n(ng))-             &
 
  310     &                                 tl_z_w(i,j  ,n(ng))))+           &
 
  311     &                           cff1*(tl_fx(i,j-1,k)-                  &
 
  314     &                                 tl_fc(i,k-1)))*om_v(i,j)
 
 
subroutine tl_prsgrd40_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nrhs, om_v, on_u, hz, tl_hz, z_w, tl_z_w, rho, tl_rho, eq_tide, tl_eq_tide, pair, tl_ru, tl_rv)