Skip to content

Commit

Permalink
Dem volume solid objects (#1169)
Browse files Browse the repository at this point in the history
Description
Solid objects are currently only using simplex. This can be problematic since double contacts can occur at the junction of two triangles. This PR aims at introducing solid objects built from volume elements, which could solve this problem. The contact between particle and volume 3D object is not implemented yet. Only in the creation and the displacement.

Testing
A new test has been implemented. (volume_solid_object_displacement.cc)

Documentation
Old simulation parameters have been renamed. The center of rotation was being defined by 3 parameters.

Subsection center of rotation and its three parameters (x, y and z) have been replaced by one parameter named center of rotation using a list of doubles.

A new subsection solid surfaces need to be used when defining solid object in the parameter file.

Co-authored-by: Audrey Collard-Daigneault <71884806+acdaigneault@users.noreply.github.com>
Co-authored-by: Olivier Guévremont <guevremont.o@gmail.com>
Co-authored-by: Bruno Blais <blais.bruno@gmail.com>
  • Loading branch information
4 people authored and cleodeletre committed Jun 19, 2024
1 parent adae996 commit 9469289
Show file tree
Hide file tree
Showing 38 changed files with 789 additions and 485 deletions.
9 changes: 7 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,19 @@
All notable changes to the Lethe project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/).

## [Master] - 2024-06-16

### Changed

- MINOR A new subsection ``solid surfaces`` needs to be used when defining solid objects in the parameter file. For more information, see the solid object documentation. [#1169](https://github.com/chaos-polymtl/lethe/pull/1169)
- MINOR The center of rotation of a solid object is no longer being defined using a subsection and three parameters. It is now defined with one parameter and a list of doubles. For more information, see the solid object documentation. [#1169](https://github.com/chaos-polymtl/lethe/pull/1169)

## [Master] - 2024-06-13

### Added

- MINOR The DEM solver supports deprecated parameters when 3 individual component parameters are changed to a list of values parameter. [#1171](https://github.com/chaos-polymtl/lethe/pull/1171)

## [Master] - 2024-06-13

### Changed

- MINOR The parameters <gx>, <gy> and <gz> of the DEM solver are changed to the parameter <g>. [#1171](https://github.com/chaos-polymtl/lethe/pull/1171)
Expand Down
2 changes: 1 addition & 1 deletion applications_tests/lethe-particles/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ file(COPY sliding_restart_files/sliding_restart.triangulation_variable.data DEST
file(COPY periodic_gmsh_files/pipe.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/insert_periodic_boundary_gmsh.${_build_type}")
file(COPY load_balancing_solid_object_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/load_balancing_solid_object.${_build_type}")
file(COPY insert_file_3d_files/particles.input DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/insert_file_3d.${_build_type}")
file(COPY moving_float_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/moving_float.${_build_type}")
file(COPY moving_solid_surface_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/moving_solid_surface.${_build_type}")
file(COPY insert_and_remove_with_files_files/particles_00.input DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/insert_and_remove_with_files.${_build_type}")
file(COPY insert_and_remove_with_files_files/particles_01.input DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/insert_and_remove_with_files.${_build_type}")

Expand Down
41 changes: 18 additions & 23 deletions applications_tests/lethe-particles/load_balancing_solid_object.prm
Original file line number Diff line number Diff line change
Expand Up @@ -96,29 +96,24 @@ end
#---------------------------------------------------

subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = ../square.msh
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = 0 ; if(t>0.5,if(t<0.7,1,0),0) ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
end

subsection center of rotation
# X COR
set x = 0.1
# Y COR
set y = 0
# Z COR
set z = 0.05
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = ../square.msh
set simplex = true
set initial refinement = 0
end # mesh

subsection translational velocity
set Function expression = 0 ; if(t>0.5,if(t<0.7,1,0),0) ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
end

set center of rotation = 0.1, 0., 0.05
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -106,20 +106,22 @@ end
#---------------------------------------------------

subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = ../square.msh
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = -0.1 ; 0 ; 0 # if(t>0.5,if(t<0.7,1,0),0) ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = ../square.msh
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = -0.1 ; 0 ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
end
end
end
end
32 changes: 17 additions & 15 deletions applications_tests/lethe-particles/restart_moving_receptacle.prm
Original file line number Diff line number Diff line change
Expand Up @@ -105,20 +105,22 @@ end
#---------------------------------------------------

subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = square.msh
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = if(t>0.4,if(t<0.6,0.1,0),0) ; 0 ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = square.msh
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = if(t>0.4,if(t<0.6,0.1,0),0) ; 0 ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
end
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -91,18 +91,19 @@ end
#---------------------------------------------------

subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = dealii
set file name = hyper_cube
set grid arguments = 0 : 0.04 : false
set simplex = true
set initial refinement = 0
end

subsection translational velocity
set Function expression = 0 ; 0 ; 0.02
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = dealii
set file name = hyper_cube
set grid arguments = 0 : 0.04 : false
set simplex = true
set initial refinement = 0
end
subsection translational velocity
set Function expression = 0 ; 0 ; 0.02
end
end
end
end
32 changes: 17 additions & 15 deletions doc/source/examples/dem/bunny-drill/bunny-drill.rst
Original file line number Diff line number Diff line change
Expand Up @@ -138,21 +138,23 @@ The bunny is defined using the solid objects feature of Lethe. The surface mesh
.. code-block:: text
subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = bunny-low-poly.msh
set simplex = true
set initial rotation axis = 0, 1, 0
set initial rotation angle = 1.5708 # pi/2
set initial translation = 0.05, 0, 0.035
end
subsection translational velocity
set Function expression = if (t>2,-0.27*sin(0.8*3.1416*(t-2)),0) ; 0 ; 0
end
subsection angular velocity
set Function expression = if (t>2,31.42,0) ; 0 ; 0
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = bunny-low-poly.msh
set simplex = true
set initial rotation axis = 0, 1, 0
set initial rotation angle = 1.5708 # pi/2
set initial translation = 0.05, 0, 0.035
end
subsection translational velocity
set Function expression = if (t>2,-0.27*sin(0.8*3.1416*(t-2)),0) ; 0 ; 0
end
subsection angular velocity
set Function expression = if (t>2,31.42,0) ; 0 ; 0
end
end
end
end
Expand Down
28 changes: 15 additions & 13 deletions doc/source/examples/dem/granular-dam-break/granular-dam-break.rst
Original file line number Diff line number Diff line change
Expand Up @@ -130,20 +130,22 @@ The sluice gate which prevents the particle from floating is made of a 3D surfac
.. code-block:: text
subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = square.msh
set simplex = true
set initial refinement = 0
end
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = square.msh
set simplex = true
set initial refinement = 0
end
subsection translational velocity
set Function expression = 0 ; if(t>0.5,if(t<0.7,1,0),0) ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
subsection translational velocity
set Function expression = 0 ; if(t>0.5,if(t<0.7,1,0),0) ; 0
end
subsection angular velocity
set Function expression = 0 ; 0 ; 0
end
end
end
end
Expand Down
38 changes: 16 additions & 22 deletions doc/source/examples/dem/granular-mixer/granular-mixer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,29 +92,23 @@ In this subsection, the floating meshes are defined. We can use dealii or gmsh t
.. code-block:: text
subsection solid objects
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = pitched-blade-impeller.msh
set simplex = true
set initial refinement = 0
end
subsection translational velocity
set Function expression = 0 ; 0 ; 0
end
subsection angular velocity
set Function expression = if(t>0.5,6,0) ; 0 ; 0
end
subsection solid surfaces
set number of solids = 1
subsection solid object 0
subsection mesh
set type = gmsh
set file name = pitched-blade-impeller.msh
set simplex = true
set initial refinement = 0
end
subsection center of rotation
# X COR
set x = 0
# Y COR
set y = 0
# Z COR
set z = 0
subsection translational velocity
set Function expression = 0 ; 0 ; 0
end
subsection angular velocity
set Function expression = if(t>0.5,6,0) ; 0 ; 0
end
set center of rotation = 0, 0, 0
end
end
end
Expand Down
10 changes: 8 additions & 2 deletions doc/source/parameters/dem/dem.rst
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
***********************************************
Discrete Element Method (DEM)
***********************************************
The discrete element method (DEM) solver in Lethe is called ``lethe-particles`` and supports two-dimensional and three-dimensional simulations. In ``simulation_control``, the general simulation parameters (for example, time-step, end time, etc.) are defined. ``timer`` and ``test`` sections are used for timing the classes and functions, and testing the reproducibility of the results. In ``model_parameters``, we define the simulation models, including particle-particle and particle-wall contact models. ``lagrangian_physical_properties`` defines the physical properties of the particles and walls. Insertion information including the dimensions of the insertion box and insertion frequency is defined in the ``insertion_info`` section. In the ``floating_walls`` section, we can add flat walls to the simulation domain. ``mesh`` section defines the simulation triangulation and refinements. In the ``boundary_conditions`` section, we can define boundaries as outlets, or rotate or slide them.
The discrete element method (DEM) solver in Lethe is called ``lethe-particles`` and supports two-dimensional and three-dimensional simulations. In ``simulation_control``, the general simulation parameters (for example, time-step, end time, etc.) are defined. ``timer`` and ``test`` sections are used for timing the classes and functions, and testing the reproducibility of the results.
In ``model parameters``, we define the simulation models, including particle-particle and particle-wall contact models. ``lagrangian physical properties`` defines the physical properties of the particles and walls.
Insertion information including the dimensions of the insertion box, insertion frequency, etc. are defined in the ``insertion info`` section.
The``mesh`` section defines the simulation triangulation and refinements.
In the ``DEM boundary conditions`` section, boundaries can be defined as outlets or they can get periodicity, rotation or translation.
In the ``floating walls`` section, hyperplanes can be added to the simulation domain.
In the ``solid objects`` section, surface meshes can defined and their motion can be controlled.

.. toctree::
:maxdepth: 1

boundary_conditions
floating_mesh
floating_wall
insertion_info
lagrangian_physical_properties
mesh
model_parameters
post-processing
simulation_control
solid_objects
test
timer
Loading

0 comments on commit 9469289

Please sign in to comment.