96 & LBi, UBi, LBj, UBj, &
97 & IminS, ImaxS, JminS, JmaxS, &
106 & bustrcwmax, bvstrcwmax, &
110 & ero_flux, settling_flux, &
111# if defined SED_MORPH
114 & bed, bed_frac, bed_mass, &
125 integer,
intent(in) :: ng, tile
126 integer,
intent(in) :: LBi, UBi, LBj, UBj
127 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
128 integer,
intent(in) :: nstp, nnew
131 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
133 real(r8),
intent(in) :: rmask_wet(LBi:,LBj:)
136 real(r8),
intent(in) :: bustrc(LBi:,LBj:)
137 real(r8),
intent(in) :: bvstrc(LBi:,LBj:)
138 real(r8),
intent(in) :: bustrw(LBi:,LBj:)
139 real(r8),
intent(in) :: bvstrw(LBi:,LBj:)
140 real(r8),
intent(in) :: bustrcwmax(LBi:,LBj:)
141 real(r8),
intent(in) :: bvstrcwmax(LBi:,LBj:)
143 real(r8),
intent(in) :: bustr(LBi:,LBj:)
144 real(r8),
intent(in) :: bvstr(LBi:,LBj:)
145# if defined SED_MORPH
146 real(r8),
intent(inout):: bed_thick(LBi:,LBj:,:)
148 real(r8),
intent(inout) :: t(LBi:,LBj:,:,:,:)
149 real(r8),
intent(inout) :: ero_flux(LBi:,LBj:,:)
150 real(r8),
intent(inout) :: settling_flux(LBi:,LBj:,:)
151 real(r8),
intent(inout) :: bed(LBi:,LBj:,:,:)
152 real(r8),
intent(inout) :: bed_frac(LBi:,LBj:,:,:)
153 real(r8),
intent(inout) :: bed_mass(LBi:,LBj:,:,:,:)
154 real(r8),
intent(inout) :: bottom(LBi:,LBj:,:)
156 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
158 real(r8),
intent(in) :: rmask_wet(LBi:UBi,LBj:UBj)
161 real(r8),
intent(in) :: bustrc(LBi:UBi,LBj:UBj)
162 real(r8),
intent(in) :: bvstrc(LBi:UBi,LBj:UBj)
163 real(r8),
intent(in) :: bustrw(LBi:UBi,LBj:UBj)
164 real(r8),
intent(in) :: bvstrw(LBi:UBi,LBj:UBj)
165 real(r8),
intent(in) :: bustrcwmax(LBi:UBi,LBj:UBj)
166 real(r8),
intent(in) :: bvstrcwmax(LBi:UBi,LBj:UBj)
168 real(r8),
intent(in) :: bustr(LBi:UBi,LBj:UBj)
169 real(r8),
intent(in) :: bvstr(LBi:UBi,LBj:UBj)
170# if defined SED_MORPH
171 real(r8),
intent(inout):: bed_thick(LBi:UBi,LBj:UBj,3)
173 real(r8),
intent(inout) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
174 real(r8),
intent(inout) :: ero_flux(LBi:UBi,LBj:UBj,NST)
175 real(r8),
intent(inout) :: settling_flux(LBi:UBi,LBj:UBj,NST)
176 real(r8),
intent(inout) :: bed(LBi:UBi,LBj:UBj,Nbed,MBEDP)
177 real(r8),
intent(inout) :: bed_frac(LBi:UBi,LBj:UBj,Nbed,NST)
178 real(r8),
intent(inout) :: bed_mass(LBi:UBi,LBj:UBj,Nbed,1:2,NST)
179 real(r8),
intent(inout) :: bottom(LBi:UBi,LBj:UBj,MBOTP)
184 integer :: Ksed, i, indx, ised, j, k, ks
187 real(r8) :: cff, cff1, cff2, cff3, cff4
189 real(r8),
dimension(IminS:ImaxS,N(ng)) :: Hz_inv
191 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tau_w
193# include "set_bounds.h"
205# if defined BEDLOAD_MPM || defined SUSPLOAD
209 tau_w(i,j)=sqrt(bustrcwmax(i,j)*bustrcwmax(i,j)+ &
210 & bvstrcwmax(i,j)*bvstrcwmax(i,j))
212 tau_w(i,j)=tau_w(i,j)*rmask_wet(i,j)
219 tau_w(i,j)=0.5_r8*sqrt((bustr(i,j)+bustr(i+1,j))* &
220 & (bustr(i,j)+bustr(i+1,j))+ &
221 & (bvstr(i,j)+bvstr(i,j+1))* &
222 & (bvstr(i,j)+bvstr(i,j+1)))
224 tau_w(i,j)=tau_w(i,j)*rmask_wet(i,j)
242 j_loop :
DO j=jstr,jend
245 hz_inv(i,k)=1.0_r8/hz(i,j,k)
249 sed_loop:
DO ised=1,nst
255# if defined COHESIVE_BED
257# elif defined MIXED_BED
263 cff=1.0_r8/
tau_ce(ised,ng)
268 cff1=(1.0_r8-bed(i,j,1,
iporo))*bed_frac(i,j,1,ised)
269 cff2=
dt(ng)*
erate(ised,ng)*cff1
270 cff3=
srho(ised,ng)*cff1
271 cff4=bed_mass(i,j,1,bnew,ised)
272 ero_flux(i,j,ised)= &
273 & min(max(0.0_r8,cff2*(cff*tau_w(i,j)-1.0_r8)), &
274 & min(cff3*bottom(i,j,
iactv),cff4)+ &
275 & settling_flux(i,j,ised))
280 t(i,j,1,nnew,indx)=t(i,j,1,nnew,indx)+ero_flux(i,j,ised)
subroutine sed_fluxes_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nstp, nnew, hz, rmask_wet, bustrc, bvstrc, bustrw, bvstrw, bustrcwmax, bvstrcwmax, bustr, bvstr, t, ero_flux, settling_flux, bed_thick, bed, bed_frac, bed_mass, bottom)