tSome triaxial bugfixes - sphere - GPU-based 3D discrete element method algorit… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 49ebae25c8c553bd2e18b70e8d2f97fc35a5fead | |
parent 7e87969a61a5a8ce5f636d5d777a33e6cefed427 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Thu, 22 Aug 2013 09:34:52 +0200 | |
Some triaxial bugfixes | |
Diffstat: | |
M python/sphere.py | 40 ++++++++++++++++++++---------… | |
M python/triaxial.py | 4 +--- | |
2 files changed, 27 insertions(+), 17 deletions(-) | |
--- | |
diff --git a/python/sphere.py b/python/sphere.py | |
t@@ -891,7 +891,21 @@ class Spherebin: | |
'Included for legacy purposes, calls adjustWall with idx=0' | |
self.adjustWall(idx=0, adjust = z_adjust) | |
- def adjustWall(self, idx, adjust): | |
+ # Initialize upper wall | |
+ self.nw = numpy.ones(1) | |
+ self.wmode = numpy.zeros(1) # fixed BC | |
+ self.w_n = numpy.zeros(self.nw*self.nd, dtype=numpy.float64).reshape(s… | |
+ self.w_n[0,2] = -1.0 | |
+ if (idx == 0 or idx == 1 or idx == 3): | |
+ self.w_x = numpy.array([xmax]) | |
+ else: | |
+ self.w_x = numpy.array([xmin]) | |
+ self.w_m = numpy.array([self.rho[0] * self.np * math.pi * (cellsize/2.… | |
+ self.w_vel = numpy.zeros(1) | |
+ self.w_force = numpy.zeros(1) | |
+ self.w_devs = numpy.zeros(1) | |
+ | |
+ def adjustWall(self, idx, adjust = 1.1): | |
'Adjust grid and dynamic wall to max. particle position' | |
if (idx == 0): | |
t@@ -912,18 +926,11 @@ class Spherebin: | |
self.L[dim] = (xmax-xmin)*adjust + xmin | |
# Initialize upper wall | |
- self.nw = numpy.ones(1) | |
- self.wmode = numpy.zeros(1) # fixed BC | |
- self.w_n = numpy.zeros(self.nw*self.nd, dtype=numpy.float64).reshape(s… | |
- self.w_n[0,2] = -1.0 | |
if (idx == 0 or idx == 1 or idx == 3): | |
- self.w_x = numpy.array([xmax]) | |
+ self.w_x[idx] = numpy.array([xmax]) | |
else: | |
- self.w_x = numpy.array([xmin]) | |
- self.w_m = numpy.array([self.rho[0] * self.np * math.pi * (cellsize/2.… | |
- self.w_vel = numpy.zeros(1) | |
- self.w_force = numpy.zeros(1) | |
- self.w_devs = numpy.zeros(1) | |
+ self.w_x[idx] = numpy.array([xmin]) | |
+ self.w_m[idx] = numpy.array([self.rho[0] * self.np * math.pi * (cellsi… | |
def consolidate(self, deviatoric_stress = 10e3, | |
t@@ -967,12 +974,17 @@ class Spherebin: | |
# Initialize walls | |
self.nw[0] = 5 # five dynamic walls | |
- for i in range(5): | |
- self.adjustWall(i) | |
- self.w_m[:] = numpy.array([self.rho[0] * self.np * math.pi * (cellsize… | |
self.wmode = numpy.array([2,1,1,1,1]) # define BCs (vel, stress, stre… | |
self.w_vel = numpy.array([1,0,0,0,0]) * wvel | |
self.w_devs = numpy.array([0,1,1,1,1]) * deviatoric_stress | |
+ self.w_n = numpy.array(([0,0,-1], [-1,0,0], [1,0,0], [0,-1,0], [0,1,0]… | |
+ dtype=numpy.float64) | |
+ self.w_x = numpy.zeros(5) | |
+ self.w_m = numpy.zeros(5) | |
+ self.w_force = numpy.zeros(5) | |
+ for i in range(5): | |
+ self.adjustWall(idx=i) | |
+ | |
def shear(self, | |
diff --git a/python/triaxial.py b/python/triaxial.py | |
t@@ -4,7 +4,7 @@ | |
from sphere import * | |
### EXPERIMENT SETUP ### | |
-initialization = True | |
+initialization = False | |
consolidation = True | |
rendering = True | |
plots = True | |
t@@ -69,8 +69,6 @@ cons.initTemporal(total = 5.0) | |
cons.w_m[:] *= 0.001 | |
- | |
- | |
if (consolidation == True): | |
# Write input file for sphere | |
cons.writebin() |