| timprove shearStrain function - sphere - GPU-based 3D discrete element method a… | |
| git clone git://src.adamsgaard.dk/sphere | |
| Log | |
| Files | |
| Refs | |
| LICENSE | |
| --- | |
| commit 9f8b77e89f90aa53dc6c0c2cfe65c417e62ef1a6 | |
| parent 4655081fc0453fd7a0e469a1b199e67687920dc4 | |
| Author: Anders Damsgaard <[email protected]> | |
| Date: Tue, 17 Feb 2015 14:24:06 +0100 | |
| improve shearStrain function | |
| use current displacement of fixed particles instead of multiplying the current | |
| velocities | |
| Diffstat: | |
| M python/sphere.py | 21 +++++++++++++++++++-- | |
| 1 file changed, 19 insertions(+), 2 deletions(-) | |
| --- | |
| diff --git a/python/sphere.py b/python/sphere.py | |
| t@@ -4210,7 +4210,9 @@ class sim: | |
| w_x0 = self.w_x[0] | |
| # Displacement of the upper, fixed particles in the shear direction | |
| - xdisp = self.time_current[0] * self.shearVel() | |
| + #xdisp = self.time_current[0] * self.shearVel() | |
| + fixvel = numpy.nonzero(self.fixvel > 0.0) | |
| + xdisp = numpy.max(self.xyzsum[fixvel,0]) | |
| # Return shear strain | |
| return xdisp/w_x0 | |
| t@@ -6088,6 +6090,7 @@ class sim: | |
| tau = numpy.empty(sb.status()) | |
| N = numpy.empty(sb.status()) | |
| v = numpy.empty(sb.status()) | |
| + shearstrain = numpy.empty(sb.status()) | |
| for i in numpy.arange(sb.status()): | |
| sb.readstep(i+1, verbose=False) | |
| #tau = sb.shearStress() | |
| t@@ -6095,24 +6098,38 @@ class sim: | |
| #tau[i] = sb.shearStress()[0] # measured shear stress along x | |
| N[i] = sb.currentNormalStress() # defined normal stress | |
| v[i] = sb.shearVel() | |
| + shearstrain[i] = sb.shearStrain() | |
| # remove nonzero sliding velocities and their associated values | |
| idx = numpy.nonzero(v) | |
| v_nonzero = v[idx] | |
| tau_nonzero = tau[idx] | |
| N_nonzero = N[idx] | |
| + shearstrain_nonzero = shearstrain[idx] | |
| ax1 = plt.subplot(111) | |
| #ax1.semilogy(N/1000., v) | |
| #ax1.semilogy(tau_nonzero/N_nonzero, v_nonzero, '+k') | |
| #ax1.plot(tau/N, v, '.') | |
| - ax1.scatter(tau_nonzero/N_nonzero, v_nonzero, c=idx) | |
| + friction = tau_nonzero/N_nonzero | |
| + CS = ax1.scatter(friction, v_nonzero, c=shearstrain_nonzero, | |
| + linewidth=0) | |
| ax1.set_yscale('log') | |
| + x_min = numpy.floor(numpy.min(friction)) | |
| + x_max = numpy.ceil(numpy.max(friction)) | |
| + ax1.set_xlim([x_min, x_max]) | |
| + y_min = numpy.min(v_nonzero)*0.5 | |
| + y_max = numpy.max(v_nonzero)*2.0 | |
| + ax1.set_ylim([y_min, y_max]) | |
| + | |
| + plt.colorbar(CS) | |
| #ax1.set_xlabel('Effective normal stress [kPa]') | |
| ax1.set_xlabel('Friction $\\tau/N$ [-]') | |
| ax1.set_ylabel('Shear velocity [m/s]') | |
| + | |
| + | |
| ''' | |
| ax2 = plt.subplot(212) | |
| ax2.plot(tau/N, v, '.') |