Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update/dem #215

Merged
merged 68 commits into from
Jun 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
02d5078
modifying overlap initialization
jmpearl Apr 2, 2023
2d6af9a
exposing overlap initializer to python
jmpearl Apr 2, 2023
7f1598e
move overlap initialization to initializeOnStartUp method
jmpearl Apr 2, 2023
a979b35
checkout point
jmpearl Apr 3, 2023
3e1c398
adding method to enable on-the-fly particle generation
jmpearl Apr 5, 2023
cfa79eb
script to implement and test on-the-fly composite-particle generation
jmpearl Apr 5, 2023
283994f
revamping H treatment
jmpearl Apr 5, 2023
e8ec093
syntax error
jmpearl Apr 5, 2023
977f863
exposing DEM's initializeHfield
jmpearl Apr 5, 2023
b68bb36
updating particleGen test for new H initialization
jmpearl Apr 5, 2023
da1ce8d
LinearSpringDEM class deserves its own name
jmpearl Apr 5, 2023
d023c58
controller modified so DEM users don't have to instantiate a kernel
jmpearl Apr 5, 2023
7f00ed8
stowing
jmpearl Apr 5, 2023
54e0cf7
checkpoint on a bug hunt
jmpearl Apr 5, 2023
2c5167f
maybe there's not a bug?
jmpearl Apr 5, 2023
6538298
moving fields and H initialization to nodelist
jmpearl Apr 6, 2023
24f92fc
moving fields and H initialization to NodeList
jmpearl Apr 6, 2023
3c71256
check point adding contact boundaries to DEM
jmpearl Apr 10, 2023
d268f14
Merge branch 'develop' into update/DEM
jmpearl Apr 12, 2023
51642f1
adding SolidBoundaries to DEM
jmpearl Apr 21, 2023
720702a
which to the make_shared policy format
jmpearl Apr 21, 2023
454f45a
SolidBC now in DEMBase and ref'ed by update policy
jmpearl Apr 22, 2023
cf308fd
simplifying a largely redundent method in DEM
jmpearl Apr 22, 2023
e1fa2bb
first pass adding solid bcs to contact pipeline
jmpearl Apr 22, 2023
8b52983
Merge branch 'develop' into update/DEM
jmpearl Apr 22, 2023
3fcbe32
DEM python exposure for solid boundaries
jmpearl Apr 23, 2023
d570cda
edits to comments
jmpearl Apr 23, 2023
637d9c7
more comments
jmpearl Apr 23, 2023
d396fed
simplifying eval derivs DEM LinearSpring model
jmpearl Apr 23, 2023
9be6cb0
DEMBase renaming contact counts and switch to unsigned int
jmpearl Apr 23, 2023
2fada74
DEM: particle-solid bc interactions added to eval derivs and moment o…
jmpearl Apr 24, 2023
52d04db
updating grav model in DEM drop test
jmpearl Apr 24, 2023
4ced726
new test for particle - solid bc interactions
jmpearl Apr 24, 2023
16acdd6
reorganizing DEM functional tests
jmpearl Apr 24, 2023
189fb42
DEM : python exposures for recent changes
jmpearl Apr 24, 2023
1432ca9
updating DEM's ContactIndex for legible handling of solidbcs
jmpearl Apr 24, 2023
b491e89
DEM missed this removing prepend option
jmpearl Apr 24, 2023
bbdada4
adding fast timestepping w/ solid bc
jmpearl May 4, 2023
59425ee
test of planar solid boundary
jmpearl May 5, 2023
14fbe91
aesthetic changes
jmpearl May 5, 2023
a6dbf90
finite planar solld boundaries
jmpearl May 7, 2023
6b07ab7
pybind for finite planar bcs
jmpearl May 7, 2023
664c194
updating ats tests
jmpearl May 8, 2023
1d47d7f
fix for unique id initialization
jmpearl May 8, 2023
d677897
updating 5 particle collision test for new uniqueIndex base-1
jmpearl May 8, 2023
48f8d48
fixed omp threading bug
jmpearl May 8, 2023
45f554e
updating DEM node generation
jmpearl May 11, 2023
2fabeb8
ats tests for finite solid planes
jmpearl May 11, 2023
16fc6df
bug fix DEM rectangularFinitePlane
jmpearl May 11, 2023
16abfa6
implement velocity in DEM solid boundary
jmpearl May 11, 2023
04150a5
adding cylinder solid boundary to DEM
jmpearl May 18, 2023
6c64b0b
fixing merge conficts
jmpearl May 18, 2023
7a7b9be
fixing cylinder implementation and python3 merge
jmpearl May 21, 2023
e39ae74
renaming solidbcs
jmpearl May 21, 2023
581f5da
spherical bc for DEM
jmpearl May 22, 2023
83dcaa0
Merge branch 'develop' into update/DEM
jmpearl Jun 2, 2023
6786331
test ats issue
jmpearl Jun 7, 2023
25b95bb
DEM: update 5-particle test to py3
jmpearl Jun 7, 2023
04052f5
DEM solid bc tests updated
jmpearl Jun 7, 2023
7bed4b2
DEM cleans test set
jmpearl Jun 7, 2023
624b28a
DEM ats typo
jmpearl Jun 7, 2023
710a71a
DEM more info from check
jmpearl Jun 7, 2023
eb764db
DEM thread safety fix and fix for ats
jmpearl Jun 8, 2023
1995d7c
adding DEM to release
jmpearl Jun 9, 2023
3e62e37
clearing out empty files
jmpearl Jun 14, 2023
af44cad
reverting to the old cmake files
jmpearl Jun 15, 2023
355fc88
DEM verbose description for SolidBoundaries in header
jmpearl Jun 16, 2023
14adc57
Merge branch 'develop' into update/DEM
jmpearl Jun 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ Notable changes include:
* Bug Fixes / improvements:
* Fixed numerous compiler warnings with newer compilers such as G++ 9.4.
* r-path for additional TPLs can be propogated to Spheral libraries with `SPHERAL_ADDITIONAL_RPATHS`.

