Sediment Module

History

current version 1.0 - 5th October 2011

version date comment
1.0 05/Oct/2011 Original code

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

compute sediment erosion and deposition The interril and channelerosion are computed according to Sun et al. (2002), which combines the use of USLE data source with storm-based, distributed hydrological model

References:

Sun, H., P. S. Cornish, and T. M. Daniell, Contour-based digital elevation modeling of watershed erosion and sedimentation: Erosion and sedimentation estimation tool (EROSET), Water Resour. Res., 38(11), 1233, doi:10.1029/2001WR000960, 2002.

Imported variables:

Imported variables:

Imported routines:

Description:



Variables

Type Visibility Attributes Name Initial
type(grid_real), public :: QoutSed

output sediment discharge

type(grid_real), public :: channelErosion

channel sediment detachment rate (kg/m2/s)

type(grid_real), public :: deltaSed

variation of sediment storage (10^6 kg)

type(grid_real), public :: interrillErosion

interrill sediment detachment rate (kg/m2/s)

logical, public :: routeSediment

flag to route sediment

type(grid_integer), public :: sedFlowDirection

map of flow direction to route sediment

type(NetworkSediment), public :: sedReach

drainage network to route sediment

type(grid_real), private :: PinBL

input discharge of bed load at time t-1

type(grid_real), private :: PinSS

input discharge of suspended sediment at time t-1

type(grid_real), private :: PoutBL

output discharge of bed load at time t-1

type(grid_real), private :: PoutSS

output discharge of suspended sediment at time t-1

type(grid_real), private :: QinBL

input discharge of bed load sediment at time t

type(grid_real), private :: QinSS

input discharge of suspended sediment at time t

type(grid_real), private :: QoutBL

output discharge of bed load at time t

type(grid_real), private :: QoutSS

output discharge of suspended sediment at time t

type(grid_real), private :: rusleC

crop and management factor (-)

type(grid_real), private :: rusleK

soil erodibility factor ( ( tons h) / ( MJ mm))

type(grid_real), private :: slope

local slope (radians)

type(grid_real), private :: slopeFactor

slope dactor computed by routine ComputeSlopeFactor


Functions

private function ChannelDetachmentRate(flow, s, k, c) result(d)

compute sediment detachment rate per second in channel element (kg/s) using simplified approach by Sun et al. (2002).

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: flow

water discharge in channel (m3/s)

real(kind=float), intent(in) :: s

channel slope (m/m)

real(kind=float), intent(in) :: k

soil erodibility factor ((tons h) / (MJ mm))

real(kind=float), intent(in) :: c

crop and management factor (-)

Return Value real(kind=float)

private function CriticalVelocity(d, dp, s) result(cv)

compute critical velocity for incipient motion (m/s)

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: d

particle size of bed material (mm)

real(kind=float), intent(in) :: dp

water depth (m)

real(kind=float), intent(in) :: s

channel slope (m/m)

Return Value real(kind=float)

critical velocity (m/s)

private function FallVelocity(d) result(fv)

compute fall velocity of sediment (m/s)

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: d

particle size of bed material (mm)

Return Value real(kind=float)

fall velocity (m/s)

private function ShearVelocity(dp, s) result(sv)

compute shear velocity (m/s)

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: dp

water depth (m)

real(kind=float), intent(in) :: s

channel slope (m/m)

Return Value real(kind=float)

shear velocity (m/s)

private function Yang1973(flow, s, v, d, dp) result(tc)

compute sediment transport capacity using Yang (1973) approach (kg/s) limitation: Yang1973 equation can be applied for noncohesive natural beds with particle sizes between 0.062 mm and 2 mm, a specific gravity of 2.65 g/cm3, and a shape factor of 0.7

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: flow

water discharge in channel (m3/s)

real(kind=float), intent(in) :: s

channel slope (m/m)

real(kind=float), intent(in) :: v

water flow velocity in channel (m/s)

real(kind=float), intent(in) :: d

particle size of bed material (mm)

real(kind=float), intent(in) :: dp

water depth (m)

Return Value real(kind=float)

computed transport capacity (kg/s)

private function Yang1979(flow, s, v, d, dp) result(tc)

compute sediment transport capacity using Yang (1979) approach (kg/s) limitation: Yang1979 equation can be applied when the dimensionless unit stream power is relatively small with respect to the prevailing value of unit stream power. Used for finer suspended sediment trasnport in the Yellow River with median particle diameter of 0.067 mm.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: flow

water discharge in channel (m3/s)

real(kind=float), intent(in) :: s

channel slope (m/m)

real(kind=float), intent(in) :: v

water flow velocity in channel (m/s)

real(kind=float), intent(in) :: d

particle size of bed material (mm)

real(kind=float), intent(in) :: dp

water depth (m)

Return Value real(kind=float)

computed transport capacity (kg/s)


Subroutines

public subroutine InterrillDetachmentRate(pRate)

compute sediment detachment rate (kg/s). Interril area detachment is considered to be due to the raindrop impact, which breaks the cohesive bonds between particles, making them available for transport.

Read more…

Arguments

Type IntentOptional Attributes Name
type(grid_real), intent(in) :: pRate

precipitation rate (m/s)

public subroutine SedimentInit(iniFile, dtRoute, fileOutSedimentRouting)

Initialize sediment related variables

Arguments

Type IntentOptional Attributes Name
character(len=300), intent(in) :: iniFile

file containing configuration information

integer(kind=short), intent(out) :: dtRoute

time step for sediment routing

character(len=300), intent(out) :: fileOutSedimentRouting

public subroutine SedimentRouting(dt, flow, v, dp)

compute sediment routing in channelized drainage network using Muskingum-Cunge method. Interrill erosion is supposed to act as suspended sediment so deposition is not contemplated. Bedload sediment is divided in different grainsize classes and routing is performed for each class separately. Deposition is contemplated comparing sediment discharge to transport capacity. Flow Routing method code remind: 0 --> hillslope, water flow rate is not defined 1,2,3,11,30 --> channel routing, water flow is computed according to different schemes 5 --> Instantaneous mass transferring inside lakes (infinitive celerity) 1000:2000 --> reservoir

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=short) :: dt

routing time step

type(grid_real), intent(in) :: flow
type(grid_real), intent(in) :: v

water flow velocity in channel (m/s)

type(grid_real), intent(in) :: dp

water depth (m)

private subroutine ComputeSlopeFactor(slope)

Arguments

Type IntentOptional Attributes Name
type(grid_real), intent(in) :: slope