will bedload sediments go into suspension load?
when use "reentrainment " (the boundary condition sediment ).
will the bedload part (decrease in bedloadVolumeFr
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Fluidity Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Samuel Parkinson
- Solved:
- Last query:
- Last reply:
Revision history for this message
|
#1 |
Hello Liu,
Yes, eroded sediment will go back into suspension. The "reentrainment" boundary is implemented as a Neumann condition, or flux of sediment, which varies depending upon the bed shear stress and properties of the sediment in the bed that is being eroded.
Cheers,
Sam
Revision history for this message
|
#2 |
Thanks Samuel Parkinson, that solved my question.
Revision history for this message
|
#3 |
In the 2D domain of model, X was set from 0 to 4, and Y was set from 0 to 0.5.
Then we set some suspended sediments in the initial condition.
As time passed, the sediment settled to the bottom, and the thickness of bedload became thicker.
As suspended sediments settled totally to the bottom, the both side boundaries were given vertical average velocity = 0.1 m s-1. in X dirction.then the thickness of bedload drcrease close to zero, but suspended sediments don't increase.
the case seems eroded sediment doesn't go back to suspension again.
Would you please give me some comments?
Thank you very much.
Revision history for this message
|
#4 |
Hi Liu,
Can you provide a copy of your flml file? This is quite hard for me to answer without having a full understanding of your model set up.
Kind regards,
Sam
Revision history for this message
|
#5 |
Sir, I've posted the setup in flml file below.
I'm totally a newbie, your help and patience is very much appreciated.
-------
<?xml version='1.0' encoding='utf-8'?>
<fluidity_options>
<simulation_name>
<string_value lines="
<comment>2D lock exchange</comment>
</simulation_
<problem_type>
<string_value lines="
</problem_type>
<geometry>
<dimension>
<
</dimension>
<mesh name="Coordinat
<from_file file_name=
<format name="triangle"/>
<stat>
</stat>
</from_file>
</mesh>
<mesh name="VelocityM
<from_mesh>
<mesh name="Coordinat
<stat>
</stat>
</from_mesh>
</mesh>
<mesh name="PressureM
<from_mesh>
<mesh name="Coordinat
<stat>
</stat>
</from_mesh>
</mesh>
<quadrature>
<degree>
</degree>
<
<
</quadrature>
</geometry>
<io>
<dump_format>
<
</dump_format>
<dump_period>
<constant>
<real_value rank="0"
</constant>
</dump_period>
<output_mesh name="VelocityM
<stat>
<
</stat>
</io>
<timestepping>
<current_time>
<real_value rank="0"
</current_time>
<timestep>
<real_value rank="0"
</timestep>
<finish_time>
<real_value rank="0"
<
</finish_time>
<nonlinear_
<
</nonlinear
</timestepping>
<physical_
<gravity>
<magnitude>
<real_value rank="0"
</magnitude>
<vector_field name="GravityDi
<mesh name="Coordinat
<value name="WholeMesh">
</value>
<output/>
<stat>
</stat>
<
</gravity>
</physical_
<material_phase name="fluid">
<equation_
<fluids>
<linear>
</linear>
</fluids>
</equation_
<scalar_field name="Pressure" rank="0">
<prognostic>
<mesh name="PressureM
<scheme>
</scheme>
<solver>
</solver>
<output/>
<stat>
</stat>
<detectors>
</prognostic>
</scalar_field>
<scalar_field name="Density" rank="0">
<diagnostic>
<algorithm name="Internal" material_
<mesh name="VelocityM
<output/>
<stat/>
<detectors>
</diagnostic>
</scalar_field>
<vector_field name="Velocity" rank="1">
<prognostic>
<mesh name="VelocityM
<equation name="Boussinesq"/>
<theta>
</theta>
<solver>
</solver>
<type name="dirichlet">
</type>
<type name="dirichlet">
if(t<10):
return 0.025*(t-0)/10
else:
return 0.025</
# return 0.2*(t-
</type>
<type name="dirichlet">
</type>
<output/>
<stat>
</stat>
<detectors>
# exponential function of form p = Ae^(aq) + B,
# with q = q_1, p=p_1 and q = q_2, p=p_2
# giving p = p_1 + Aexp{aq_
# with A = (p_2-p_
# so p = p_1 + (p_2-p_
# let C = (p_2-p_
import math
a = 100.0
q_1 = 0.0
p_1 = 0.00001
q_2 = 0.05
p_2 = 0.001
if(X[
C = (p_2 - p_1)/((
q = X[1]
p = p_1 + C*((math.exp(a*(q - q_1)))-1)
u_val = p
else:
C = (p_2 - p_1)/((
q = 0.1-X[1]
p = p_1 + C*((math.exp(a*(q - q_1)))-1)
u_val = p
return [u_val,
</prognostic>
</vector_field>
<vector_field name="BedShearS
<diagnostic>
<algorithm name="Internal" material_
<mesh name="VelocityM
<density>
</density>
<output/>
<stat>
</stat>
<detectors>
</diagnostic>
</vector_field>
<sediment>
<scalar_field name="qqq" rank="0">
<mesh name="VelocityM
<equation name="Advection
<theta>
<solver>
</solver>
<type name="sediment_
</type>
<type name="zero_flux"/>
<type name="zero_flux"/>
<output/>
<stat/>
if(X[1]<0.025):
return 0.001
else:
return 0.0</string_value>
<
<scalar_field name="SedimentB
<mesh name="VelocityM
<output/>
<stat/>
<
<scalar_field name="SedimentB
<mesh name="VelocityM
<output/>
<stat/>
<
</sediment>
</material_phase>
</fluidity_options>
Revision history for this message
|
#6 |
Hi Liu,
You have no diffusivity in your sediment field. Reentrainment is set by using a Neumann bc. Without any diffusivity Neumann boundary conditions do not work, however the bedload field does not know this.
In the code the following procedure occurs:
1) a reentrainment rate is determined
2) the reentrainment boundary condition is set
3) the bed depth is modified
with no diffusivity the bed depth is still modified (3) but reentrainment (2) doesn't work and hence the sediment is lost. This is a bug. There should be a check to ensure that there is a non-zero diffusivity before reducing the sediment bed depth.
This is not a straight forward problem and is something I am looking at in detail at the moment. Literature states that diffusion of sediment is negligible for most grain sizes, which leads to the idea that there should be zero diffusion - hence no reentrainment. Additionally, if we think about what the boundary condition means physically we realise that reentrainment happens due to turbulence in the boundary layer generated by fluid flow over a rough bed surface (which we are not modelling).
My current view is that we need a turbulence model that includes some parameterisation of a boundary layer over a rough surface. I believe that such a turbulence model would provide some diffusion of sediment near the boundary. This type of turbulence model does not currently exist in Fluidity and so is not an option. I plan to start looking at developing this capability over the coming months.
Another option is to include a small diffusion of the sediment field throughout the domain that is lower than the numerical diffusion in your problem (i.e. 1e-10). The rate of sediment entrainment will be correct but I have found that near bed concentrations of sediment can become unbounded leading to instabilities. It is also dubious whether this approach will provide physically realistic results.
For my current work I have actually removed sediment reentrainment due to these issues and would recommend you think about whether you really need this capability and consider not using it. I am very interested to know the problem you are trying to tackle and any views you have on this.
A very long and complicated answer. Sorry about this, I am still learning how to apply this properly myself. Let me know anything that you don't understand.
Cheers,
Sam
Revision history for this message
|
#7 |
Sir,
It works as the diffusion option is opened.
I'd try to simulate an internal wave passing through a slope in a tank, and see if small sand waves will be formed.(Maybe resuspension of sediments will settle down in other area and won't take a large affection in original erosion area.)
Appreciate your comments very much.
Regards,
ChinChi
Revision history for this message
|
#8 |
Thanks Samuel Parkinson, that solved my question.