* The DEM package has received a significant updated.
* Added simple analytic solid boundaries (planes,cylinder,sphere).
* User given more control over DEM fast time stepping.
* Simplified initialization and improved robustness.

Version v2023.03.0 -- Release date 2023-03-29
==============================================

Expand Down
22 changes: 20 additions & 2 deletions src/DEM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@ include_directories(.)

set(DEM_inst
DEMBase
SolidBoundary/SolidBoundaryBase
SolidBoundary/DEMBoundaryPolicy
SolidBoundary/InfinitePlaneSolidBoundary
SolidBoundary/CircularPlaneSolidBoundary
SolidBoundary/RectangularPlaneSolidBoundary
SolidBoundary/CylinderSolidBoundary
SolidBoundary/SphereSolidBoundary
ReplacePairFieldList
IncrementPairFieldList
ReplaceAndIncrementPairFieldList
Expand All @@ -14,15 +21,26 @@ set(DEM_sources

instantiate(DEM_inst DEM_sources)

set(DEM_headers
set(DEM_headers
SolidBoundary/SolidBoundaryBase.hh
SolidBoundary/DEMBoundaryPolicy.hh
SolidBoundary/InfinitePlaneSolidBoundary.hh
SolidBoundary/CircularPlaneSolidBoundary.hh
SolidBoundary/RectangularPlaneSolidBoundary.hh
SolidBoundary/CylinderSolidBoundary.hh
SolidBoundary/SphereSolidBoundary.hh
ReplacePairFieldList.hh
ReplaceAndIncrementPairFieldList.hh
IncrementPairFieldList.hh
LinearSpringDEM.hh
DEMBase.hh
DEMDimension.hh
DEMFieldNames.hh
ContactStorageLocation.hh)
ContactStorageLocation.hh
setUniqueNodeIDs.hh
setUniqueNodeIDsInline.hh)

add_subdirectory(SolidBoundary)
mdavis36 marked this conversation as resolved.
Show resolved Hide resolved

spheral_install_python_files(DEM.py)

Expand Down
40 changes: 33 additions & 7 deletions src/DEM/ContactStorageLocation.cc
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
#include <vector>
//---------------------------------Spheral++----------------------------------//
// ContactIndex -- Simple structure used to track where pairwise variables
// are stored in the pairFieldLists. A -1 indicates an invalid
// entry. The contact index has two configurations. The first
// is for particle-particle contacts, for which store* and
// pair* properties are used. The second is for particle-
// solid boundary interactions and there store* and
// solidBoundary are used. In both case, unused properties are
// flagged as invalid (-1).
//
// J.M. Pearl 2022
//----------------------------------------------------------------------------//

#include "DEM/ContactStorageLocation.hh"

namespace Spheral {

ContactIndex::ContactIndex():
storeNodeList(0),
storeNode(0),
storeContact(0),
pairNodeList(0),
pairNode(0){
storeNodeList(-1),
storeNode(-1),
storeContact(-1),
pairNodeList(-1),
pairNode(-1),
solidBoundary(-1){
}

ContactIndex::ContactIndex(const int storeNodeListIndex,
Expand All @@ -21,8 +33,22 @@ ContactIndex::ContactIndex(const int storeNodeListIndex,
storeNode(storeNodeIndex),
storeContact(storeContactIndex),
pairNodeList(pairNodeListIndex),
pairNode(pairNodeIndex){
pairNode(pairNodeIndex),
solidBoundary(-1){
}

ContactIndex::ContactIndex(const int storeNodeListIndex,
const int storeNodeIndex,
const int storeContactIndex,
const int solidBoundaryIndex):
storeNodeList(storeNodeListIndex),
storeNode(storeNodeIndex),
storeContact(storeContactIndex),
pairNodeList(-1),
pairNode(-1),
solidBoundary(solidBoundaryIndex){
}



}
23 changes: 17 additions & 6 deletions src/DEM/ContactStorageLocation.hh
Original file line number Diff line number Diff line change
@@ -1,29 +1,41 @@


//---------------------------------Spheral++----------------------------------//
// DEM type alias for the particle rotation
// ContactIndex -- Simple structure used to track where pairwise variables
// are stored in the pairFieldLists. A -1 indicates an invalid
// entry. The contact index has two configurations. The first
// is for particle-particle contacts, for which store* and
// pair* properties are used. The second is for particle-
// solid boundary interactions and there store* and
// solidBoundary are used. In both case, unused properties are
// flagged as invalid (-1).
//
// J.M. Pearl 2022
//----------------------------------------------------------------------------//
#ifndef __Spheral_ContactStorageLocation_hh__
#define __Spheral_ContactStorageLocation_hh__

namespace Spheral{

struct ContactIndex {
ContactIndex();
ContactIndex(const int storeNodeListIndex,
const int storeNodeIndex,
const int storeContactIndex,
const int pairNodeListIndex,
const int pairNodeIndex);
ContactIndex(const int storeNodeListIndex,
const int storeNodeIndex,
const int storeContactIndex,
const int solidBoundaryIndex);

int storeNodeList;
int storeNode;
int storeContact;

int pairNodeList;
int pairNode;
};

int solidBoundary;
};
}

#else

Expand All @@ -33,4 +45,3 @@ namespace Spheral {
}

#endif
}
11 changes: 11 additions & 0 deletions src/DEM/DEM.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@ def LinearSpringDEM(dataBase,

assert dataBase.numDEMNodeLists == dataBase.numNodeLists, "all nodelists must be dem nodelists"
assert stepsPerCollision > 1, "stepsPerCollision too low, reccomended is 25-50"
assert cohesiveTensileStrength >= 0, "cohesiveTensileStrength must be positive"
assert normalSpringConstant >= 0, "normalSpringConstant must be positive"
assert normalRestitutionCoefficient >= 0 and normalRestitutionCoefficient <= 1, "normalSpringConstant must be between 1 and 0"
assert tangentialSpringConstant >= 0, "normalSpringConstant must be positive"
assert tangentialRestitutionCoefficient >= 0 and tangentialRestitutionCoefficient <= 1, "normalSpringConstant must be between 1 and 0"
assert dynamicFrictionCoefficient >= 0, "dynamicFrictionCoefficient must be positive"
assert dynamicFrictionCoefficient >= 0, "dynamicFrictionCoefficient must be positive"
assert rollingFrictionCoefficient >= 0, "rollingFrictionCoefficient must be positive"
assert torsionalFrictionCoefficient >= 0, "torsionalFrictionCoefficient must be positive"

#if (stepsPerCollision < 10) print("WARNING: stepsPerCollision is very low, reccomended is 25-50")

# we might want to allow the user to set less parameters with reasonable defaults
#if tangentialSpringConstant is None:
Expand Down
Loading