1 Introduction

Prediction of fluid-terrain interaction involving the transport of cohesionless sediment is fundamental to understanding the morphodynamics of natural systems as deserts, rivers or coastal regions and its effects on civil structures. For this kind of problems we consider three different interfaces: fluid/erodible sediment layers, erodible/non-erodible layers and fluid/non-erodible beds. Interfaces limiting with non-erodible beds could appear when the fluid or the moving sediment particles are in contact with cohesive strata or with structures and obstacles. Some examples of predictions including these interfaces are about the evolution of riverbeds around bridge foundations, barchan and transverse dunes in deserts and coastal areas, subaqueous dunes for the maintenance of channels, and silting of reservoirs.

Apart from its role in the sediment dynamics, evolutionary bedforms play an important role in determining the fluid flow, given that bed shape changes create boundary forcings to the flow due to momentum variations. In practice, timescale of the flow variability is frequently much shorter than that for the bed evolution, enabling the use of two widely established strategies. First plan of action is to neglect the two-phase interaction. Second plan is to adopt a quasi-steady approximation. To illustrate the first category, in Refs.  [23, 26] fluid and sediment dynamics are separated and a semi-analytic solution is integrated to link both domains. A representative example of a quasi-steady procedure can be found in Ref. [27], where authors integrate the flow equations past a frozen landform to a steady state, and update the boundary shape subsequently. Computational cost of this line of action is low and the procedure captures the basic physics of problems with evolving bedforms, although results do not always fit experimental data completely. An affordable approach to relax the limitations of the quasi-steady approximation is to use a coupled model for a severe flow scenario, shrinking the gap between timescales. An hypothetical severe-scenario is adopted in Refs. [19, 20], amplifying the sediment flux few orders of magnitude, and at the same time improving the efficacy of computation.

An effective numerical procedure of the fluid/sediment interface must include a straightforward treatment of the erodible/non-erodible limit. In previous works some of the present authors were concentrated on the coupling of the sediment transport with free surface flows, either by depth-integrated flow solutions  [16,17,18], or by fully incompressible free surface flow solutions  [14]. Both procedures incorporate a Non-Oscillatory Finite Element Method (NFEM) that permits the concurrent simulation of erodible and non-erodible interfaces. The method avoids nonphysical computed values by preserving bounds for the thickness of the erodible stratum in a conservative form. Sign preservation given by the NFEM is essential both for flow computation and for interface tracking procedure. In the first case, this property avoids unphysical overshoots in pressure and velocity fields. In the second case, a positive definite thickness of the erodible layer of sediment is mandatory to account for interaction between evolving cohesionless sediment layers and rigid beds. An alternate methodology was adopted in Refs.  [3, 4], where an explicit particle Lagrangian procedure was used to solve the fluid and sediment flows. This methodology proves to be efficient in several practical applications, nevertheless treatment of non erodible obstacles is not apparent. In the two-dimensional NFEM approach of Ref.  [14] the solid domain is deactivated, while fluid-solid interface is updated by solving a conservation equation with mass fluxes derived from the fluid flow solution.

In this work we expand the numerical model developed in Ref.  [14] to solve complete three dimensional problems involving the interaction of fluids with changing erodible beds, rigid strata, and immersed structures. The simulation of problems with embedded moving interfaces has been a challenge for decades due to the necessity of handling large jumps in physical properties. Numerical methods documented in the literature can be categorised into two widely recognised groups, those based on surface capturing and those based on surface tracking  [5, 7]. First class of procedures establishes the interface implicitly by means of a phase function governed by a transport equation. In these methods, it is usual to resort to mesh refinement algorithms [12] or to enrichment functions [2] to improve the solution quality at the interface. Otherwise, in second class of methods the discontinuity matches with a mesh boundary or it is defined by faces of mesh elements. These methodologies usually give better accuracy, although the mesh has to be updated as interface evolves, thus grid adaptation or remeshing is ineludible. Some fields where this technique is applied are the propagation of fractures [8, 21], two fluids flows [22] and fluid-solid interactions [15, 24], among others. In previous references, mesh adaptation typically follows three steps: refinement of the discontinuity neighbourhood, definition of new nodes fitting the interface, and movement of background nodes to improve the mesh quality.

We propose a surface tracking method. However, the remeshing algorithm is simpler than usual, because it does not need an improved resolution at the discontinuity. Reasons for this simplification are the following: (a) solid phase is essentially at rest in typical problems with coupled fluid and erodible beds, while interface dynamics is governed by a saltation process, thus the solid phase is not considered in the computation (and jumps) of variables through the interface (e.g., pressure gradient); (b) velocity field does not have to be reproduced in detail at the vicinity of the bedform because we assume a logarithmic wall law to compute the friction velocity; (c) in the sediment transport problems treated here, the interface is frequently smooth with slope changes in a larger scale than usual spatial discretization sizes, then intersections between interface and elements can be considered as planar. Also, the natural slope limiter (avalanche effect) is usually active for cohesionless materials, helping to regularize the interface. Therefore, present grid adaptation procedure adds new nodes fitting the interface and deactivates those elements belonging to the solid phase. Refinement step and movement of background nodes are omitted with the consequent reduction of computational cost.

Section 2 reports the governing equations for fluid and sediment (2.1), and the numerical model formulation (2.2) including details of the mesh adaptation algorithm. Moreover, particulars of the method regarding flux limiting procedure are provided in Appendix. Numerical experiments are described in Sect. 3. The first series of tests (3.1) explores the evolution of trenches due to both water flow and wind, and involves simplified two-dimensional and full three-dimensional simulations. Second test (Sect. 3.2) concerns the scour of submerged piles due to a water flow. Finally, conclusions in Sect. 4 close the paper.

2 Governing equations and numerical solution

2.1 Governing equations

Simulation of sediment transport involves the solution of two sets of equations: those governing the fluid flow, and those governing the sediment transport and the fluid/sediment interface evolution. The continuous model for fluid flow solution is the set of Navier–Stokes equations for a Newtonian incompressible fluid with density \(\rho _f\) and dynamic viscosity \(\mu _f\). The system is written as

$$\begin{aligned}{} & {} \nabla \cdot \textbf{u} = 0 \, \end{aligned}$$
(1)
$$\begin{aligned}{} & {} \frac{\partial \textbf{u}}{\partial t} + \nabla \cdot \left( \textbf{u}\textbf{u}\right) = -\frac{1}{\rho _f}\nabla p + \frac{1}{\rho _f}\nabla \cdot \mathbf{\tau }\, \end{aligned}$$
(2)

