tadd dry and wet functions - 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 ebbddb828cd9e760f1a9ba991298b15fc1cc8d34
(DIR) parent c502aa76c0c7154f05fe425ad4f16f60743ba3d2
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Wed, 1 Oct 2014 13:13:07 +0200
add dry and wet functions
Diffstat:
M python/shear-results-pressures.py | 47 ++++++++++++++++++++++---------
M python/sphere.py | 17 +++++++++++++++++
2 files changed, 51 insertions(+), 13 deletions(-)
---
(DIR) diff --git a/python/shear-results-pressures.py b/python/shear-results-pressures.py
t@@ -34,36 +34,57 @@ for i in numpy.arange(sim.num[2]):
shear_strain = numpy.zeros(sim.status())
dev_pres = numpy.zeros((sim.num[2], sim.status()))
+pres_static = numpy.zeros_like(dev_pres)
+pres = numpy.zeros_like(dev_pres)
for i in numpy.arange(sim.status()):
sim.readstep(i, verbose=False)
- '''
- dev_pres[:,i] = numpy.average(numpy.average(sim.p_f, axis=0), axis=0)
+ pres[:,i] = numpy.average(numpy.average(sim.p_f, axis=0), axis=0)
for z in numpy.arange(0, sim.w_x[0]+1):
- pres_static = (sim.w_x[0] - zpos_c[z])*sim.rho_f*numpy.abs(sim.g[2])\
+ pres_static[z,i] = \
+ (sim.w_x[0] - zpos_c[z])*sim.rho_f*numpy.abs(sim.g[2])\
+ sim.p_f[0,0,-1]
- dev_pres[z,i] -= pres_static
- '''
- dev_pres[:,i] = numpy.arange(0, sim.num[2])
shear_strain[i] = sim.shearStrain()
+dev_pres = pres - pres_static
-#fig = plt.figure(figsize=(8,4*(len(steps))+1))
-fig = plt.figure(figsize=(8,6))
+#fig = plt.figure(figsize=(8,6))
+fig = plt.figure(figsize=(8,15))
-plt.pcolormesh(shear_strain, zpos_c, dev_pres/1000.0, rasterized=True)
-plt.xlim([0, shear_strain[-1]])
-plt.ylim([zpos_c[0], sim.w_x[0]])
-plt.xlabel('Shear strain $\\gamma$ [-]')
-plt.ylabel('Vertical position $z$ [m]')
+ax1 = plt.subplot(311)
+ax1.pcolormesh(shear_strain, zpos_c, dev_pres/1000.0, rasterized=True)
+ax1.set_xlim([0, shear_strain[-1]])
+ax1.set_ylim([zpos_c[0], sim.w_x[0]])
+ax1.set_xlabel('Shear strain $\\gamma$ [-]')
+ax1.set_ylabel('Vertical position $z$ [m]')
cb = plt.colorbar()
cb.set_label('Deviatoric pressure $p_\\text{f}$ [kPa]')
cb.solids.set_rasterized(True)
+ax2 = plt.subplot(312)
+ax2.pcolormesh(shear_strain, zpos_c, pres/1000.0, rasterized=True)
+ax2.set_xlim([0, shear_strain[-1]])
+ax2.set_ylim([zpos_c[0], sim.w_x[0]])
+ax2.set_xlabel('Shear strain $\\gamma$ [-]')
+ax2.set_ylabel('Vertical position $z$ [m]')
+cb = plt.colorbar()
+cb.set_label('Pressure $p_\\text{f}$ [kPa]')
+cb.solids.set_rasterized(True)
+
+ax3 = plt.subplot(312)
+ax3.pcolormesh(shear_strain, zpos_c, pres_static/1000.0, rasterized=True)
+ax3.set_xlim([0, shear_strain[-1]])
+ax3.set_ylim([zpos_c[0], sim.w_x[0]])
+ax3.set_xlabel('Shear strain $\\gamma$ [-]')
+ax3.set_ylabel('Vertical position $z$ [m]')
+cb = plt.colorbar()
+cb.set_label('Pressure $p_\\text{f}$ [kPa]')
+cb.solids.set_rasterized(True)
+
#plt.MaxNLocator(nbins=4)
plt.tight_layout()
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -2619,6 +2619,23 @@ class sim:
self.time_file_dt[0] = file_dt
self.time_step_count[0] = 0
+ def dry(self):
+ '''
+ Set the simulation to be dry (no fluids).
+
+ See also :func:`wet()`
+ '''
+ self.fluid = False
+
+ def wet(self):
+ '''
+ Set the simulation to be dry (no fluids).
+
+ See also :func:`dry()`
+ '''
+ self.fluid = True
+ self.initFluid()
+
def initFluid(self, mu = 8.9e-4, rho = 1.0e3, p = 1.0,
hydrostatic = True):
'''