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))