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))
326# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
327 IF (soinitial(ng))
THEN
338 dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i-1,j,k))
339 tl_dc(i,k)=0.5_r8*(tl_hz(i,j,k)+tl_hz(i-1,j,k))
340 dc(i,0)=dc(i,0)+dc(i,k)
341 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
342 cf(i,0)=cf(i,0)+dc(i,k)*u(i,j,k,nstp)
343 tl_cf(i,0)=tl_cf(i,0)+tl_dc(i,k)*u(i,j,k,nstp)+ &
344 & dc(i,k)*tl_u(i,j,k,nstp)
349 tl_cff1=-cff1*cff1*tl_dc(i,0)
352 tl_cff2=tl_cf(i,0)*cff1+cf(i,0)*tl_cff1
356 tl_cff2=tl_cff2*umask(i,j)
360 tl_ubar(i,j,kstp)=tl_cff2
372 dc(i,k)=0.5_r8*(hz(i,j,k)+hz(i,j-1,k))
373 tl_dc(i,k)=0.5_r8*(tl_hz(i,j,k)+tl_hz(i,j-1,k))
374 dc(i,0)=dc(i,0)+dc(i,k)
375 tl_dc(i,0)=tl_dc(i,0)+tl_dc(i,k)
376 cf(i,0)=cf(i,0)+dc(i,k)*v(i,j,k,nstp)
377 tl_cf(i,0)=tl_cf(i,0)+tl_dc(i,k)*v(i,j,k,nstp)+ &
378 & dc(i,k)*tl_v(i,j,k,nstp)
383 tl_cff1=-cff1*cff1*tl_dc(i,0)
386 tl_cff2=tl_cf(i,0)*cff1+cf(i,0)*tl_cff1
390 tl_cff2=tl_cff2*vmask(i,j)
394 tl_vbar(i,j,kstp)=tl_cff2
412 & lbi, ubi, lbj, ubj, &
413 & imins, imaxs, jmins, jmaxs, &
414 & krhs, kstp, kstp, &
415 & ubar, vbar, zeta, &
416 & tl_ubar, tl_vbar, tl_zeta)
424 & lbi, ubi, lbj, ubj, &
425 & imins, imaxs, jmins, jmaxs, &
426 & krhs, kstp, kstp, &
427 & ubar, vbar, zeta, &
428 & tl_ubar, tl_vbar, tl_zeta)
437 & lbi, ubi, lbj, ubj, &
444 & lbi, ubi, lbj, ubj, &
457 & lbi, ubi, lbj, ubj, &
460 & tl_ubar(:,:,kstp), tl_vbar(:,:,kstp))
463# if defined STOCHASTIC_OPT && !defined STOCH_OPT_WHITE
477 tl_cff1=tl_ubar(i,j,kstp)
481 tl_cff1=tl_cff1*umask(i,j)
485 tl_ubar(i,j,kstp)=tl_cff1
492 tl_cff2=tl_vbar(i,j,kstp)
496 tl_cff2=tl_cff2*vmask(i,j)
500 tl_vbar(i,j,kstp)=tl_cff2
518 & lbi, ubi, lbj, ubj, &
519 & imins, imaxs, jmins, jmaxs, &
520 & krhs, kstp, kstp, &
521 & ubar, vbar, zeta, &
522 & tl_ubar, tl_vbar, tl_zeta)
530 & lbi, ubi, lbj, ubj, &
531 & imins, imaxs, jmins, jmaxs, &
532 & krhs, kstp, kstp, &
533 & ubar, vbar, zeta, &
534 & tl_ubar, tl_vbar, tl_zeta)
543 & lbi, ubi, lbj, ubj, &
550 & lbi, ubi, lbj, ubj, &
563 & lbi, ubi, lbj, ubj, &
566 & tl_ubar(:,:,kstp), tl_vbar(:,:,kstp))
586 tl_cff1=tl_t(i,j,k,nstp,itrc)
588 tl_cff1=tl_cff1*rmask(i,j)
592 tl_t(i,j,k,nstp,itrc)=tl_cff1
606 & lbi, ubi, lbj, ubj, n(ng), nt(ng), &
607 & imins, imaxs, jmins, jmaxs, &
617 & lbi, ubi, lbj, ubj, 1, n(ng), &
618 & tl_t(:,:,:,nstp,itrc))
631 & lbi, ubi, lbj, ubj, 1, n(ng), 1, nt(ng), &
634 & tl_t(:,:,:,nstp,:))
691 & LBi, UBi, LBj, UBj, &
692 & IminS, ImaxS, JminS, JmaxS, &
693 & kstp, krhs, knew, &
697# ifdef WET_DRY_NOT_YET
701# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
703 & tl_bed_thick0, tl_bed_thick, &
712 integer,
intent(in) :: ng, tile, model
713 integer,
intent(in) :: LBi, UBi, LBj, UBj
714 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
715 integer,
intent(in) :: kstp, krhs, knew
719 real(r8),
intent(in) :: rmask(LBi:,LBj:)
721# ifdef WET_DRY_NOT_YET
722 real(r8),
intent(in) :: h(LBi:,LBj:)
724 real(r8),
intent(in) :: zeta(LBi:,LBj:,:)
726# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
727 real(r8),
intent(in) :: tl_bed(LBi:,LBj:,:,:)
728 real(r8),
intent(inout) :: tl_bed_thick0(LBi:,LBj:)
729 real(r8),
intent(inout) :: tl_bed_thick(LBi:,LBj:,:)
731 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:,LBj:)
733 real(r8),
intent(inout) :: tl_zeta(LBi:,LBj:,:)
738 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
740# ifdef WET_DRY_NOT_YET
741 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
743 real(r8),
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
745# if defined SOLVE3D && defined SEDIMENT && defined SED_MORPH
746 real(r8),
intent(in) :: tl_bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
747 real(r8),
intent(inout) :: tl_bed_thick0(LBi:UBi,LBj:UBj)
748 real(r8),
intent(inout) :: tl_bed_thick(LBi:UBi,LBj:UBj,3)
750 real(r8),
intent(inout) :: tl_Zt_avg1(LBi:UBi,LBj:UBj)
752 real(r8),
intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
757 integer :: Imin, Imax, Jmin, Jmax
758 integer :: i, j, kbed
763# include "set_bounds.h"
786 tl_cff1=tl_zeta(i,j,kstp)
790 tl_cff1=tl_cff1*rmask(i,j)
794 tl_zeta(i,j,kstp)=tl_cff1
810 & lbi, ubi, lbj, ubj, &
811 & imins, imaxs, jmins, jmaxs, &
812 & krhs, kstp, kstp, &
823 & lbi, ubi, lbj, ubj, &
836 & lbi, ubi, lbj, ubj, &
851# if defined SEDIMENT_NOT_YET && defined SED_MORPH_NOT_YET
861 tl_bed_thick0(i,j)=0.0_r8
865 tl_bed_thick0(i,j)=tl_bed_thick0(i,j)+tl_bed(i,j,kbed,
ithck)
871 tl_bed_thick(i,j,1)=tl_bed_thick0(i,j)
872 tl_bed_thick(i,j,2)=tl_bed_thick0(i,j)
873 tl_bed_thick(i,j,3)=tl_bed_thick0(i,j)
883 & lbi, ubi, lbj, ubj, &
890 & lbi, ubi, lbj, ubj, &
891 & tl_bed_thick(:,:,1))
897 & lbi, ubi, lbj, ubj, &
898 & tl_bed_thick(:,:,2))
904 & lbi, ubi, lbj, ubj, &
905 & tl_bed_thick(:,:,3))
919 & lbi, ubi, lbj, ubj, &
923 & tl_bed_thick(:,:,1), &
924 & tl_bed_thick(:,:,2), &
925 & tl_bed_thick(:,:,3))