119     &                               LBi, UBi, LBj, UBj,                &
 
  120     &                               IminS, ImaxS, JminS, JmaxS,        &
 
  121     &                               kstp, krhs, knew,                  &
 
  126     &                               rmask, umask, vmask,               &
 
  141      integer, 
intent(in) :: ng, tile, model
 
  142      integer, 
intent(in) :: LBi, UBi, LBj, UBj
 
  143      integer, 
intent(in) :: IminS, ImaxS, JminS, JmaxS
 
  144      integer, 
intent(in) :: kstp, krhs, knew
 
  146      integer, 
intent(in) :: nstp, nnew
 
  151      real(r8), 
intent(in) :: rmask(LBi:,LBj:)
 
  152      real(r8), 
intent(in) :: umask(LBi:,LBj:)
 
  153      real(r8), 
intent(in) :: vmask(LBi:,LBj:)
 
  156      real(r8), 
intent(in) :: Hz(LBi:,LBj:,:)
 
  157      real(r8), 
intent(in) :: tl_Hz(LBi:,LBj:,:)
 
  158      real(r8), 
intent(in) :: u(LBi:,LBj:,:,:)
 
  159      real(r8), 
intent(in) :: v(LBi:,LBj:,:,:)
 
  161      real(r8), 
intent(in) :: ubar(LBi:,LBj:,:)
 
  162      real(r8), 
intent(in) :: vbar(LBi:,LBj:,:)
 
  163      real(r8), 
intent(in) :: zeta(LBi:,LBj:,:)
 
  164      real(r8), 
intent(in) :: tl_zeta(LBi:,LBj:,:)
 
  166      real(r8), 
intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
 
  167      real(r8), 
intent(inout) :: tl_u(LBi:,LBj:,:,:)
 
  168      real(r8), 
intent(inout) :: tl_v(LBi:,LBj:,:,:)
 
  170      real(r8), 
intent(inout) :: tl_ubar(LBi:,LBj:,:)
 
  171      real(r8), 
intent(inout) :: tl_vbar(LBi:,LBj:,:)
 
  176      real(r8), 
intent(in) :: rmask(LBi:UBi,LBj:UBj)
 
  177      real(r8), 
intent(in) :: umask(LBi:UBi,LBj:UBj)
 
  178      real(r8), 
intent(in) :: vmask(LBi:UBi,LBj:UBj)
 
  181      real(r8), 
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
 
  182      real(r8), 
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
 
  183      real(r8), 
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
 
  184      real(r8), 
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
 
  186      real(r8), 
intent(in) :: ubar(LBi:UBi,LBj:UBj,:)
 
  187      real(r8), 
intent(in) :: vbar(LBi:UBi,LBj:UBj,:)
 
  188      real(r8), 
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
 
  189      real(r8), 
intent(in) :: tl_zeta(LBi:UBi,LBj:UBj,:)
 
  191      real(r8), 
intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
 
  192      real(r8), 
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
 
  193      real(r8), 
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
 
  195      real(r8), 
intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
 
  196      real(r8), 
intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
 
  201      integer :: i, ic, itrc, j, k
 
  204      real(r8) :: tl_cff1, tl_cff2
 
  207      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: CF
 
  208      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: DC
 
  210      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: tl_CF
 
  211      real(r8), 
