97 & LBi, UBi, LBj, UBj, &
98 & IminS, ImaxS, JminS, JmaxS, &
106 & bustrcwmax, bvstrcwmax, &
112 & ero_flux, settling_flux, &
114# if defined SED_MORPH
117 & bed, bed_frac, bed_mass, &
133 integer,
intent(in) :: ng, tile
134 integer,
intent(in) :: LBi, UBi, LBj, UBj
135 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
136 integer,
intent(in) :: nstp, nnew
140 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
143 real(r8),
intent(in) :: bustrc(LBi:,LBj:)
144 real(r8),
intent(in) :: bvstrc(LBi:,LBj:)
145 real(r8),
intent(in) :: bustrw(LBi:,LBj:)
146 real(r8),
intent(in) :: bvstrw(LBi:,LBj:)
147 real(r8),
intent(in) :: bustrcwmax(LBi:,LBj:)
148 real(r8),
intent(in) :: bvstrcwmax(LBi:,LBj:)
150 real(r8),
intent(in) :: bustr(LBi:,LBj:)
151 real(r8),
intent(in) :: bvstr(LBi:,LBj:)
153# if defined SED_MORPH
154 real(r8),
intent(inout):: bed_thick(LBi:,LBj:,:)
156 real(r8),
intent(inout) :: t(LBi:,LBj:,:,:,:)
158 real(r8),
intent(inout) :: ero_flux(LBi:,LBj:,:)
159 real(r8),
intent(inout) :: settling_flux(LBi:,LBj:,:)
161 real(r8),
intent(inout) :: bed(LBi:,LBj:,:,:)
162 real(r8),
intent(inout) :: bed_frac(LBi:,LBj:,:,:)
163 real(r8),
intent(inout) :: bed_mass(LBi:,LBj:,:,:,:)
164 real(r8),
intent(inout) :: bottom(LBi:,LBj:,:)
167 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
170 real(r8),
intent(in) :: bustrc(LBi:UBi,LBj:UBj)
171 real(r8),
intent(in) :: bvstrc(LBi:UBi,LBj:UBj)
172 real(r8),
intent(in) :: bustrw(LBi:UBi,LBj:UBj)
173 real(r8),
intent(in) :: bvstrw(LBi:UBi,LBj:UBj)
174 real(r8),
intent(in) :: bustrcwmax(LBi:UBi,LBj:UBj)
175 real(r8),
intent(in) :: bvstrcwmax(LBi:UBi,LBj:UBj)
177 real(r8),
intent(in) :: bustr(LBi:UBi,LBj:UBj)
178 real(r8),
intent(in) :: bvstr(LBi:UBi,LBj:UBj)
180# if defined SED_MORPH
181 real(r8),
intent(inout):: bed_thick(LBi:UBi,LBj:UBj,3)
183 real(r8),
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
185 real(r8),
intent(inout) :: ero_flux(LBi:UBi,LBj:UBj,NST)
186 real(r8),
intent(inout) :: settling_flux(LBi:UBi,LBj:UBj,NST)
188 real(r8),
intent(inout) :: bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
189 real(r8),
intent(inout) :: bed_frac(LBi:UBi,LBj:UBj,Nbed,NST)
190 real(r8),
intent(inout) :: bed_mass(LBi:UBi,LBj:UBj,Nbed,1:2,NST)
191 real(r8),
intent(inout) :: bottom(LBi:UBi,LBj:UBj,MBOTP)
196 integer :: Ksed, i, ised, j, k, ks
199 real(r8),
parameter :: eps = 1.0e-14_r8
201 real(r8) :: cff, cff1, cff2, cff3
202 real(r8) :: thck_avail, thck_to_add
204 real(r8),
dimension(IminS:ImaxS,NST) :: dep_mass
205 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tau_w
207# include "set_bounds.h"
219# if defined BEDLOAD_MPM || defined SUSPLOAD
223 tau_w(i,j)=sqrt(bustrcwmax(i,j)*bustrcwmax(i,j)+ &
224 & bvstrcwmax(i,j)*bvstrcwmax(i,j))
226 tau_w(i,j)=tau_w(i,j)*rmask_wet(i,j)
233 tau_w(i,j)=0.5_r8*sqrt((bustr(i,j)+bustr(i+1,j))* &
234 & (bustr(i,j)+bustr(i+1,j))+ &
235 & (bvstr(i,j)+bvstr(i,j+1))* &
236 & (bvstr(i,j)+bvstr(i,j+1)))
238 tau_w(i,j)=tau_w(i,j)*rmask_wet(i,j)
250 j_loop :
DO j=jstr,jend
251 sed_loop:
DO ised=1,nst
261 dep_mass(i,ised)=0.0_r8
267 ero_flux(i,j,ised)=ero_flux(i,j,ised)*
morph_fac(ised,ng)
268 settling_flux(i,j,ised)=settling_flux(i,j,ised)* &
272 IF ((ero_flux(i,j,ised)-settling_flux(i,j,ised)).lt. &
278 IF ((
time(ng).gt.(bed(i,j,1,
iaged)+1.1_r8*
dt(ng))).and. &
280 dep_mass(i,ised)=settling_flux(i,j,ised)- &
288 bed_mass(i,j,1,nnew,ised)=max(bed_mass(i,j,1,bnew,ised)- &
289 & (ero_flux(i,j,ised)- &
290 & settling_flux(i,j,ised)), &
293 bed_mass(i,j,k,nnew,ised)=bed_mass(i,j,k,nstp,ised)
308 cff=cff+dep_mass(i,ised)
310 IF (cff.gt.0.0_r8)
THEN
314 bed(i,j,nbed,
iporo)=0.5_r8*(bed(i,j,nbed-1,
iporo)+ &
315 & bed(i,j,nbed,
iporo))
316 bed(i,j,nbed,
iaged)=0.5_r8*(bed(i,j,nbed-1,
iaged)+ &
317 & bed(i,j,nbed,
iaged))
319 bed_mass(i,j,nbed,nnew,ised)= &
320 & bed_mass(i,j,nbed-1,nnew,ised)+ &
321 & bed_mass(i,j,nbed ,nnew,ised)
330 bed_mass(i,j,k,nnew,ised)=bed_mass(i,j,k-1,nnew,ised)
337 bed_mass(i,j,2,nnew,ised)=max(bed_mass(i,j,2,nnew,ised)-&
338 & dep_mass(i,ised),0.0_r8)
339 bed_mass(i,j,1,nnew,ised)=dep_mass(i,ised)
349 cff3=cff3+bed_mass(i,j,k,nnew,ised)
351 IF (cff3.eq.0.0_r8)
THEN
354 bed(i,j,k,
ithck)=0.0_r8
356 bed_frac(i,j,k,ised)=bed_mass(i,j,k,nnew,ised)/cff3
358 & bed_mass(i,j,k,nnew,ised)/ &
360 & (1.0_r8-bed(i,j,k,
iporo))),0.0_r8)
374 j_loop2 :
DO j=jstr,jend
379 bottom(i,j,
iactv)=max(0.0_r8, &
381 & (tau_w(i,j)-bottom(i,j,
itauc))*
rho0)+ &
382 & 6.0_r8*bottom(i,j,
isd50)
392 IF (bottom(i,j,
iactv).gt.bed(i,j,1,
ithck))
THEN
396 thck_to_add=bottom(i,j,
iactv)-bed(i,j,1,
ithck)
400 IF (thck_avail.lt.thck_to_add)
THEN
401 thck_avail=thck_avail+bed(i,j,k,
ithck)
408 IF (thck_avail.lt.thck_to_add)
THEN
410 thck_to_add=thck_avail
415 cff2=max(thck_avail-thck_to_add,0.0_r8)/ &
416 & max(bed(i,j,ksed,
ithck),eps)
420 cff1=cff1+bed_mass(i,j,k,nnew,ised)
422 cff3=cff2*bed_mass(i,j,ksed,nnew,ised)
423 bed_mass(i,j,1 ,nnew,ised)=cff1-cff3
424 bed_mass(i,j,ksed,nnew,ised)=cff3
429 bed(i,j,ksed,
ithck)=max(thck_avail-thck_to_add,0.0_r8)
435 cff3=cff3+bed_mass(i,j,1,nnew,ised)
437 IF (cff3.eq.0.0_r8)
THEN
441 bed_frac(i,j,1,ised)=bed_mass(i,j,1,nnew,ised)/cff3
456 bed_frac(i,j,k-ks,ised)=bed_frac(i,j,k,ised)
457 bed_mass(i,j,k-ks,nnew,ised)=bed_mass(i,j,k,nnew,ised)
465 cff=1.0_r8/real(ks+1,r8)
470 bed_frac(i,j,k,ised)=bed_frac(i,j,nbed-ks,ised)
471 bed_mass(i,j,k,nnew,ised)= &
472 & bed_mass(i,j,nbed-ks,nnew,ised)*cff
484# if defined SED_MORPH
487 bed_thick(i,j,nnew)=0.0_r8
489 bed_thick(i,j,nnew)=bed_thick(i,j,nnew)+ &
496 & lbi, ubi, lbj, ubj, &
497 & bed_thick(:,:,nnew))
507 & lbi, ubi, lbj, ubj, 1, nbed, &
508 & bed_frac(:,:,:,ised))
510 & lbi, ubi, lbj, ubj, 1, nbed, &
511 & bed_mass(:,:,:,nnew,ised))
515 & lbi, ubi, lbj, ubj, 1, nbed, 1, nst, &
519 & bed_mass(:,:,:,nnew,:))
524 & lbi, ubi, lbj, ubj, 1, nbed, &
529 & lbi, ubi, lbj, ubj, 1, nbed, 1, mbedp, &