Fortran: Module Interface suspended_matter (Source File: spm.F90)


    module suspended_matter

This model for Suspended Particulate Matter (SPM) considers a single class of non-cohesive SPM particles that do not interact with the mean flow (no density effect of SPM is taken into account by default). The concentration $ C$ of SPM is modelled with the tracer equation. At the bottom, the net SPM flux is the residual of erosion and sedimentation fluxes:

\begin{displaymath}\begin{array}{l} -w_sC-\partial_z(\nu_t' \partial_z C)=F_e-F_s, \end{array}\end{displaymath} (121)

where erosion and sedimentation fluxes are modelled following Krone (1962) as functions of the bottom shear stress $ \tau_b$. In (121), $ w_s$ is a positive settling velocity. So far, GETM is only coded for constant settling velocities. The erosion flux is only non-zero when the bottom shear stress exceeds a critical shear stress $ \tau_{ce}$:

$\displaystyle F_e = \left\{ \begin{array}{ll} \displaystyle \max \left\{\frac {...
...x{ and } \vert\tau_b\vert>\tau_{ce} \ \ 0, & \mbox{ else} \end{array} \right.$ (122)

with $ c_e$ erosion constant with units kgsm$ ^{-4}$ and the fluff layer SPM content $ B$ (see below). The sedimentation flux is only non-zero for bottom shear stresses smaller than a critical shear stress $ \tau_{cs}$. This flux is limited by the near bottom concentration $ C_b$:

$\displaystyle F_s = \max\left\{\frac {w_s C_b} {\tau_{cs}} (\tau_{cs}-\vert\tau_b\vert),0\right\}.$ (123)

Critical shear stresses for erosion and sedimentation ($ \tau_{ce}$ and $ \tau_{cs}$ have as units Nm$ ^{-2}$). However, the SPM flux between the water column and the bed may be switched off by setting spm_method in spm.inp to zero. A pool $ B$ of non-dynamic particulate matter (fluff layer) is assumed in order to take into account the effects of depletion of erodible material at the bottom. A horizontally homogeneous distribution with $ B=B_0$ kgm$ ^{-2}$ is initially assumed. Sedimentation and erosion fill and empty this pool, respectively:

\begin{displaymath}\begin{array}{l} \partial_t(B) = F_s-F_e \end{array}\end{displaymath} (124)

and the erosion flux is constricted by the availability of SPM from the pool (see eq. (122)). The erosion and sedimentation fluxes are discretised using the quasi-implicit Patankar (1980) approach, which guarantees positivity of SPM, but only in the diffusion step, negative values might appear after the advection step, although these negative values should be small. The settling of SPM is linearly reduced towards zero when the water depth is between the critical and the minimum water depth. This is done by means of multiplication of the settling velocity with $ \alpha$, (see the definition in equation (5)).

It is possible to take into account the impact of sediments on density by setting spm_dens to .true. The modified density is computed as:

$\displaystyle {\rho}={\rho}_{T,S,p}+\left(1- \frac{{\rho}_{T,S,p}}{{\rho}_{spm}}\right) C.$ (125)

    use exceptions
    use domain, only: imin,jmin,imax,jmax,kmax,ioff,joff
    use m2d, only : z,D
    use domain, only: H,az
    use parameters, only: rho_0,g
    use variables_3d, only: hn,taub,spm,spm_ws,spm_pool
    use halo_zones, only: update_3d_halo,wait_halo,D_TAG,H_TAG
    public init_spm, do_spm
    logical, public           :: spm_calc=.false.
    logical, public           :: spm_save=.true.
    logical, public           :: spm_hotstart=.false.
    integer                 :: spm_method=1
    integer                 :: spm_init_method=1, spm_format=2
    character(len=PATH_MAX) :: spm_file=""
    character(len=32)       :: spm_name='spm'
    integer                 :: spm_adv_split=0
    integer                 :: spm_adv_hor=1
    integer                 :: spm_adv_ver=1
    REALTYPE                :: spm_AH = -_ONE_
    REALTYPE                :: spm_const= _ZERO_
    REALTYPE                :: spm_init= _ZERO_
    integer                 :: spm_ws_method = 0
    REALTYPE                :: spm_ws_const=0.001
    REALTYPE                :: spm_erosion_const, spm_tauc_sedimentation
    REALTYPE                :: spm_tauc_erosion, spm_pool_init
    REALTYPE                :: spm_porosity=_ZERO_
    REALTYPE                :: spm_rho= 2650.
    logical                 :: spm_dens=.false.
    For erosion-sedimentation flux
    REALTYPE                :: Erosion_flux , Sedimentation_flux
    logical                 :: erosed_flux =.false.
   For flocculation (not yet in namelist)
    REALTYPE                :: spm_gellingC=0.08        !(g/l or kg/m3)
    REALTYPE                :: spm_part_density=2650.   !(g/l or kg/m3)
    integer                 :: spm_mfloc=4
    Original author(s): Manuel Ruiz Villarreal, Karsten Bolding
                        and Hans Burchard

kklingbe 2017-10-02