In [ ]:
import numpy as np
import pybadlands_companion.eroFunctions as efcts
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
The stream power law (SPL) is expressed as:
$$I = \Psi (PA)^mS^n$$where $\Psi$ is a bedrock erodibility coefficient and $m$ and $n$ are positive exponents.
It is possible to modify the equation to explicitly incorporate:
We can express $\Psi$ as a function of: $$\Psi = K_i \cdot f(P,s_{bed}(S))$$
where $K_i$ is the independent component of erodibility.
Several functions are provided in the eroFunctions
class of the Companion to simulate the dependency of the erosion factor to the sediment supply:
Following Murphy et al. 2016, the dependence to the precipitation is of the form: $$f(P) = P^d$$ For Kohala Peninsula (Hawaii), the authors suggest values for precipitation exponent $d$ between 0.75 and 0.76.
Following Sklar & Dietrich (2004), the erosion rate is a function of the ratio between bedload sediment supply and water discharge and could be define to reproduce the tool & cover effect.
In [ ]:
sedsup = efcts.eroFunctions(0.,1.,101)
#help(sedsup.gauss2fct)
In [ ]:
gaussfact = 0.6*sedsup.gauss2fct(0.4,0.3,0.4,0.3)+0.4
plt.plot(sedsup.x, gaussfact, linewidth=4)
plt.xlabel('bedload sediment versus water fluxes')
plt.ylabel('erosion dependent factor')
plt.show()
In [ ]:
sedsup.exportFunction(gaussfact,'data/sedsupply')
Proportion of material entrained as bedload is assumed to be related to the upstream slope. We consider that only bedload materials will affect the erosion factor.
As a first approximation we assume a simple dependency between the percentage of eroded material transported as bedload $P_{bed}$ and the upstream slope $S$.
$$P_{bed} = \Gamma(S) $$
In [ ]:
upslp = efcts.eroFunctions(0.,0.02,51)
#help(sedsup.sigfct)
In [ ]:
#linslope = upslp.linfct(0.5,0.2)
In [ ]:
#plt.plot(upslp.x, linslope, linewidth=4)
#plt.xlabel('upstream slope [m/m]')
#plt.ylabel('Bedload proportion of eroded sediment [%]')
#plt.show()
In [ ]:
gaussslope = 0.3*upslp.gauss2fct(0.015,0.007,0.3,0.01) + 0.1
In [ ]:
plt.plot(upslp.x, gaussslope, linewidth=4)
plt.xlabel('upstream slope [m/m]')
plt.ylabel('Bedload proportion of eroded sediment [%]')
plt.show()
In [ ]:
upslp.exportFunction(gaussslope,'data/bedslp')
In [ ]: