Skip to content

Commit

Permalink
Add checkpoint to DEM solid objects (chaos-polymtl#959)
Browse files Browse the repository at this point in the history
Description of the problem
The moving solid objects used in DEM simulations were not checkpointed at all. This is not good

Description of the solution
Add the full checkpointing of the solid objects
Add a test to ensure that this works correctly

How Has This Been Tested?
A test has been added to check this feature. It works very well.

Documentation
I don't think anything needs to be documented in particular here?

Co-authored-by: OGaboriault <[email protected]>
Co-authored-by: Victor Oliveira Ferreira <[email protected]>
Co-authored-by: OGaboriault <[email protected]>
Former-commit-id: 9e01f2d
  • Loading branch information
4 people authored Dec 11, 2023
1 parent 1b841b1 commit 49f0934
Show file tree
Hide file tree
Showing 24 changed files with 666 additions and 121 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ 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] - 2023-12-11

### Fixed

- MINOR Solid objects can now be restarted adequately in DEM. They will resume at the position they had at the end of the simulation [#959](https://github.com/lethe-cfd/lethe/pull/959)

## [Master] - 2023-11-27

### Removed
Expand Down
12 changes: 12 additions & 0 deletions applications_tests/lethe-particles/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ file(COPY periodic_gmsh_files/pipe.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/
file(COPY load_balancing_solid_object_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/load_balancing_solid_object.${_build_type}")
file(COPY moving_float_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/moving_float.${_build_type}")

file(COPY moving_receptacle_files/restart.particles DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.pvdhandler DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.simulationcontrol DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.triangulation DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.triangulation.info DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.triangulation_fixed.data DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.triangulation_variable.data DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/square.msh DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.solid_object.00.displacement DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.solid_object.00.dof DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")
file(COPY moving_receptacle_files/restart.solid_object.00.pvdhandler DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/restart_moving_receptacle.${_build_type}")

deal_ii_pickup_tests()

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Listing of Parameters
#----------------------

set dimension = 3

#---------------------------------------------------
# Simulation Control
#---------------------------------------------------

subsection simulation control
set time step = 5e-5
set time end = .7
set log frequency = 500
set output frequency = 0
set output path = ./output/
set output boundaries = false
end

#---------------------------------------------------
# Model parameters
#---------------------------------------------------

subsection model parameters
subsection contact detection
set contact detection method = dynamic
set dynamic contact search size coefficient = 0.9
set neighborhood threshold = 1.3
end
subsection load balancing
set load balance method = none
set frequency = 10000
end
set particle particle contact force method = hertz_mindlin_limit_overlap
set rolling resistance torque method = constant_resistance
set particle wall contact force method = nonlinear
set integration method = velocity_verlet
end

#---------------------------------------------------
# Physical Properties
#---------------------------------------------------

subsection lagrangian physical properties
set gx = 9.81
set gy = 0
set gz = 0.0
set number of particle types = 1
subsection particle type 0
set size distribution type = uniform
set diameter = 0.01
set number of particles = 100
set density particles = 2560
set young modulus particles = 1e6
set poisson ratio particles = 0.2
set restitution coefficient particles = 0.5
set friction coefficient particles = 0.5
set rolling friction particles = 0.3
end
set young modulus wall = 1e6
set poisson ratio wall = 0.2
set restitution coefficient wall = 0.9
set friction coefficient wall = 0.5
set rolling friction wall = 0.3
end

#---------------------------------------------------
# Insertion Info
#---------------------------------------------------

subsection insertion info
set insertion method = volume
set inserted number of particles at each time step = 600
set insertion frequency = 10000
set insertion box minimum x = 0.0025
set insertion box minimum y = 0.0025
set insertion box minimum z = 0.0025
set insertion box maximum x = 0.597
set insertion box maximum y = 0.340
set insertion box maximum z = 0.397
set insertion distance threshold = 1.075
set insertion random number range = 0.025
set insertion random number seed = 19
end

#---------------------------------------------------
# Insertion Info
#---------------------------------------------------

subsection restart
# Checkpointing parameters
set checkpoint = true
set frequency = 14000

# Output/input files
set filename = restart

# Restarting parameter
set restart = false
end


#---------------------------------------------------
# Mesh
#---------------------------------------------------

subsection mesh
set type = dealii
set grid type = subdivided_hyper_rectangle
set grid arguments = 2,1,1 : 0,0,0 : 0.8,0.4,0.4 : false
set initial refinement = 0
end

#---------------------------------------------------
# Solid Objects
#---------------------------------------------------

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
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0 0 100 100 100
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
0
Time File
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Simulation control
dt_0 5e-05
dt_1 5e-05
dt_2 5e-05
dt_3 5e-05
CFL 0
Time 0.7
Iter 14000
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22 serialization::archive 17 0 0 0 0 15 2.00000000000007880e-02 0.00000000000000000e+00 0.00000000000000000e+00 2.00000000000007880e-02 0.00000000000000000e+00 0.00000000000000000e+00 2.00000000000007880e-02 0.00000000000000000e+00 0.00000000000000000e+00 2.00000000000007880e-02 0.00000000000000000e+00 0.00000000000000000e+00 2.00000000000007880e-02 0.00000000000000000e+00 0.00000000000000000e+00
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22 serialization::archive 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 15 0 0 0 0 1 0 0 0 0 15 0 1 15 0 1 0 15 0 0 1 0 1 0 0 15 0 1 15 0 0 0 1 0 0 0 3 15 0 12 13 14 0 1 2 3 4 5 9 10 11 6 7 8 0 0 0 0 1 0 3 6 0 0 3 6 9 12 15 9 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 4 34 FESystem<2,3>[FE_SimplexP<2>(1)^3] 23 Policy::Sequential<2,3>
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
0
Time File
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
version nproc n_attached_fixed_size_objs n_attached_variable_size_objs n_coarse_cells
5 1 0 1 2
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Define a variable

lc = 1;
H=0.5;
W=0.4;
x0=0.6;


Point(0) = {x0, 0, 0, lc};
Point(1) = {x0, 0, W, lc};
Point(2) = {x0, H, W, lc};
Point(3) = {x0, H, 0, lc};

Line(0)={0,1};
Line(1)={1,2};
Line(2)={2,3};
Line(3)={3,0};

Line Loop(1) = {0,1,2,3};

Plane Surface(1) = {1} ;

Physical Surface(0) = {1};

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
$MeshFormat
4.1 0 8
$EndMeshFormat
$Entities
4 4 1 0
0 0.6 0 0 0
1 0.6 0 0.4 0
2 0.6 0.5 0.4 0
3 0.6 0.5 0 0
0 0.6 0 0 0.6 0 0.4 0 2 0 -1
1 0.6 0 0.4 0.6 0.5 0.4 0 2 1 -2
2 0.6 0.5 0 0.6 0.5 0.4 0 2 2 -3
3 0.6 0 0 0.6 0.5 0 0 2 3 0
1 0.6 0 0 0.6 0.5 0.4 1 0 4 0 1 2 3
$EndEntities
$Nodes
5 5 1 5
0 0 0 1
1
0.6 0 0
0 1 0 1
2
0.6 0 0.4
0 2 0 1
3
0.6 0.5 0.4
0 3 0 1
4
0.6 0.5 0
2 1 0 1
5
0.6 0.25 0.2
$EndNodes
$Elements
1 4 1 4
2 1 2 4
1 2 3 5
2 4 1 5
3 1 2 5
4 3 4 5
$EndElements
130 changes: 130 additions & 0 deletions applications_tests/lethe-particles/restart_moving_receptacle.output
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@

*********************
Running on 1 rank(s)
*********************
DEM time-step is 3.69227% of Rayleigh time step
Reading triangulation

Finished reading triangulation
Warning: expansion of particle-wall contact list is disabled.
This feature is useful in geometries with concave boundaries.

*****************************************************************
Transient iteration: 14500 Time: 0.725 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 8.0000e+00 | 2.7586e-01 | 8.0000e+00 |
| Velocity magnitude | 2.0385e-05 | 4.6928e-01 | 1.7556e-02 | 1.7556e+00 |
| Angular velocity magnitude | 1.4224e-03 | 1.3591e+02 | 3.0792e+00 | 3.0792e+02 |
| Translational kinetic energy | 2.7849e-13 | 1.4760e-04 | 2.8498e-06 | 2.8498e-04 |
| Rotational kinetic energy | 2.7121e-14 | 2.4758e-04 | 3.2443e-06 | 3.2443e-04 |

*****************************************************************
Transient iteration: 15000 Time: 0.75 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.0000e+01 | 6.0000e-01 | 1.8000e+01 |
| Velocity magnitude | 3.7519e-06 | 6.7722e-01 | 1.8740e-02 | 1.8740e+00 |
| Angular velocity magnitude | 3.5347e-03 | 1.3591e+02 | 2.9847e+00 | 2.9847e+02 |
| Translational kinetic energy | 9.4344e-15 | 3.0737e-04 | 4.8233e-06 | 4.8233e-04 |
| Rotational kinetic energy | 1.6747e-13 | 2.4758e-04 | 3.2513e-06 | 3.2513e-04 |

*****************************************************************
Transient iteration: 15500 Time: 0.775 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 9.3548e-01 | 2.9000e+01 |
| Velocity magnitude | 3.1242e-06 | 6.0538e-01 | 1.4793e-02 | 1.4793e+00 |
| Angular velocity magnitude | 5.2241e-03 | 4.3128e+01 | 1.6292e+00 | 1.6292e+02 |
| Translational kinetic energy | 6.5418e-15 | 2.4562e-04 | 3.8443e-06 | 3.8443e-04 |
| Rotational kinetic energy | 3.6581e-13 | 2.4932e-05 | 7.0570e-07 | 7.0570e-05 |

*****************************************************************
Transient iteration: 16000 Time: 0.8 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.1875e+00 | 3.8000e+01 |
| Velocity magnitude | 5.1992e-06 | 3.2067e-01 | 8.5319e-03 | 8.5319e-01 |
| Angular velocity magnitude | 2.5888e-03 | 4.0267e+01 | 1.0967e+00 | 1.0967e+02 |
| Translational kinetic energy | 1.8117e-14 | 6.8918e-05 | 1.2100e-06 | 1.2100e-04 |
| Rotational kinetic energy | 8.9831e-14 | 2.1734e-05 | 4.0814e-07 | 4.0814e-05 |

*****************************************************************
Transient iteration: 16500 Time: 0.825 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.3030e+00 | 4.3000e+01 |
| Velocity magnitude | 6.1075e-06 | 2.6943e-01 | 4.7210e-03 | 4.7210e-01 |
| Angular velocity magnitude | 1.3688e-03 | 4.0267e+01 | 6.1168e-01 | 6.1168e+01 |
| Translational kinetic energy | 2.5000e-14 | 4.8653e-05 | 5.6392e-07 | 5.6392e-05 |
| Rotational kinetic energy | 2.5114e-14 | 2.1734e-05 | 2.3115e-07 | 2.3115e-05 |

*****************************************************************
Transient iteration: 17000 Time: 0.85 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.4412e+00 | 4.9000e+01 |
| Velocity magnitude | 2.7954e-06 | 4.5913e-01 | 7.0493e-03 | 7.0493e-01 |
| Angular velocity magnitude | 3.1862e-03 | 4.0267e+01 | 4.9273e-01 | 4.9273e+01 |
| Translational kinetic energy | 5.2373e-15 | 1.4128e-04 | 1.6556e-06 | 1.6556e-04 |
| Rotational kinetic energy | 1.3608e-13 | 2.1734e-05 | 2.1890e-07 | 2.1890e-05 |

*****************************************************************
Transient iteration: 17500 Time: 0.875 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.6000e+00 | 5.6000e+01 |
| Velocity magnitude | 2.0135e-06 | 4.2505e-01 | 5.9059e-03 | 5.9059e-01 |
| Angular velocity magnitude | 1.1980e-03 | 2.8965e+01 | 3.6601e-01 | 3.6601e+01 |
| Translational kinetic energy | 2.7170e-15 | 1.2109e-04 | 1.3096e-06 | 1.3096e-04 |
| Rotational kinetic energy | 1.9237e-14 | 1.1246e-05 | 1.1363e-07 | 1.1363e-05 |

*****************************************************************
Transient iteration: 18000 Time: 0.9 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.6667e+00 | 6.0000e+01 |
| Velocity magnitude | 1.7462e-06 | 1.3054e-01 | 2.4122e-03 | 2.4122e-01 |
| Angular velocity magnitude | 2.9066e-03 | 2.8965e+01 | 3.3427e-01 | 3.3427e+01 |
| Translational kinetic energy | 2.0435e-15 | 1.1421e-05 | 1.8021e-07 | 1.8021e-05 |
| Rotational kinetic energy | 1.1324e-13 | 1.1246e-05 | 1.1249e-07 | 1.1249e-05 |

*****************************************************************
Transient iteration: 18500 Time: 0.925 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.7027e+00 | 6.3000e+01 |
| Velocity magnitude | 9.9271e-08 | 1.6718e-01 | 3.0282e-03 | 3.0282e-01 |
| Angular velocity magnitude | 3.3061e-03 | 4.0013e+00 | 8.4518e-02 | 8.4518e+00 |
| Translational kinetic energy | 6.6047e-18 | 1.8731e-05 | 2.9386e-07 | 2.9386e-05 |
| Rotational kinetic energy | 1.4652e-13 | 2.1460e-07 | 2.1813e-09 | 2.1813e-07 |

*****************************************************************
Transient iteration: 19000 Time: 0.95 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.7368e+00 | 6.6000e+01 |
| Velocity magnitude | 4.0188e-06 | 1.3331e-01 | 2.3277e-03 | 2.3277e-01 |
| Angular velocity magnitude | 2.1452e-03 | 4.0013e+00 | 8.4088e-02 | 8.4088e+00 |
| Translational kinetic energy | 1.0824e-14 | 1.1911e-05 | 1.7588e-07 | 1.7588e-05 |
| Rotational kinetic energy | 6.1685e-14 | 2.1460e-07 | 2.1818e-09 | 2.1818e-07 |

*****************************************************************
Transient iteration: 19500 Time: 0.975 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.7692e+00 | 6.9000e+01 |
| Velocity magnitude | 1.2660e-06 | 1.6892e-01 | 2.3707e-03 | 2.3707e-01 |
| Angular velocity magnitude | 1.1465e-03 | 1.5682e-01 | 4.3282e-02 | 4.3282e+00 |
| Translational kinetic energy | 1.0742e-15 | 1.9124e-05 | 2.1616e-07 | 2.1616e-05 |
| Rotational kinetic energy | 1.7619e-14 | 3.2966e-10 | 3.4652e-11 | 3.4652e-09 |

*****************************************************************
Transient iteration: 20000 Time: 1 Time step: 5e-05
*****************************************************************
| Variable | Min | Max | Average | Total |
| Contact list generation | 0.0000e+00 | 1.1000e+01 | 1.7500e+00 | 7.0000e+01 |
| Velocity magnitude | 2.1238e-06 | 9.7668e-02 | 1.1679e-03 | 1.1679e-01 |
| Angular velocity magnitude | 3.6932e-04 | 7.2734e-01 | 5.3802e-02 | 5.3802e+00 |
| Translational kinetic energy | 3.0231e-15 | 6.3932e-06 | 6.5134e-08 | 6.5134e-06 |
| Rotational kinetic energy | 1.8283e-15 | 7.0911e-09 | 1.1543e-10 | 1.1543e-08 |
Loading

0 comments on commit 49f0934

Please sign in to comment.