tfixed particle zone thickness now determined from local particle radii - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
 (HTM) git clone git://src.adamsgaard.dk/sphere
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit bd456ae010d2426342427ff84fb19d5f2609525e
 (DIR) parent 5c7fadd5c84d9479eddc38558f8c88841ac0d6c3
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Sat, 28 Sep 2013 09:25:26 +0200
       
       fixed particle zone thickness now determined from local particle radii
       
       Diffstat:
         M python/sphere.py                    |      18 ++++++++++++++----
       
       1 file changed, 14 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/python/sphere.py b/python/sphere.py
       t@@ -207,7 +207,8 @@ class Spherebin:
                else:
                    return 1
        
       -    def readbin(self, targetbin, verbose = True, bonds = True, devsmod = True, fluid = True):
       +    def readbin(self, targetbin, verbose = True, bonds = True, devsmod = True,
       +            fluid = True, esysparticle = False):
                'Reads a target SPHERE binary file'
        
                fh = None
       t@@ -262,6 +263,9 @@ class Spherebin:
                    self.angvel = numpy.fromfile(fh, dtype=numpy.float64, count=self.np*self.nd).reshape(self.np, self.nd)
                    self.torque = numpy.fromfile(fh, dtype=numpy.float64, count=self.np*self.nd).reshape(self.np, self.nd)
        
       +            if (esysparticle == True):
       +                return
       +
                    # Per-particle single-value parameters
                    self.es_dot  = numpy.fromfile(fh, dtype=numpy.float64, count=self.np)
                    self.es      = numpy.fromfile(fh, dtype=numpy.float64, count=self.np)
       t@@ -1010,10 +1014,13 @@ class Spherebin:
        
                # set the thickness of the horizons of fixed particles
                #fixheight = 2*cellsize
       -        fixheight = cellsize
       +        #fixheight = cellsize
        
                # Fix horizontal velocity to 0.0 of lowermost particles
       -        I = numpy.nonzero(self.x[:,2] < (z_min + fixheight)) # Find indices of lowermost 10%
       +        d_max_below = numpy.max(self.radius[numpy.nonzero(self.x[:,2] <
       +            (z_max-z_min)*0.3)])*2.0
       +        #I = numpy.nonzero(self.x[:,2] < (z_min + fixheight))
       +        I = numpy.nonzero(self.x[:,2] < (z_min + d_max_below))
                self.fixvel[I] = 1
                self.angvel[I,0] = 0.0
                self.angvel[I,1] = 0.0
       t@@ -1022,7 +1029,10 @@ class Spherebin:
                self.vel[I,1] = 0.0 # y-dim
        
                # Fix horizontal velocity to specific value of uppermost particles
       -        I = numpy.nonzero(self.x[:,2] > (z_max - fixheight)) # Find indices of lowermost 10%
       +        d_max_top = numpy.max(self.radius[numpy.nonzero(self.x[:,2] >
       +            (z_max-z_min)*0.7)])*2.0
       +        #I = numpy.nonzero(self.x[:,2] > (z_max - fixheight))
       +        I = numpy.nonzero(self.x[:,2] > (z_max - d_max_top))
                self.fixvel[I] = 1
                self.angvel[I,0] = 0.0
                self.angvel[I,1] = 0.0