dimension(IminS:ImaxS,0:N(ng)) :: tl_DC
 
  214# include "set_bounds.h" 
  227            tl_cff1=tl_u(i,j,k,nstp)
 
  231            tl_cff1=tl_cff1*umask(i,j)
 
  235            tl_u(i,j,k,nstp)=tl_cff1
 
  244              tl_cff2=tl_v(i,j,k,nstp)
 
  248              tl_cff2=tl_cff2*vmask(i,j)
 
  252              tl_v(i,j,k,nstp)=tl_cff2
 
  267     &                    lbi, ubi, lbj, ubj, n(ng),                    &
 
  268     &                    imins, imaxs, jmins, jmaxs,                   &
 
  278     &                    lbi, ubi, lbj, ubj, n(ng),                    &
 
  279     &                    imins, imaxs, jmins, jmaxs,                   &
 
  289     &                          lbi, ubi, lbj, ubj, 1, n(ng),           &
 
  296     &                          lbi, ubi, lbj, ubj, 1, n(ng),           &
 
  309     &                    lbi, ubi, lbj, ubj, 1, n(ng),                 &
 
  312     &                    tl_u(:,:,:,nstp), tl_v(:,:,:,nstp))
 
  335            dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
 
  336            tl_dc(i,k)=0.5_r8*(tl_hz(i,j,k)+tl_hz(i-1,j,k))
 
  337            dc(i,0)=dc(i,0)+dc(i,k)
 
  338            tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
 
  339            cf(i,0)=cf(i,0)+dc(i,k)*u(i,j,k,nstp)
 
  340            tl_cf(i,0)=tl_cf(i,0)+tl_dc(i,k)*u(i,j,k,nstp)+             &
 
  341     &                            dc(i,k)*tl_u(i,j,k,nstp)-             &
 
  343     &                            dc(i,k)*u(i,j,k,nstp)
 
  349          tl_cff1=-cff1*cff1*tl_dc(i,0)+                                &
 
  355          tl_cff2=tl_cf(i,0)*cff1+cf(i,0)*tl_cff1-                      &
 
  362          tl_cff2=tl_cff2*umask(i,j)
 
  366          tl_ubar(i,j,kstp)=tl_cff2
 
  378              dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
 
  379              tl_dc(i,k)=0.5_r8*(tl_hz(i,j,k)+tl_hz(i,j-1,k))
 
  380              dc(i,0)=dc(i,0)+dc(i,k)
 
  381              tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
 
  382              cf(i,0)=cf(i,0)+dc(i,k)*v(i,j,k,nstp)
 
  383              tl_cf(i,0)=tl_cf(i,0)+tl_dc(i,k)*v(i,j,k,nstp)+           &
 
  384     &                              dc(i,k)*tl_v(i,j,k,nstp)-           &
 
  386     &                              dc(i,k)*v(i,j,k,nstp)
 
  392            tl_cff1=-cff1*cff1*tl_dc(i,0)+                              &
 
  398            tl_cff2=tl_cf(i,0)*cff1+cf(i,0)*tl_cff1-                    &
 
  405            tl_cff2=tl_cff2*vmask(i,j)
 
  409            tl_vbar(i,j,kstp)=tl_cff2
 
  427     &                      lbi, ubi, lbj, ubj,                         &
 
  428     &                      imins, imaxs, jmins, jmaxs,                 &
 
  429     &                      krhs, kstp, kstp,                           &
 
  430     &                      ubar, vbar, zeta,                           &
 
  431     &                      tl_ubar, tl_vbar, tl_zeta)
 
  439     &                      lbi, ubi, lbj, ubj,                         &
 
  440     &                      imins, imaxs, jmins, jmaxs,                 &
 
  441     &                      krhs, kstp, kstp,                           &
 
  442     &                      ubar, vbar, zeta,                           &
 
  443     &                      tl_ubar, tl_vbar, tl_zeta)
 
  452     &                          lbi, ubi, lbj, ubj,                     &
 
  459     &                          lbi, ubi, lbj, ubj,                     &
 
  472     &                    lbi, ubi, lbj, ubj,                           &
 
  475     &                    tl_ubar(:,:,kstp), tl_vbar(:,:,kstp))
 
  488          tl_cff1=tl_ubar(i,j,kstp)
 
  492          tl_cff1=tl_cff1*umask(i,j)
 
  496          tl_ubar(i,j,kstp)=tl_cff1
 
  503            tl_cff2=tl_vbar(i,j,kstp)
 
  507            tl_cff2=tl_cff2*vmask(i,j)
 
  511            tl_vbar(i,j,kstp)=tl_cff2
 
  529     &                      lbi, ubi, lbj, ubj,                         &
 
  530     &                      imins, imaxs, jmins, jmaxs,                 &
 
  531     &                      krhs, kstp, kstp,                           &
 
  532     &                      ubar, vbar, zeta,                           &
 
  533     &                      tl_ubar, tl_vbar, tl_zeta)
 
  541     &                      lbi, ubi, lbj, ubj,                         &
 
  542     &                      imins, imaxs, jmins, jmaxs,                 &
 
  543     &                      krhs, kstp, kstp,                           &
 
  544     &                      ubar, vbar, zeta,                           &
 
  545     &                      tl_ubar, tl_vbar, tl_zeta)
 
  554     &                          lbi, ubi, lbj, ubj,                     &
 
  561     &                          lbi, ubi, lbj, ubj,                     &
 
  574     &                    lbi, ubi, lbj, ubj,                           &
 
  577     &                    tl_ubar(:,:,kstp), tl_vbar(:,:,kstp))
 
  597              tl_cff1=tl_t(i,j,k,nstp,itrc)
 
  599              tl_cff1=tl_cff1*rmask(i,j)
 
  603              tl_t(i,j,k,nstp,itrc)=tl_cff1
 
  617     &                      lbi, ubi, lbj, ubj, n(ng), nt(ng),          &
 
  618     &                      imins, imaxs, jmins, jmaxs,                 &
 
  628     &                            lbi, ubi, lbj, ubj, 1, n(ng),         &
 
  629     &                            tl_t(:,:,:,nstp,itrc))
 
  642     &                    lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng),      &
 
  645     &                    tl_t(:,:,:,nstp,:))
 
 
  702     &                             LBi, UBi, LBj, UBj,                  &
 
  703     &                             IminS, ImaxS, JminS, JmaxS,          &
 
  704     &                             kstp, krhs, knew,                    &
 
  708# ifdef WET_DRY_NOT_YET
 
  712#  if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
 
  714     &                             tl_bed_thick0, tl_bed_thick,         &
 
  723      integer, 
