tadd fluid pressure plotting 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 dfa8cd6359c3fe3253c253fa633d028c24ca48dd
(DIR) parent 26cb3f873fc2d80c30a815172c1f80ea5a48b84e
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Thu, 8 Jan 2015 14:34:48 +0100
add fluid pressure plotting functions
Diffstat:
M python/sphere.py | 47 +++++++++++++++++++++++++++++--
1 file changed, 45 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -5361,7 +5361,8 @@ class sim:
method.
:param method: The type of plot to render. Possible values are 'energy',
- 'walls', 'triaxial' and 'shear'
+ 'walls', 'triaxial', 'mean-fluid-pressure', 'fluid-pressure' and
+ 'shear'
:type method: str
:param savefig: Save the image instead of showing it on screen
:type savefig: bool
t@@ -5726,7 +5727,7 @@ class sim:
if fh is not None:
fh.close()
- elif method == 'fluid-pressure':
+ elif method == 'mean-fluid-pressure':
# Read pressure values from simulation binaries
for i in range(lastfile+1):
t@@ -5751,6 +5752,48 @@ class sim:
#ax1.legend()
ax1.grid()
+ elif method == 'fluid-pressure':
+
+ sb.readfirst(verbose=False)
+
+ # cell midpoint cell positions
+ zpos_c = numpy.zeros(sb.num[2])
+ dz = sb.L[2]/sb.num[2]
+ for i in numpy.arange(sb.num[2]):
+ zpos_c[i] = i*dz + 0.5*dz
+
+ shear_strain = numpy.zeros(sb.status())
+ pres = numpy.zeros((sb.num[2], sb.status()))
+
+ # Read pressure values from simulation binaries
+ for i in numpy.arange(sb.status()):
+ sb.readstep(i, verbose = False)
+ pres[:,i] = numpy.average(numpy.average(sb.p_f, axis=0), axis=0)
+
+ shear_strain[i] = sb.shearStrain()
+
+ t = numpy.linspace(0.0, sb.time_current, lastfile+1)
+
+ # Plotting
+ if (outformat != 'txt'):
+
+ ax = plt.subplot(1,1,1)
+
+ im1 = ax.pcolormesh(shear_strain, zpos_c, pres/1000.0,
+ rasterized=True)
+ ax.set_xlim([0, numpy.max(shear_strain)])
+ ax.set_ylim([zpos_c[0], sim.w_x[0]])
+ ax.set_xlabel('Shear strain $\\gamma$ [-]')
+ ax.set_ylabel('Vertical position $z$ [m]')
+
+ ax.set_title(sb.id())
+
+ cb = plt.colorbar(im1)
+ cb.set_label('$p_\\text{f}$ [kPa]')
+ cb.solids.set_rasterized(True)
+ plt.tight_layout()
+ plt.subplots_adjust(wspace = .05)
+
else :
print("Visualization type '" + method + "' not understood")
return