in \(\varOmega \in \textbf{R}^D, t\in \left[ t_{0},T\right] \). Here, \(\textbf{u}(\textbf{x},t)\) is the velocity field (\(\textbf{x}=(x_l), l=1,D\)), D is the number of space dimensions, \(p=p'-\rho _f g z\) is the dynamic pressure where \(p'\) is the total pressure, g is the gravity acceleration, z is the vertical coordinate, \(\mathbf{\tau }=\mu _f\left( \frac{\partial u_i}{\partial x_j}+\frac{\partial u_j}{\partial x_i}\right) \) is the viscous stress tensor and \([t_0,T]\) is the time interval. Initial conditions are given by \(\textbf{u}(\textbf{x},t_0)=\overline{\textbf{u}}_0(\textbf{x})\), \(p(\textbf{x},t_0)=\overline{p}_0(\textbf{x})\), and boundary conditions are

$$\begin{aligned}{} & {} \textbf{u}=\overline{\textbf{u}}_f, \ \frac{\partial p}{\partial \textbf{n}_b}=0 \ \ \textrm{on} \ \ \varGamma _{\text {f}}^- \ \ \ \ \ \mathrm{(a)} \, \\{} & {} \textbf{u}\cdot \textbf{n}_b = 0, \ \textbf{t}_b\cdot \tau \cdot \textbf{n}_b = 0, \ \textbf{b}_b\cdot \tau \cdot \textbf{n}_b = 0, \\{} & {} \frac{\partial p}{\partial \textbf{n}_b}=0 \ \ \textrm{on} \ \ \varGamma _\textrm{s}^- \ \ \ \ \ \mathrm{(b)} \, \\{} & {} \frac{\partial \textbf{u}}{\partial \textbf{n}_b} = 0, \ p = \overline{p} \ \ \textrm{on} \ \ \varGamma ^+ \ \ \ \ \ \mathrm{(c)}. \end{aligned}$$

The boundary of the domain \(\varOmega \) is designated as \(\varGamma \), \(\varGamma =\varGamma ^- +\varGamma ^+\), and \(\overline{\textbf{u}}_0\), \(\overline{p}\) and \(\overline{\textbf{u}}_f\) are known functions (from now on overline designates known values). Further, \(\textbf{n}_b\), \(\textbf{t}_b, \textbf{b}_b\) are the normal, tangent and bitangent to the boundary, respectively. Boundary \(\varGamma ^-=\varGamma _\textrm{f}^-\cup \varGamma _\textrm{s}^-\) comprises those parts of the border with inlet or wall conditions \(\left( \textbf{u} \cdot \textbf{n}_b \le 0\right) \), where subscripts f and s denote fixed velocity condition and slip condition, respectively, and \(\varGamma ^+\) represents the part of the boundary with outlet conditions.

Second set of equations consists of a law for the sediment flux \(\textbf{q}_s\), and a conservation equation of the effective sediment layer thickness \(h(\tilde{\textbf{x}}, t)\) establishing the solid–fluid interface as

$$\begin{aligned} \rho _s \frac{\partial h}{\partial t} + \nabla _H \cdot \textbf{q}_s = \nabla _H \cdot \left( \rho _s \mathcal {K} \nabla _H h^* \right) \end{aligned}$$
(3)

in \(\left( \varGamma _h\subset \varGamma _\textrm{f}^- \right) \in \textbf{R}^{D-1}, t\in \left[ t_{0},T\right] \) with initial condition \(h(\tilde{\textbf{x}},t_0)=\overline{h}_0(\tilde{\textbf{x}})\) (\(\tilde{\textbf{x}}=(\tilde{x}_l), l=1,D-1\)), and boundary condition \(h=\overline{h}\) on \(\partial \varGamma _{h}\). In Eq. (3), \(h^*(\tilde{\textbf{x}}, t)=h_s(\tilde{\textbf{x}})+h(\tilde{\textbf{x}},t)\) denotes the vertical position of the bottom depth, where \(h_s\) is the upper position of a non-erodible stratum. Moreover, \(\rho _s=\rho _m\left( 1-\lambda \right) \) is the bulk density, \(\rho _m\) is the density of the grain material, and \(\lambda \) is the porosity (volume fraction of voids). The sediment mass flux is considered as vertically integrated over the sediment layer, and \(\nabla _H=\left( \frac{\partial }{\partial \tilde{x}_1},\dots ,\frac{\partial }{\partial \tilde{x}_{D-1}}\right) \). In the right-hand side of the equation, the avalanche flux \(\rho _s \mathcal {K} \nabla _H h^*\) operates as a natural slope limiter. This term is computed as an anisotropic diffusion, where the diffusion coefficient \(\mathcal {K}\equiv \beta \ \textrm{max}\big (0, \textrm{sgn}(\left\| \nabla _H h^* \right\| -s_{C})\big )\), where \(s_{C}=\tan \alpha \) is the critical slope and \(\alpha \) the angle of friction; hence, \(\mathcal {K}\) depends critically on the bottom slope. The diffusivity \(\beta \) is specified in terms of temporal and spatial resolution of the numerical model  [19].

In this work, we consider aeolian transport problems we consider sediment transport problems where sand is the prevailing fraction of the grain mixture. Thus, the sediment flux \(\textbf{q}_s\) is essentially ascribed to the saltation process, involving the direct momentum transfer from fluid to the grains, in addition to the ejection due to collisions between grains. Efficacy of saltation flux models depends significantly on a detailed calculation of the wall shear stress field. Among existing models to compute bedload sediment fluxes (see a comprehensive review in Ref.  [14]), the general adjusted Bagnold’s law  [9] is widely used for aeolian transport and is selected in this work,

$$\begin{aligned} \textbf{q}_s= C \frac{\rho _f}{g} \textbf{u}_{*} \left\| \textbf{u}_{*} \right\| ^2 \textrm{max} \left( 0, 1 - \frac{u_{t}}{ \left\| \textbf{u}_{*} \right\| } \right) ~. \end{aligned}$$
(4)

In the flux law \(C=4.2\sqrt{d/d_1}\) is an empirical coefficient [9], d is the grain size, \(d_1=2.5\times 10^{-4}\) m, g is the gravity acceleration, \(\textbf{u}_{*}=u_{*} \textbf{u}\left\| \textbf{u}\right\| ^{-1}\) is the friction velocity and \(u_{*}=\sqrt{\rho _f^{-1}\tau _w}\) (\(\tau _w\) denotes the wall shear stress). Lastly, \(u_{t}\) is the threshold value of the friction velocity, which considers the angle \(\gamma \) between the local flow current direction and slope (see derivation in [19]),

