Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdded bond breaking - sphere - GPU-based 3D discrete element method algorithm …
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit ecfc70812628f9ac56ab817087ad15778ac88c88
parent 3b2d08a037d933e278e3c0caf736feb8f1e54b9b
Author: Anders Damsgaard <[email protected]>
Date: Tue, 12 Mar 2013 21:12:46 +0100
Added bond breaking
Diffstat:
M src/cohesion.cuh | 20 ++++++++++++++++++++
M src/datatypes.h | 2 ++
M src/file_io.cpp | 4 ++++
3 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/src/cohesion.cuh b/src/cohesion.cuh
t@@ -191,6 +191,26 @@ __global__ void bondsLinear(
//const Float3 t_i = t_n - t_t; //t_n - t_t;
//const Float3 t_j = t_n + t_t;
+
+ //// Bond strength (Potyondy & Cundall 2004)
+ // Extensions of Euler-Bernoulli beam bending theory
+ // Max. stresses in bond periphery
+
+ // Tensile stress
+ const Float sigma_max = length(f_n) / A + length(t_t) * R_bar / I;
+
+ // Shear stress
+ const Float tau_max = length(f_t) / A + length(t_n) * R_bar / J;
+
+ // Break bond if tensile and shear stresses exceed strengths
+ if (sigma_max >= devC_params.sigma_b || tau_max >= devC_params.tau_b) {
+ __syncthreads();
+ dev_bonds[idx].x = devC_params.nb0;
+ return;
+ }
+
+
+
//// Save values
__syncthreads();
diff --git a/src/datatypes.h b/src/datatypes.h
t@@ -92,6 +92,8 @@ struct Params {
Float V_b; // Volume of fluid in capillary bond
Float lambda_bar; // Radius multiplier to parallel-bond radii
unsigned int nb0; // Number of inter-particle bonds at t=0
+ Float sigma_b; // Bond tensile strength
+ Float tau_b; // Bond shear strength
};
// Structure containing wall parameters
diff --git a/src/file_io.cpp b/src/file_io.cpp
t@@ -208,6 +208,8 @@ void DEM::readbin(const char *target)
// Read bond parameters
ifs.read(as_bytes(params.lambda_bar), sizeof(params.lambda_bar));
ifs.read(as_bytes(params.nb0), sizeof(params.nb0));
+ ifs.read(as_bytes(params.sigma_b), sizeof(params.sigma_b));
+ ifs.read(as_bytes(params.tau_b), sizeof(params.tau_b));
k.bonds = new uint2[params.nb0];
k.bonds_delta = new Float4[np];
k.bonds_omega = new Float4[np];
t@@ -365,6 +367,8 @@ void DEM::writebin(const char *target)
// Write bond parameters
ofs.write(as_bytes(params.lambda_bar), sizeof(params.lambda_bar));
ofs.write(as_bytes(params.nb0), sizeof(params.nb0));
+ ofs.write(as_bytes(params.sigma_b), sizeof(params.sigma_b));
+ ofs.write(as_bytes(params.tau_b), sizeof(params.tau_b));
for (i = 0; i<params.nb0; ++i) {
ofs.write(as_bytes(k.bonds[i].x), sizeof(unsigned int));
ofs.write(as_bytes(k.bonds[i].y), sizeof(unsigned int));
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.