toptimize runtime by disabling of unwanted tasks - 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 efb694257466958625ede9c375b0595eaa12c06d
(DIR) parent ca27840f97329601b0483434ada4e2af48536254
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Mon, 13 Oct 2014 09:31:21 +0200
optimize runtime by disabling of unwanted tasks
Diffstat:
M python/shear-results.py | 101 ++++++++++++++++++-------------
1 file changed, 59 insertions(+), 42 deletions(-)
---
(DIR) diff --git a/python/shear-results.py b/python/shear-results.py
t@@ -13,10 +13,15 @@ import sphere
from permeabilitycalculator import *
import matplotlib.pyplot as plt
+smoothed_results = False
+contact_forces = False
+pressures = False
+
#sigma0_list = numpy.array([1.0e3, 2.0e3, 4.0e3, 10.0e3, 20.0e3, 40.0e3])
#sigma0 = 10.0e3
sigma0 = float(sys.argv[1])
-cvals = [1.0, 0.1]
+#cvals = [1.0, 0.1]
+cvals = [1.0, 0.1, 0.01]
#cvals = [1.0]
# return a smoothed version of in. The returned array is smaller than the
t@@ -89,15 +94,16 @@ def smooth(x, window_len=10, window='hanning'):
smooth_window = 10
-shear_strain = [[], [], []]
-friction = [[], [], []]
-friction_smooth = [[], [], []]
-dilation = [[], [], []]
-p_min = [[], [], []]
-p_mean = [[], [], []]
-p_max = [[], [], []]
-f_n_mean = [[], [], []]
-f_n_max = [[], [], []]
+shear_strain = [[], [], [], []]
+friction = [[], [], [], []]
+if smoothed_results:
+ friction_smooth = [[], [], [], []]
+dilation = [[], [], [], []]
+p_min = [[], [], [], []]
+p_mean = [[], [], [], []]
+p_max = [[], [], [], []]
+f_n_mean = [[], [], [], []]
+f_n_max = [[], [], [], []]
fluid=True
t@@ -110,16 +116,18 @@ sim.visualize('shear')
shear_strain[0] = sim.shear_strain
#shear_strain[0] = numpy.arange(sim.status()+1)
friction[0] = sim.tau/sim.sigma_eff
-friction_smooth[0] = smooth(friction[0], smooth_window)
+if smoothed_results:
+ friction_smooth[0] = smooth(friction[0], smooth_window)
dilation[0] = sim.dilation
-f_n_mean[0] = numpy.zeros_like(shear_strain[0])
-f_n_max[0] = numpy.zeros_like(shear_strain[0])
-for i in numpy.arange(sim.status()):
- sim.readstep(i, verbose=False)
- sim.findNormalForces()
- f_n_mean[0][i] = numpy.mean(sim.f_n_magn)
- f_n_max[0][i] = numpy.max(sim.f_n_magn)
+if contact_forces:
+ f_n_mean[0] = numpy.zeros_like(shear_strain[0])
+ f_n_max[0] = numpy.zeros_like(shear_strain[0])
+ for i in numpy.arange(sim.status()):
+ sim.readstep(i, verbose=False)
+ sim.findNormalForces()
+ f_n_mean[0][i] = numpy.mean(sim.f_n_magn)
+ f_n_max[0][i] = numpy.max(sim.f_n_magn)
# wet shear
c = 1
t@@ -136,7 +144,8 @@ for c in numpy.arange(1,len(cvals)+1):
shear_strain[c] = numpy.zeros(sim.status())
friction[c] = numpy.zeros_like(shear_strain[c])
dilation[c] = numpy.zeros_like(shear_strain[c])
- friction_smooth[c] = numpy.zeros_like(shear_strain[c])
+ if smoothed_results:
+ friction_smooth[c] = numpy.zeros_like(shear_strain[c])
sim.readlast(verbose=False)
sim.visualize('shear')
t@@ -144,24 +153,28 @@ for c in numpy.arange(1,len(cvals)+1):
#shear_strain[c] = numpy.arange(sim.status()+1)
friction[c] = sim.tau/sim.sigma_eff
dilation[c] = sim.dilation
- friction_smooth[c] = smooth(friction[c], smooth_window)
+ if smoothed_results:
+ friction_smooth[c] = smooth(friction[c], smooth_window)
# fluid pressures and particle forces
- p_mean[c] = numpy.zeros_like(shear_strain[c])
- p_min[c] = numpy.zeros_like(shear_strain[c])
- p_max[c] = numpy.zeros_like(shear_strain[c])
- f_n_mean[c] = numpy.zeros_like(shear_strain[c])
- f_n_max[c] = numpy.zeros_like(shear_strain[c])
- for i in numpy.arange(sim.status()):
- sim.readstep(i, verbose=False)
- iz_top = int(sim.w_x[0]/(sim.L[2]/sim.num[2]))-1
- p_mean[c][i] = numpy.mean(sim.p_f[:,:,0:iz_top])/1000
- p_min[c][i] = numpy.min(sim.p_f[:,:,0:iz_top])/1000
- p_max[c][i] = numpy.max(sim.p_f[:,:,0:iz_top])/1000
-
- sim.findNormalForces()
- f_n_mean[c][i] = numpy.mean(sim.f_n_magn)
- f_n_max[c][i] = numpy.max(sim.f_n_magn)
+ if pressures or contact_forces:
+ p_mean[c] = numpy.zeros_like(shear_strain[c])
+ p_min[c] = numpy.zeros_like(shear_strain[c])
+ p_max[c] = numpy.zeros_like(shear_strain[c])
+ f_n_mean[c] = numpy.zeros_like(shear_strain[c])
+ f_n_max[c] = numpy.zeros_like(shear_strain[c])
+ for i in numpy.arange(sim.status()):
+ if pressures:
+ sim.readstep(i, verbose=False)
+ iz_top = int(sim.w_x[0]/(sim.L[2]/sim.num[2]))-1
+ p_mean[c][i] = numpy.mean(sim.p_f[:,:,0:iz_top])/1000
+ p_min[c][i] = numpy.min(sim.p_f[:,:,0:iz_top])/1000
+ p_max[c][i] = numpy.max(sim.p_f[:,:,0:iz_top])/1000
+
+ if contact_forces:
+ sim.findNormalForces()
+ f_n_mean[c][i] = numpy.mean(sim.f_n_magn)
+ f_n_max[c][i] = numpy.max(sim.f_n_magn)
else:
print(sid + ' not found')
t@@ -187,9 +200,11 @@ ax2 = plt.subplot(212, sharex=ax1)
#ax3 = plt.subplot(413, sharex=ax1)
#ax4 = plt.subplot(414, sharex=ax1)
alpha = 0.5
-#ax1.plot(shear_strain[0], friction[0], label='dry', alpha = 0.5)
-ax1.plot(shear_strain[0], friction_smooth[0], label='dry', linewidth=1,
- alpha=0.5)
+if smoothed_results:
+ x1.plot(shear_strain[0], friction_smooth[0], label='dry', linewidth=1,
+ alpha=0.5)
+else:
+ ax1.plot(shear_strain[0], friction[0], label='dry', linewidth=1, alpha=0.5)
ax2.plot(shear_strain[0], dilation[0], label='dry', linewidth=2)
#ax4.plot(shear_strain[0], f_n_mean[0], '-', label='dry', color='blue')
#ax4.plot(shear_strain[0], f_n_max[0], '--', color='blue')
t@@ -197,10 +212,12 @@ ax2.plot(shear_strain[0], dilation[0], label='dry', linewidth=2)
color = ['b','g','r','c']
for c in numpy.arange(1,len(cvals)+1):
- #ax1.plot(shear_strain[c][1:], friction[c][1:], \
- #label='$c$ = %.2f' % (cvals[c-1]))
- ax1.plot(shear_strain[c][1:], friction_smooth[c][1:], \
- label='$c$ = %.2f' % (cvals[c-1]), linewidth=1, alpha=0.3)
+ if smoothed_results:
+ ax1.plot(shear_strain[c][1:], friction_smooth[c][1:], \
+ label='$c$ = %.2f' % (cvals[c-1]), linewidth=1, alpha=0.5)
+ else:
+ ax1.plot(shear_strain[c][1:], friction[c][1:], \
+ label='$c$ = %.2f' % (cvals[c-1]), linewidth=1, alpha=0.5)
ax2.plot(shear_strain[c][1:], dilation[c][1:], \
label='$c$ = %.2f' % (cvals[c-1]), linewidth=2)