$$\begin{aligned} u_{t}=\sqrt{ \frac{\sin \theta }{s_C} \ \cos \gamma \!+\! \sqrt{\frac{\sin ^2 \theta }{s_C^2}\! \left( \cos ^2\gamma \!-\! 1 \right) \! +\! \cos ^2\theta }~~ } ~ u_{t0}~, \nonumber \\ \end{aligned}$$
(5)

where \(\theta \) is the local slope angle, and \(u_{t0}\) the threshold friction velocity for a flat bed.

2.2 Numerical model

Numerical solutions of Eqs. (1)–(2) and Eq. (3) are performed using the non-oscillatory finite element method. The NFEM strategy employs flux correction techniques to correct a conservative and sign-preserving predictor algorithm with anti-diffusive contributions, maintaining the properties of the predictor scheme. Corrections are calculated by limiting the difference between the contributions of a high order (HO) method and those of a predictor or low order (LO) method. Therefore, complete solutions of fluid dynamics and conservation of the sediment layer demand two numerical approximations to perform the flux correction limiting process. Algorithms defining HO and LO approaches could be related. For instance, in Ref.  [10], computation of LO solution is achieved by adding extra diffusion to the HO solution. The NFEM makes use of independent high order and low order solutions. In the case of the high order algorithm, solution of Eqs. (1)–(2) is the Characteristic Based Scheme (CBS), incorporating a second-order accuracy extension for transient advective fields  [16], and solution of Eq. (3) is the second-order accuracy Characteristic-Galerkin algorithm [16]. On the other hand, the low order method for the NFEM is such that it has a nearly minimum added diffusion to preserve positivity. The best candidate is a first-order upwind finite element procedure.

For completeness, we include an Appendix where the reader can find the basis of the flux correction procedure proposed, as well as a simple one-dimensional illustration of the algorithm. In the next subsection, we introduce the finite element high order and low order solutions.

2.2.1 High and low order solutions

First, we specify the characteristic-based-split (CBS) algorithm as the HO procedure for the fluid dynamics (Eqs. (1)–(2)). After time discretization, the velocity solution can be written as

$$\begin{aligned} \textbf{u}^{n+1}=\textbf{u}^{n}+\varDelta \textbf{u}^{*} + \varDelta \textbf{u}^{**} \, \end{aligned}$$
(6)

where the velocity at time level \((n+1)\varDelta t\) is computed as the sum of a predictor velocity \(\textbf{u}^{*}=\textbf{u}^n+\varDelta \textbf{u}^{*}\) and a pressure correction velocity increment \(\varDelta \textbf{u}^{**}\). Finite element discretization for \(\varDelta \textbf{u}^{*}\) is determined by the Characteristic Galerkin method (see e.g.  [16]), and its formulation (reproduced concisely below) can be consulted in detail in Refs.  [11, 12, 14]. Finite element discretizations are equipped with the finite element spaces \(\mathcal {V}^h_i\), \(\mathcal {U}^h_i, \mathcal {W}^h\), and \(\mathcal {P}^h\), (\(i=1,D\)) stated as

$$\begin{aligned}{} & {} \mathcal {V}^h_i \subset \mathcal {V}_i=\{ v_i \in H^1(\varOmega ) \mid v_i=0 \ \textrm{on} \ \varGamma _{\text {f}}^- \} , \\{} & {} \mathcal {U}^h_i \subset \mathcal {U}_i=\{ u_i \in H^1(\varOmega ) \mid u_i=\overline{u}_i \ \textrm{on} \ \varGamma _{\text {f}}^- \} , \\{} & {} \mathcal {W}^h \subset \mathcal {W}=\{ w \in H^1(\varOmega ) \mid w=0 \ \textrm{on} \ \varGamma ^+ \} , \\{} & {} \mathcal {P}^h \subset \mathcal {P}=\{ p \in H^1(\varOmega ) \mid p=\overline{p} \ \textrm{on} \ \varGamma ^+ \} . \end{aligned}$$

Thus, the predictor solution is determined as: Find \(\varDelta {u}_i^{*h}\in \mathcal {U}^h_i\) for all \(t \in [t_0,T]\) such that

