Introduction
Introduction Statistics Contact Development Disclaimer Help
timprove plots, remove stray tabs - sphere - GPU-based 3D discrete element meth…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit b87092360b0bc18e75a6850737beb40dc60373f1
parent 57d5ce5829d8daebbb03d7ce6e164b36fec3ff88
Author: Anders Damsgaard <[email protected]>
Date: Mon, 20 Oct 2014 13:29:11 +0200
improve plots, remove stray tabs
Diffstat:
M python/shear-results-internals.py | 58 ++++++++++++++++++-----------…
M python/shear-results.py | 13 ++++++++-----
M src/device.cu | 14 +++++++-------
3 files changed, 48 insertions(+), 37 deletions(-)
---
diff --git a/python/shear-results-internals.py b/python/shear-results-internals…
t@@ -16,8 +16,8 @@ from matplotlib.ticker import MaxNLocator
#steps = [5, 10, 100]
#steps = [5, 10]
steps = sys.argv[3:]
-nsteps_avg = 5 # no. of steps to average over
-#nsteps_avg = 100 # no. of steps to average over
+#nsteps_avg = 5 # no. of steps to average over
+nsteps_avg = 100 # no. of steps to average over
sigma0 = float(sys.argv[1])
#c_grad_p = 1.0
t@@ -72,7 +72,8 @@ dphi_bar = numpy.zeros((len(steps), sim.num[2]))
xdisp_mean = numpy.zeros((len(steps), sim.num[2]))
f_pf_mean = numpy.zeros((len(steps), sim.num[2]))
-shear_strain = numpy.zeros(len(steps))
+shear_strain_start = numpy.zeros(len(steps))
+shear_strain_end = numpy.zeros(len(steps))
s = 0
for step_str in steps:
t@@ -130,7 +131,10 @@ for step_str in steps:
/nsteps_avg/sim.time_dt
- shear_strain[s] += sim.shearStrain()/nsteps_avg
+ if substep == 0:
+ shear_strain_start[s] = sim.shearStrain()
+ else:
+ shear_strain_end[s] = sim.shearStrain()
# calculate mean values of xdisp and f_pf
for iz in numpy.arange(sim.num[2]):
t@@ -151,6 +155,7 @@ for step_str in steps:
fig = plt.figure(figsize=(16,5*(len(steps))+1))
def color(c):
+ return 'black'
if c == 1.0:
return 'green'
elif c == 0.1:
t@@ -166,11 +171,11 @@ for s in numpy.arange(len(steps)):
#strain_str = 'Shear strain\n $\\gamma = %.3f$' % (shear_strain[s])
if s == 0:
- strain_str = 'Dilating state\n $\\gamma = %.2f$, $c = %.2f$' % \
- (shear_strain[s], c_grad_p)
+ strain_str = 'Dilating state\n$\\gamma = %.2f$ to $%.2f$\n$c = %.2f$' …
+ (shear_strain_start[s], shear_strain_end[s], c_grad_p)
else:
- strain_str = 'Steady state\n $\\gamma = %.2f$, $c = %.2f$' % \
- (shear_strain[s], c_grad_p)
+ strain_str = 'Steady state\n$\\gamma = %.2f$ to $%.2f$\n$c = %.2f$' % \
+ (shear_strain_start[s], shear_strain_end[s], c_grad_p)
n = 7
if s == 0:
t@@ -195,7 +200,7 @@ for s in numpy.arange(len(steps)):
ax.append(plt.subplot(len(steps), n-1, s*(n-1)+6, sharey=ax[s*n+0],
sharex=ax[6])) # 6: v_z^f
- #ax[s*n+0].plot(xdisp[s], zpos_p[s], ',', color = '#888888')
+ ax[s*n+0].plot(xdisp[s], zpos_p[s], ',', color = '#888888')
ax[s*n+0].plot(xdisp_mean[s], zpos_c[s], color=color(c_grad_p))
#ax[s*4+2].plot(dev_p[s]/1000.0, zpos_c[s], 'k')
t@@ -211,20 +216,21 @@ for s in numpy.arange(len(steps)):
#ax[s*4+3].plot(dphi_bar[s,1:], zpos_c[s,1:], '-w', linewidth=2)
ax[s*n+3].plot(v_z_p[s]*100.0, zpos_p[s], ',', alpha=0.5,
- color=color(c_grad_p))
+ color='#888888')
+ #color=color(c_grad_p))
ax[s*n+3].plot(v_z_p_bar[s]*100.0, zpos_c[s], color=color(c_grad_p))
#ax[s*n+0].plot([0.0,0.0], [0.0, sim.L[2]], '--', color='k')
# hydrostatic pressure distribution
- ax[s*n+4].plot(dev_p[s]/1000.0, zpos_c[s], color=color(c_grad_p))
- #ax[s*n+4].plot(p[s]/1000.0, zpos_c[s], color=color(c_grad_p))
- #dz = sim.L[2]/sim.num[2]
- #wall0_iz = int(sim.w_x[0]/dz)
- #y_top = wall0_iz*dz + 0.5*dz
- #x_top = sim.p_f[0,0,-1]
- #y_bot = 0.0
- #x_bot = x_top + (wall0_iz*dz - zpos_c[s][0] + 0.5*dz)*sim.rho_f*numpy.abs…
- #ax[s*n+4].plot([x_top/1000.0, x_bot/1000.0], [y_top, y_bot], '--', color=…
+ #ax[s*n+4].plot(dev_p[s]/1000.0, zpos_c[s], color=color(c_grad_p))
+ ax[s*n+4].plot(p[s]/1000.0, zpos_c[s], color=color(c_grad_p))
+ dz = sim.L[2]/sim.num[2]
+ wall0_iz = int(sim.w_x[0]/dz)
+ y_top = wall0_iz*dz + 0.5*dz
+ x_top = sim.p_f[0,0,-1]
+ y_bot = 0.0
+ x_bot = x_top + (wall0_iz*dz - zpos_c[s][0] + 0.5*dz)*sim.rho_f*numpy.abs(…
+ ax[s*n+4].plot([x_top/1000.0, x_bot/1000.0], [y_top, y_bot], '--', color='…
#ax[s*n+1].set_title(strain_str)
#ax[s*n+1].set_title(' ')
t@@ -237,7 +243,8 @@ for s in numpy.arange(len(steps)):
zpos_c_nonzero = zpos_c[s][I]
ax[s*n+5].plot(f_pf_nonzero, zpos_p_nonzero, ',', alpha=0.5,
- color=color(c_grad_p))
+ color='#888888')
+ #color=color(c_grad_p))
#ax[s*4+1].plot(f_pf_mean[s][1:-2], zpos_c[s][1:-2], color = 'k')
ax[s*n+5].plot(f_pf_mean_nonzero, zpos_c_nonzero, color=color(c_grad_p))
#ax[s*4+1].plot([0.0, 0.0], [0.0, sim.L[2]], '--', color='k')
t@@ -276,9 +283,10 @@ for s in numpy.arange(len(steps)):
#ax[s*4+1].set_xlim([0.15, 0.46]) # f_pf
#ax[s*n+1].set_xlim([0.235, 0.409]) # f_pf
- ax[s*n+1].set_xlim([0.33, 0.6]) # phi
+ ax[s*n+1].set_xlim([0.33, 0.6]) # phi
ax[s*n+2].set_xlim([-0.09, 0.035]) # dphi/dt
- ax[s*n+3].set_xlim([-1.50, 1.50]) # v_z_p
+ ax[s*n+3].set_xlim([-1.50, 1.50]) # v_z_p
+ ax[s*n+5].set_xlim([5.0, 8.0]) # f_z_pf
#plt.plot(dpdz[c], K[c], 'o-', label='$c$ = %.2f' % (cvals[c]))
t@@ -291,8 +299,8 @@ for s in numpy.arange(len(steps)):
ax[s*n+1].set_xlabel('$\\bar{\\phi}$ [-] (solid)')
ax[s*n+2].set_xlabel('$\\delta \\bar{\\phi}/\\delta t$ [-] (dashed)')
ax[s*n+3].set_xlabel('$\\boldsymbol{v}^z_\\text{p}$ [cms$^{-1}$]')
- #ax[s*n+4].set_xlabel('$\\bar{p_\\text{f}}$ [kPa]')
- ax[s*n+4].set_xlabel('$\\bar{p_\\text{f}} - p_\\text{hyd}$ [kPa]')
+ ax[s*n+4].set_xlabel('$\\bar{p_\\text{f}}$ [kPa]')
+ #ax[s*n+4].set_xlabel('$\\bar{p_\\text{f}} - p_\\text{hyd}$ [kPa]')
ax[s*n+5].set_xlabel('$\\boldsymbol{f}^z_\\text{pf}$ [N]')
ax[s*n+6].set_xlabel('$\\bar{\\boldsymbol{v}}^z_\\text{f}$ [cms$^{-1}$]')
t@@ -364,7 +372,7 @@ for s in numpy.arange(len(steps)):
#fig.text(0.1, y, strain_str, horizontalalignment='left', fontsize=22)
#ax[s*4+0].annotate(strain_str, xytext=(0,1.1), textcoords='figure fractio…
#horizontalalignment='left', fontsize=22)
- plt.text(-0.38, 1.15, strain_str, horizontalalignment='left', fontsize=22,
+ plt.text(-0.38, 1.10, strain_str, horizontalalignment='left', fontsize=22,
transform=ax[s*n+0].transAxes)
#plt.title(' ')
diff --git a/python/shear-results.py b/python/shear-results.py
t@@ -165,7 +165,6 @@ for c in numpy.arange(1,len(cvals)+1):
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])
- v_f_z_mean[c] = numpy.zeros_like(shear_strain[c])
for i in numpy.arange(sim.status()):
if pressures:
sim.readstep(i, verbose=False)
t@@ -179,7 +178,9 @@ for c in numpy.arange(1,len(cvals)+1):
f_n_mean[c][i] = numpy.mean(sim.f_n_magn)
f_n_max[c][i] = numpy.max(sim.f_n_magn)
- if zflow:
+ if zflow:
+ v_f_z_mean[c] = numpy.zeros_like(shear_strain[c])
+ for i in numpy.arange(sim.status()):
v_f_z_mean[c][i] = numpy.mean(sim.v_f[:,:,:,2])
else:
t@@ -270,7 +271,8 @@ plt.setp(ax1.get_xticklabels(), visible=False)
ax1.grid()
ax2.grid()
-#ax3.grid()
+if zflow:
+ ax3.grid()
#ax4.grid()
legend_alpha=0.5
t@@ -278,8 +280,9 @@ ax1.legend(loc='lower right', prop={'size':18}, fancybox=T…
framealpha=legend_alpha)
ax2.legend(loc='lower right', prop={'size':18}, fancybox=True,
framealpha=legend_alpha)
-#ax3.legend(loc='lower right', prop={'size':18}, fancybox=True,
- #framealpha=legend_alpha)
+if zflow:
+ ax3.legend(loc='lower right', prop={'size':18}, fancybox=True,
+ framealpha=legend_alpha)
#ax4.legend(loc='best', prop={'size':18}, fancybox=True,
#framealpha=legend_alpha)
diff --git a/src/device.cu b/src/device.cu
t@@ -6,8 +6,8 @@
#include <cuda.h>
#include <helper_math.h>
-#include "vector_arithmetic.h" // for arbitrary prec. vectors
-//#include <vector_functions.h> // for single prec. vectors
+#include "vector_arithmetic.h" // for arbitrary prec. vectors
+//#include <vector_functions.h> // for single prec. vectors
#include "thrust/device_ptr.h"
#include "thrust/sort.h"
t@@ -17,7 +17,7 @@
#include "constants.cuh"
#include "debug.h"
-#include "sorting.cuh"
+#include "sorting.cuh"
#include "contactmodels.cuh"
#include "cohesion.cuh"
#include "contactsearch.cuh"
t@@ -223,7 +223,7 @@ __host__ void DEM::checkConstantMemory()
// Compare values between global and constant memory
// structures on the device.
- int* equal = new int; // The values are equal = 0, if not = 1
+ int* equal = new int; // The values are equal = 0, if not = 1
*equal = 0;
int* dev_equal;
cudaMalloc((void**)&dev_equal, sizeof(int));
t@@ -548,15 +548,15 @@ __host__ void DEM::transferToGlobalDeviceMemory(int stat…
//cudaMemcpy(dev_time, &time, sizeof(Time), cudaMemcpyHostToDevice);
// Kinematic particle values
- cudaMemcpy( dev_x, k.x,
+ cudaMemcpy( dev_x, k.x,
memSizeF4, cudaMemcpyHostToDevice);
- cudaMemcpy( dev_xyzsum, k.xyzsum,
+ cudaMemcpy( dev_xyzsum, k.xyzsum,
memSizeF4, cudaMemcpyHostToDevice);
cudaMemcpy( dev_vel, k.vel,
memSizeF4, cudaMemcpyHostToDevice);
cudaMemcpy( dev_vel0, k.vel,
memSizeF4, cudaMemcpyHostToDevice);
- cudaMemcpy( dev_acc, k.acc,
+ cudaMemcpy( dev_acc, k.acc,
memSizeF4, cudaMemcpyHostToDevice);
cudaMemcpy( dev_force, k.force,
memSizeF4, cudaMemcpyHostToDevice);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.