intent(in) :: ng, tile, model
 
  724      integer, 
intent(in) :: LBi, UBi, LBj, UBj
 
  725      integer, 
intent(in) :: IminS, ImaxS, JminS, JmaxS
 
  726      integer, 
intent(in) :: kstp, krhs, knew
 
  730      real(r8), 
intent(in) :: rmask(LBi:,LBj:)
 
  732#  ifdef WET_DRY_NOT_YET 
  733      real(r8), 
intent(in) :: h(LBi:,LBj:)
 
  735      real(r8), 
intent(in) :: zeta(LBi:,LBj:,:)
 
  737#   if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET 
  738      real(r8), 
intent(in) :: tl_bed(LBi:,LBj:,:,:)
 
  739      real(r8), 
intent(inout) :: tl_bed_thick0(LBi:,LBj:)
 
  740      real(r8), 
intent(inout) :: tl_bed_thick(LBi:,LBj:,:)
 
  742      real(r8), 
intent(inout) :: tl_Zt_avg1(LBi:,LBj:)
 
  744      real(r8), 
intent(inout) :: tl_zeta(LBi:,LBj:,:)
 
  749      real(r8), 
intent(in) :: rmask(LBi:UBi,LBj:UBj)
 
  751#  ifdef WET_DRY_NOT_YET 
  752      real(r8), 
intent(in) :: h(LBi:UBi,LBj:UBj)
 
  754      real(r8), 
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
 
  756#   if defined SOLVE3D && defined SEDIMENT && defined SED_MORPH 
  757      real(r8), 
intent(in) :: tl_bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
 
  758      real(r8), 
intent(inout) :: tl_bed_thick0(LBi:UBi,LBj:UBj)
 
  759      real(r8), 
intent(inout) :: tl_bed_thick(LBi:UBi,LBj:UBj,3)
 
  761      real(r8), 
intent(inout) :: tl_Zt_avg1(LBi:UBi,LBj:UBj)
 
  763      real(r8), 
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
 
  768      integer :: Imin, Imax, Jmin, Jmax
 
  769      integer :: i, j, kbed
 
  774# include "set_bounds.h" 
  797          tl_cff1=tl_zeta(i,j,kstp)
 
  801          tl_cff1=tl_cff1*rmask(i,j)
 
  805          tl_zeta(i,j,kstp)=tl_cff1
 
  821     &                       lbi, ubi, lbj, ubj,                        &
 
  822     &                       imins, imaxs, jmins, jmaxs,                &
 
  823     &                       krhs, kstp, kstp,                          &
 
  834     &                          lbi, ubi, lbj, ubj,                     &
 
  847     &                    lbi, ubi, lbj, ubj,                           &
 
  862#  if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET 
  872          tl_bed_thick0(i,j)=0.0_r8
 
  876            tl_bed_thick0(i,j)=tl_bed_thick0(i,j)+tl_bed(i,j,kbed,
ithck)
 
  882          tl_bed_thick(i,j,1)=tl_bed_thick0(i,j)
 
  883          tl_bed_thick(i,j,2)=tl_bed_thick0(i,j)
 
  884          tl_bed_thick(i,j,3)=tl_bed_thick0(i,j)
 
  894     &                          lbi, ubi, lbj, ubj,                     &
 
  901     &                          lbi, ubi, lbj, ubj,                     &
 
  902     &                          tl_bed_thick(:,:,1))
 
  908     &                          lbi, ubi, lbj, ubj,                     &
 
  909     &                          tl_bed_thick(:,:,2))
 
  915     &                          lbi, ubi, lbj, ubj,                     &
 
  916     &                          tl_bed_thick(:,:,3))
 
  930     &                    lbi, ubi, lbj, ubj,                           &
 
  934     &                    tl_bed_thick(:,:,1),                          &
 
  935     &                    tl_bed_thick(:,:,2),                          &
 
  936     &                    tl_bed_thick(:,:,3))