$$\begin{aligned}{} & {} \left( v^h_i, \frac{\varDelta u_i^{*h}}{\varDelta t}\right) _{\varOmega }= -\left( v^h_i, \nabla \cdot \left( (\textbf{u}^h)^{n+1/2} (u_i^h)^n\right) \right) _{\varOmega }\nonumber \\{} & {} \quad +\left( v^h_i, f_{i}^h\right) _{\varOmega }^{n} \nonumber \\{} & {} \quad -\frac{\varDelta t}{2} \left\{ \left\langle \nabla \cdot \left( v^h_i \left( \textbf{u}^h \textbf{u}^h \right) ^{n+1/2} \right) ,\nabla (u_i^h)^n \right\rangle _{\varOmega _I} \right. \nonumber \\{} & {} -\left\langle v^h_i \left( (\textbf{u}^h)^{n+1/2} \cdot \nabla (\textbf{u}^h)^n \right) , \nabla (u_i^h)^n \right\rangle _{\varOmega _I} \nonumber \\{} & {} \quad \left. +\left( v^h_i, (\textbf{u}^h)^{n+1/2} \cdot (\nabla (f^h_i)^n \right) _{\varOmega _I} \right\} \, \end{aligned}$$
(7)

where \(\textbf{f}=\frac{\displaystyle \mu _f}{\displaystyle \rho _f}\nabla ^{2}\textbf{u}\) and

$$\begin{aligned} (v,w)_{\varOmega }= & {} \int _{\varOmega } v \, w \ \textrm{d}\varOmega \, \\ \left\langle \textbf{v}, \textbf{w} \right\rangle _{\varOmega }= & {} \int _{\varOmega } \left( \textbf{v} \cdot \textbf{w} \right) \ \textrm{d}\varOmega \\ \text {and} \ \ \left[ v,\textbf{c} \right] _{\varGamma }= & {} \int _{\varGamma } v \, \textbf{c} \cdot \textbf{n}_b \ \textrm{d}\varGamma \, \end{aligned}$$

for vector fields \(\textbf{v}, \textbf{w}, \textbf{c}\) and scalars v and w. Moreover, \(\varOmega _I\) is the domain without elements with sides belonging to the boundary. Specifics about the computation of the velocity field at \((n+1/2)\varDelta t\) in Eq. (7) are discussed in Ref.  [14].

Second step involves pressure computation from the continuity equation. The solution is formulated as: Find \((p^h)^{n+1} \in \mathcal {P}^h\) for all \(t \in [t_0,T]\), such that

$$\begin{aligned} \frac{\varDelta t}{\rho _f} \left\langle \nabla w^h,\nabla (\varDelta p^h) \right\rangle _{\varOmega }= & {} \left\langle \nabla w^h,\varDelta \textbf{u}^{*h} \right\rangle _{\varOmega } \nonumber \\{} & {} -\frac{\varDelta t}{\rho _f} \left\langle \nabla w^h,\nabla p^h \right\rangle _{\varOmega }^n- \left[ w^h, \varDelta \textbf{u}^h \right] _{\varGamma } \, \nonumber \\ \end{aligned}$$
(8)

where \(\varDelta \textbf{u}^h=(\textbf{u}^h)^{n+1}-(\textbf{u}^h)^{n}\). Final pressure field is \(p^{n+1}=p^{n}+\varDelta p\). Last step updates velocity field through Eq. (6), where \(\varDelta \textbf{u}^{**}\) is given by

$$\begin{aligned}{} & {} \left( v^h_i, \frac{\varDelta u_i^{**h}}{\varDelta t}\right) _{\varOmega } = -\frac{1}{\rho _f}\left( v^h_i, ( \nabla p^h)_i^{n+1}\right) _{\varOmega } \nonumber \\{} & {} - \frac{\varDelta t}{2\rho _f}\left( \nabla \cdot \left( v^h_i ( \textbf{u}^h )^{n+1/2}\right) , ( \nabla p^h)_i^{n+1} \right) _{\varOmega _I}. \end{aligned}$$
(9)

Second, the high order solution for the advective-diffusion transport law (3) is attained by the Characteristic Galerkin method and is stated in terms of the spaces \(\mathcal {S}^h\) and \(\mathcal {H}^h\), defined as \(\mathcal {S}^h \subset \mathcal {S}=\{ s \in H^1(\varGamma _h) \mid s=0 \ \textrm{on} \ \partial \varGamma _h \}, \mathcal {H}^h \subset \mathcal {H}=\{ h \in H^1(\varGamma _h) \mid h=\overline{h} \ \textrm{on} \ \partial \varGamma _h \}\), where \(\varGamma _h\) (specified after Eq. (3)) corresponds with the solid/fluid interface surface. Then, the HO solution is formulated as: Find \(h^{h} \in \mathcal {H}^{h}\) for all \(t \in [t_0,T]\), such that

$$\begin{aligned}{} & {} \left( s^h, \frac{\varDelta h^{h}}{\varDelta t} \right) _{\varGamma _h} = \left( \textbf{u}_s^{n+1/2} \cdot \nabla _H s^h, (h^h)^{n} \right) _{\varGamma _h} \nonumber \\{} & {} - \left[ s^h, \frac{\overline{\textbf{q}}_s}{\rho _s} \right] _{{\partial \varGamma _h^+}}^n -\left( \nabla _H s^h, \mathcal {K} (\nabla _H {h^*}^h) \right) _{\varGamma _h}^n + \nonumber \\{} & {} \quad \left[ s^h, \mathcal {K} (\nabla _H {h^*}^h)\right] _{{\partial \varGamma _h}}^n \nonumber \\{} & {} -\frac{\varDelta t}{2} \left\{ \left\langle \nabla _H \cdot \left( s^h \left( \textbf{u}_s^h \textbf{u}_s^h \right) ^{n+1/2} \right) , \nabla _H (h^h)^n \right\rangle _{{\varGamma _h}_I} - \right. \nonumber \\{} & {} \quad \left\langle s^h \left( (\textbf{u}_s^h)^{n+1/2} \cdot \nabla _H (\textbf{u}_s^h)^n \right) , \nabla _H (h^h)^n \right\rangle _{{\varGamma _h}_I} \nonumber \\{} & {} + \left. \left( \nabla _H \cdot s^h (\textbf{u}_s^h)^{n+1/2}, \left( h^h \nabla _H \cdot \textbf{u}_s^h \right) ^n \right) _{{\varGamma _h}_I} \right\} \, \end{aligned}$$
(10)

where \(\textbf{u}_s\) \(\equiv \) \(\frac{\displaystyle \textbf{q}_s}{\displaystyle h^h\rho _s}\), \({\partial \varGamma }_h^+\) is defined as the portion of the bedform boundary with a prescribed sediment mass flux \(\overline{\textbf{q}}_s\), and

$$\begin{aligned} (v,w)_{\varGamma _h}= & {} \int _{\varGamma _h} v \, w \ \textrm{d}\varGamma _h \, \\ \left\langle \textbf{v}, \textbf{w} \right\rangle _{\varGamma _h}= & {} \int _{\varGamma _h} \left( \textbf{v} \cdot \textbf{w} \right) \ \textrm{d}\varGamma _h \\ \text {and} \ \ \left[ v,\textbf{c} \right] _{\partial \varGamma _h}= & {} \int _{\partial \varGamma _h} v \, \textbf{c} \cdot \textbf{n}_b \ \textrm{d}\partial \varGamma _h . \end{aligned}$$

Computation of sediment mass flux requires stress recovery from the updated velocity field attained in the flow solution. In this work, shear stresses at the sediment/fluid interface are estimated by assuming a logarithmic wall velocity law; then, friction velocity is calculated as

$$\begin{aligned} (\textbf{u}_{*})^{n+1}=\kappa \frac{\textbf{u}_\varDelta ^{n+1}-\left( \textbf{u}_\varDelta ^{n+1}\cdot \textbf{n}_b \right) \textbf{n}_b }{\ln \left( z_\varDelta /z_0\right) }, \end{aligned}$$
(11)

where \(\textbf{u}_\varDelta =\textbf{u}(z_\varDelta )\) is the velocity value taken at height \(z_\varDelta \) over the bedform, \(\kappa =0.41\) is the Von Karman constant, and \(z_0\) is the equivalent roughness length. The height \(z_\varDelta \) is estimated in terms of mesh resolution, and its value in Eq. (11) is assumed at time \(n \varDelta t\). Prior to the solution (10), computation of \(\textbf{q}_s^{n+1}\) and \(\textbf{u}_s^{n+1/2}= (\textbf{u}_s^{n}+\textbf{u}_s^{n+1})/2\) is achieved by elementwise usage of the law stated by Eq. (4) and an a posteriori nodal recovery.

Now, we examine the low-order solutions. The proposed low-order approach is an upwind finite element monotone scheme independent of the high-order procedure. From now on, we introduce the notation \(\mathcal{L}\mathcal{O}(\,)\) comprising upwind fluxes computation such that

$$\begin{aligned} \mathcal{L}\mathcal{O} \left( \psi , \textbf{a} \right)= & {} \left( \textbf{a} \cdot \nabla \psi \right) + \left[ \nabla \cdot \left( \textbf{k} \nabla \psi \right) \right] \, \end{aligned}$$
(12)

for a scalar field \(\psi \) and a vector field \(\textbf{a}\), where \(\textbf{k}\) is a diffusivity tensor corresponding to the artificial diffusion of the finite element upwind scheme (see specifics in Eq. (13) of Ref.  [14]). Results in the computation of the LO solution are essentially the same by median dual finite volume method or Galerkin linear finite elements with lumped mass approximation  [16]. Here, the low-order predictor method is written via the Galerkin formulation for the sake of simplicity.

A monolithic implementation of the low-order solution for fluid flow requires three steps similar to Eqs. (7)–(9). Then, this course of action would entail the computation of two implicit solutions for pressure (Eq. (8) and the corresponding for the LO solution). Both calculations should be performed every time step followed by the correction reported in the Appendix. A cost-effective way to circumvent this double computation is by performing correction only for the predictor velocity field. Then, the abbreviated procedure has the following steps:

  1. 1.

    Computation of the HO velocity predictor \(\textbf{u}^{*h}=(\textbf{u}^h)^{n}+\varDelta \textbf{u}^{*h}\) given by Eq. (7).

  2. 2.

    Calculation of the LO velocity predictor \(\textbf{u}_{LO}^{*h}=(\textbf{u}^h)^{n}+\varDelta \textbf{u}^{*h}_{LO}\), where the intermediate velocity increment is

    $$\begin{aligned}{} & {} \left( v^h_{iL},\frac{\varDelta u_{iLO}^{*h}}{\varDelta t}\right) _{\varOmega }\nonumber \\{} & {} \quad = \left( v^h_i, \mathcal{L}\mathcal{O}\left( ( u^h_i +\frac{\varDelta t}{2}f^h_i)^n,(\textbf{u}^h)^n \right) \right) _{\varOmega }+\left( v^h_i,f^h_i\right) ^n_{\varOmega } \, \nonumber \\ \end{aligned}$$
    (13)

    where \(v^h_{iL}\) is the lumped mass matrix and LO subindex signifies low-order solution.

  3. 3.

    Computation of the corrected velocity predictor \(\tilde{\textbf{u}}^{*h}\) by the correction algorithm (Appendix, see Eq. (23)).

  4. 4.

    Calculation of the updated pressure by solving the implicit equation (8) and replacing \(\varDelta \textbf{u}^{*h}\) by the corrected velocity increment \(\varDelta \tilde{\textbf{u}}^{*h}=\tilde{\textbf{u}}^{*h}-(\textbf{u}^{h})^n\).

  5. 5.

    Get the updated velocity field by computing \(\varDelta \textbf{u}^{**}\) with Eq. (9).

Low-order form for the bedform evolution (3) is formulated as: Find \((h^{h})^{n+1}_{LO} \in \mathcal {H}^{h}\) for all \(t \in [t_0,T]\), such that

$$\begin{aligned}{} & {} \left( s^h_L, \frac{\varDelta h^{h}_{LO}}{\varDelta t} \right) _{\varGamma _h} = \left( s^h, \mathcal{L}\mathcal{O}\left( (h^h)^n,(\textbf{u}_s^h)^n\right) \right) _{\varGamma _h} \nonumber \\{} & {} \quad -\left\langle \nabla _H s^h, \mathcal {K} (\nabla _H {h^*}^h)^n \right\rangle _{\varGamma _h} + \left[ s^h, \mathcal {K} (\nabla _H {h^*}^h)\right] _{{\partial \varGamma _h}}^n, \end{aligned}$$
(14)

where \(s^h_{L}\) corresponds to the lumped mass matrix, and \((h^{h})^{n+1}_{LO}=(h^{h})^{n}+\varDelta h^{h}_{LO}\).

All series of experiments in preceding works  [11,12,13,14] have shown that the use of this reduced method instead of the monolithic procedure has no noticeable differences in results and retains the capability to preserve interface resolution. The average extra computational cost of the abridged NFEM respect to the procedure with no corrections is about 1% for serial calculation of incompressible flows.

2.2.2 Mesh adaptation algorithm

In this subsection we report the proposed grid adaptation method to the practical tracking of the fluid–bedform interface. Grid adaptation requires the following initial mesh data: (a) coordinates of all nodes and their connectivity; (b) all edges and the pair of nodes defining each one; and (c) edges defining each element of the mesh. These data are conveniently stored by linked lists. Once values of \(h^{n+1}\) and bed position are updated, grid adaptation is conducted by three steps:

  1. 1.

    Loop over nodes: \(h^*_i\) is calculated at coordinates \((x_i,y_i)\) of every node i \( \in \varOmega \) (with vertical coordinate \(z_i\) of the original mesh). Nodes are labelled as

    • Under the interface: \(z_i+\varsigma <h^*_i\), Node flag is 0 (inactive).

    • Over the interface: \(z_i-\varsigma >h^*_i\). Node flag is 1 (active).

    • Coincident with the interface: \(z_i-\varsigma \le h^*_i\le z_i+\varsigma \). Node flag is 2 (coincident).

    The number \(\varsigma \) is of the order of round-off value.

  2. 2.

    Loop over edges: pair of nodes delimiting every edge are labelled as

    • Both nodes have flag 0: edge is under the bedform; edge flag is 0 (inactive).

    • Both nodes have flag 1: edge is over the bedform; edge flag is 1 (active).

    • Both nodes have flag 2: edge is contained in the interface; edge label is 2 (coincident).

    • One node has flag 2 and the other node has flag 0 or 1; edge flag is 0 or 1 depending on the flag of the second node.

    • One node has flag 0 and the other node has flag 1; edge is cut by the bedform and its flag is 3 (intersected). In this situation, coordinates of the cut-off node are calculated and stored. Nevertheless, if the intersection is close to one of the edge nodes, element could be too small in compare with those of the original mesh. To avoid this inconvenience, we define a tolerance \(\xi \) such that, if \(\frac{\displaystyle L_1}{\displaystyle L_1+L_2}<\xi \) (see Fig. 1), flag of node 1 is designated as 2. Practical values for the tolerance are \(\xi \in [0.05,0.10]\). If this special case occurs, step 2 must be run again to avoid indeterminacy of other edges containing modified nodes.

  3. 3.

    Loop over elements: we consider tetrahedrons and assume elements small enough such that the cut caused by the bedform is plane. Hence, the following cases can be produced,

    • There are not nodes with flag 1: the tetrahedron is completely below the bedform, then it is deactivated and not included in the new mesh.

    • The sum of nodes with flag 1 and nodes with flag 2 is four: tetrahedron is over (or tangent to) the bedform, then the element is active and its geometry is identical to that of the original mesh.

    • One edge has flag 2 and other edge has flag 3: the element is split and a new element is formed with (a) the active node, (b) the cut-off node of the edge with label 3 and (c) the two nodes with flag 2 (see Fig. 2).

    • Two edges have flag 3 and one node has flag 2: we can distinguish two cases. The first one occurs when just one node is label 1, in this case the new element is formed with (a) the active node, (b) the two cut-off nodes of edges with label 3 and (c) the node with flag 2 (see Fig. 3). Second case takes place when two nodes have flag 1; the resulting square pyramid is divided into two tetrahedrons by splitting the pyramid base by the shortest diagonal (see Fig. 4). Then, the two new elements are formed by (a) active nodes, (b) the node with flag 2 and (c) the two cut-off nodes of edges with label 3.

    • Three edges have label 3: here two cases are identified. The first one takes place when just one node has label 1, in this case, the new element is formed by (a) the three cut-off nodes and (b) the node with flag 1 (see Fig. 5). Second case occurs when there are three nodes with flag 1; in this situation, the resulting triangular prism is split into three tetrahedrons by subdividing the square faces (see Fig. 6). Special care must be taken when faces are split to avoid an untetrahedralizable polyhedron.

    • Four edges have label 3: here the resulting triangular prism is divided into three tetrahedrons by subdividing the square faces as in the previous case (see Fig. 7).

Once activated elements are established, the subsequent steps involve the assembling of the new mesh and the prescription of boundary conditions on those edges in contact with the bedform. Pressure values at new nodes on edges with label 3 are taken from previous nodes belonging to the same edge. Errors introduced in this process are negligible as the fluid-bedform interface movement has a time scale variability much larger than the flow and the updating timestep; hence, new nodes are very close to the former ones. Furthermore, in this instance, the grid adaptation algorithm does not need to be performed every time step. Otherwise, when a “severe flow scenario" is adopted, defined either by similar time scales of fluid flow and saltation flux or by the saltation flux amplified a few orders of magnitude [20], mesh adaptation every time step is recommended.

Fig. 1
figure 1

Edge (black line) cut by the bedform (red line). (Color figure online)

Fig. 2
figure 2

Case with one edge with label 2 and other edge with label 3. Red line indicates the cut made by the bedform. (Color figure online)

Fig. 3
figure 3

Case with two edges with label 3, one node with label 2 and one node with label 1. Red line indicates the cut made by the bedform. (Color figure online)

Fig. 4
figure 4

Case with two edges with label 3, one node with label 2 and two nodes with label 1. Red line indicates the cut made by the bedform and blue line shows face subdivision. (Color figure online)

Fig. 5
figure 5

Case with three edges with label 3 and one node with flag 1. Red line indicates the cut made by the bedform. (Color figure online)

Fig. 6
figure 6

Case with three edges with label 3 and three nodes with flag 1. Red line indicates the cut made by the bedform and blue lines show faces subdivision. (Color figure online)

Fig. 7
figure 7

Case with four edges with label 3. Red line indicates the cut made by the bedform and blue lines show faces subdivision. (Color figure online)

2.2.3 A brief on parallel coding development

The Finite Element model described above has been programmed in C++ and parallelized with MPI (Message Passing Interface). In addition, OpenMP (Open Multi-Processing) is also employed for those tasks requiring shared memory. In summary, the procedure is as follows: the root process reads grids for fluid solution and for solid–fluid interface solution; then, grids are divided in the XY plane into N subdomains, being N the number of available computational cores. Each core receives data of all nodes and elements within its domain, in addition to data of ‘shared’ elements (those with at least one node belonging to the subdomain). On the basis of this information, each core is able to get local nodal vectors resulting from the computation of the right hand side of Eqs. (7)–(10), (13) and (14). Hence, solutions of aforementioned equations are calculated employing a Preconditioned Conjugate Gradient (PCG), which also allows for MPI parallelization as the coefficient matrix does not have to be assembled.

There are some modules of the code that use data from the whole mesh. For example, the sediment fluxes computation (Eq. (4)) requires the recovering of the velocity field from the fluid dynamics solution and involves a search of elements surrounding each node of the fluid-solid interface (see details in Ref.  [14]). Other examples are steps 2 and 3 of the mesh adaptation algorithm (Sect. 2.2.2), whose implementation is more efficient by using shared memory parallelism. As mentioned before, parallelization in these modules is performed with OpenMP. In some tests carried out on an Intel Core i9-12900K, we found that the MPI parallelization accelerated the execution up to 3 times respect to the same code but entirely parallelized with OpenMP.

3 Results

3.1 Evolution of trenches

In this section we examine the evolution of different trenches due to the effect of a water flow and of the wind. In the first simulation we assess the performance of the numerical model when a non-erodible stratum is present within the domain. For this purpose we reproduce one of the experiments reported by Struiksma  [25]. It was performed in a straight channel with 11.5 m length, 0.2 m width, and a vertical side rigid wall of 0.5 m. Initial configuration of the test is depicted in Fig. 8. As can be seen, the flume is partially filled with a non-erodible layer forming an obstacle (blue line in Fig. 8) and, above it, there is an erodible bedform of sand with \(d=0.6\) mm. Moreover, a trench with 0.04 m depth and 2 m length is dug in the erodible layer (red line in Fig. 8). In the experiment, a water flow of 9.2 l/s is discharged from left to right in Fig. 8, and the free surface is placed at \(z=0.362\) m. The employed two dimensional structured mesh has an average element sizeFootnote 1\(\delta =0.005\) m, and its dimensions are \(17.25\times 0.237\) m. Regarding boundary conditions, no-slip condition is imposed at the bottom, left boundary has a prescribed influx condition and right boundary reproduces a water discharge over a weir to keep a subcritical flow in the flume. In the simulation, we solve the dynamics of a two-phase flow (air and water), where the gas-liquid interface is captured using a conservative level-set method (see formulation in Ref.  [14]). Air has \(\rho _1=1.205\) kg/m\(^3\) and \(\mu _1=1.808\times 10^{-5}\) kg/(ms), while water has \(\rho _2=998\) kg/m\(^3, \mu _2=1.0\times 10^{-3}\) kg/(ms). Sediment flux is computed by using the formula proposed by Struiksma  [25],

$$\begin{aligned} \textbf{q}_s/\rho _s=C_\epsilon \textbf{u}\left\| \textbf{u}\right\| ^4, \end{aligned}$$
(15)

where \(C_\epsilon =0.00049\) s\(^4\)/m\(^3\) and \(\textbf{u}\) is the depth-averaged water velocity. Note that the equation (15) is not universally applicable, as it was tuned in the laboratory specifically for the current experiment; hence, its use should be restricted to this particular setup. Furthermore, fluxes obtained from Eq. (15) are scaled by a factor of 60 to transform 4 min of simulated time into 4 h of real time. Simulations last 255 s and the timestep is \(\varDelta t=0.001\) s. During the first 15 s, sediment transport is deactivated to reach an initial steady-state in hydrodynamics; subsequently, the bedload transport law is activated.

Fig. 8
figure 8

Struiksma’s experiment: initial set-up

Figure 9 shows experimental and numerical results by representing the bottom level at \(t=1\), 2, 3 and 4 h. Results are shown superimposed on the initial bed. Numerics match satisfactory with laboratory results, even when the non-erodible bed becomes uncovered (Fig. 9c, d). The sharp front position and the silting process of the trench are accurately captured at \(t=1\), 2 and 3 h, with \(L_2\)-norm errors \(e(L_2)_{1\text {h}}=6.94\times 10^{-3}\) m, \(e(L_2)_{2\text {h}}=7.41\times 10^{-3}\) m, and \(e(L_2)_{3\text {h}}=9.70\times 10^{-3}\) m. However, the front at \(t=4\) h is not evinced by the lab experiment (Fig. 9d), and the error increases to \(e(L_2)_{4\text {h}}=1.40\times 10^{-2}\) m. Otherwise, position of the bedform downstream the trench is very similar to laboratory outputs for \(t=1\) h and 2 h, and somewhat overpredicted for \(t=3\) h and 4 h. This slight overprediction can be ascribed to deviations in the sediment outflow through the right boundary respect to the laboratory set-up. Despite the fact that the sediment flux law (15) has not a threshold condition for sediment onset of motion, erosion excess is apparent only in a reduced region close to the upper boundary of the non-erodible obstacle. Similar effect can be recognized in Refs.  [18, 25].

Fig. 9
figure 9

Struiksma’s experiment. Black dashed line and blue line are the initial erodible and non-erodible bed profiles, respectively, black solid line indicates numerical results and red dots show laboratory outputs. (Color figure online) [25]

Fig. 10
figure 10

Deep trench evolution

Fig. 11
figure 11

Shallow trench evolution

In the second series of simulations, we study the evolution of two different trenches due to the wind action. The first trench has a depth of 0.05 m, a bottom length of 0.2 m, and a side slope of \(45^{\circ }\); and the second trench has a 0.025 m depth, a bottom length of 0.1 m, and side slope of \(22.5^{\circ }\) (see the solid line in Figs. 10 and 11). In both cases, the employed mesh is structured, with a 1.0 m length, 0.05 m width, and 0.2 m height, and has an average element sizeFootnote 2 of \(\delta =0.0023\) m. Physical parameters of the air are \(\rho _f=1.205\) kg/m\(^3, \mu _f=1.808\times 10^{-5}\),kg/(ms). The air is considered at rest at the initial time. Left boundary of the mesh has inlet conditions, and air enters the domain according to a boundary layer law: \(u(z)=\frac{0.5}{\kappa }\log {\left( \frac{z}{z_0}\right) }\). Regarding the sediment, \(\rho _s=1987.5\) kg/m\(^3, d=2.5\times 10^{-4}\) m, \(z_0=2.5\times 10^{-5}\) m, \(u_{t0}=0.22\) m/s, and \(\alpha =45^{\circ }\). Besides, to accelerate the computation of sediment flux, it is scaled by a time multiplier of 50, assuming the time scale of flow variability much shorter than that for bed evolution. We run the simulation for a total of 8 s with \(\varDelta t=5\times 10^{-5}\) s, which is equivalent to 400 real seconds for the erodible bed. Figure 10 shows the deep trench profile at real times \(t=0\), 100, 200, and 400 s, and Fig. 11 shows the profile for the shallow case at \(t=0\), 25, 100, 200, and 400 s. Additionally, a 3D view of some time steps is shown in Figs. 12 and 13. As can be seen, in both cases the trench moves in the wind direction, i.e. there is sediment deposition on the upwind (left) side and erosion on the downwind (right) side. However, the velocity migration of the deep trench is lower than the shallow case, in line with previous numerical simulations  [20] and experimental observations  [1]. We also notice that erosion on the right side is more intense than deposition on the left side. This fact results in a progressive change of the trench shape leading to partial silting (see trench depth and bottom length evolution in Figs. 10 and 11). Moreover, it is manifest that the left side of the trench starts to migrate just after reaching its critical slope. This is notorious in the shallow case (see Fig. 11), which starts with a side slope lower than the critical. Otherwise, sediment subtracted from the right side forms a secondary pile downwind advancing faster than the downwind side of the trench. This fact is consistent with the classic relation stating that dune velocity is inversely proportional to its height (see e.g. Ref.  [14], Fig. 16). Sediment contribution to this sandpile is determined by downwind slope, affecting air flow and ultimately sediment transport. Then, fluid/sediment dynamics can give rise to two opposed scenarios. If there is no sediment supply upstream the trench (current case), its shape would be similar to an inverted barchan dune and, depending on the depth, it would migrate or disappear with time  [20]. On the other hand, if there exists an unlimited sediment source, the trench will ultimately get silted regardless of its depth.

Fig. 12
figure 12

3D visualization of the deep trench at times \(t=0\), 200 and 400 s

Fig. 13
figure 13

3D visualization of the shallow trench at times \(t=0\), 200 and 400 s

3.2 Scour in a pile

In this section, we examine the local scour around a submerged vertical pile. In particular, we reproduce laboratory test 21 of Ref.  [29]. This test was conducted in a water flume with an erodible bedform composed of sand with \(d=0.40\) mm, \(\rho _m/\rho _f=2.69\), and \(\alpha =35^{\circ }\). A cylindrical structure with a diameter \(D = 0.1\) m was inserted into the sediment in such a manner that the height \(h_c\) not buried by sediment was \(h_c/D=5\). Undisturbed flow velocity profile was measured in the laboratory (see figure 3b of Ref.  [29]), and it correlates with the logarithmic law \(u(z)=\frac{u_*}{\kappa }\ln {\left( \frac{z}{z_0}\right) }\), where \(u_*=0.0483\) m/s and \(z_0=0.0043\) m, resulting in a mean flow velocity of 0.441 m/s. The numerical domain employed in this simulation is a prism of 20D length, 10D width, and 7D height with a cylinder-shaped hole in the middle (see Fig. 14). The domain was discretised by using tetrahedrons with \(\delta =0.076D\) (unstructured). Physical parameters for water are \(\rho _f=1000\) kg/m\(^3, \mu _f=0.001\) kg/ms and, for the sediment, \(u_{t0}=0.0148\) m/s according to data provided in Ref.  [29]. Regarding boundary conditions, a fixed inlet velocity was imposed at the left boundary with a law coinciding with the laboratory setup; outlet condition described in Sect. 2.1 was applied at the right boundary. For the bedform and the cylinder surface, we employ non-slip condition, while a slip condition is used for side boundaries. At the free surface, we also applied slip boundary condition, resembling standard simulations involving scour around structures. The basis of this simplification lies in the independence of the scour depth of the water depth when the ratio of water depth to cylinder diameter is greater than 4 (see [29] and references therein). This assumption is not expected to have an appreciable effect on the numerics. At initial time, the bedform is assumed horizontal and placed at \(z=0\) (see the reference system in Fig. 14). For the computation of sediment fluxes we employ the equation specifically calibrated for water flows proposed by Duran et al.  [6],

$$\begin{aligned} \textbf{q}_s= \frac{5.78\rho _s}{\left( \rho _m/\rho _f-1\right) g} \textbf{u}_{*} \, \textrm{max} \left( 0, {\left\| \textbf{u}_{*} \right\| }^{2}-u_t^{2} \right) , \end{aligned}$$
(16)

which was used in previous works (see e.g.  [14]) giving good results.

The simulation was run with \(\varDelta t=0.005\) s until reaching the scour depth equilibrium. This state is represented in Fig. 15, which shows a pit around the pile and a longitudinal trench downstream. These features arise due to a horseshoe vortex and vortex shedding downstream the pile, that erode the sediment located close to the cylinder surface and its wake. The equilibrium takes place when the pit sides take a slope lower or equal to the critical (see Fig. 15b), and the flow velocity is very low in the pit (see Fig. 15a), resulting in a friction velocity lower than the threshold. Under these conditions, sediment transport ceases, and the scour depth remains constant. Additionally, irregular ripples are observed upstream the pile, consistent with the report of Ref.  [29] for tests with a mean inflow velocity of 0.441 m/s. The resulting bedform is not symmetric with respect to the horizontal axis, particularly downstream the pile, due to the vortex shedding depicted by the streamlines in Fig. 15a. This pattern is also appreciated in laboratory experiments. Figure 15c shows the scour depth around the pile, ranging from 0.91D to 1.22D. While there are slight variations in scour depth upstream and downstream of the pile (\(\theta =180^{\circ }\) and \(\theta =0^{\circ }\), respectively) compared to the laboratory results, the calculated mean scour depth of 1.06D (see the dashed line in Fig. 15c) closely aligns with the reference value of 1.03D reported in Table 1 of Ref.  [29].

Fig. 14
figure 14

Scour in a pile: sketch of the numerical domain

Fig. 15
figure 15

Scour in a pile: numerical results once the equilibrium scour depth is reached

4 Conclusions

The numerical model proposed in this work combines a complete three-dimensional flow solution with an interface tracking algorithm to adapt the mesh to an evolving bedform, governed by a dimension-reduced conservation equation. This method admits beds formed by a combination of cohesionless and non-removable materials, making necessary the implementation of the non-oscillatory finite element method (NFEM) to assure the positivity of the erodible layer thickness. The coupling permits free surface flows simulations and takes advantage of NFEM benefits to shrink instabilities in the hydrodynamics, particularly near interfaces. In contrast with previous works where hydrodynamics was solved by using depth-integrated fluid flow equations, here we achieve a more detailed hydrodynamics solution, in special vertical dynamics and vortexes distribution, allowing computation of a more realistic wall shear stress field as well as erodible layer dynamics.

Numerical simulations explore scenarios connected with relevant engineering problems. In the first series of tests, we study the evolution of trenches under the influence of both a water flow and wind. In the two-dimensional case of a channel with a partially erodible bed, the complex dynamics resulting from the presence of a deep trench and a medium gravel obstacle lead to the exposure of the obstacle and the burial of the trench. This experiment demonstrates the numerical model capability to handle several interfaces (i.e., air/water, water/cohesionless sediment, cohesionless sediment/non-erodible bed, and water/non-erodible bed), with results consistent with laboratory experiments. In the three-dimensional case, we investigate the migration and shape evolution of two trenches in a sandy environment. We observe that migration velocity increases as trench depth decreases, in addition to a partial silting in both tests, particularly noticeable in the shallow case. This pattern aligns with numerical simulations from prior studies and resembles the behavior seen in barchan dunes. In fact, as illustrated in numerical results, the trench adopts a shape similar to an inverted dune, with an upstream side slope steeper than the downstream one. Finally, in the last test, we study the scour around a submerged pile caused by a steady current. The process is governed by the combination of a horseshoe vortex and vortex shedding, which washes the sediment around the pile and in the wake of the cylinder, forming a pit and a trench. The numerical model also yields encouraging results similar to outputs observed in the laboratory, particularly in terms of the mean scour depth around the pile.

Present model assumes the hypothesis of saturated sediment flows, which gives reasonable results for phenomena simulated in this work, as substantiated by numerics. However, the extension of the numerical model to reproduce non-saturated sediment flows is of great interest to study a wider spectrum of physical processes, and will be pursued and reported in future publications.