tAdded visualization method for viscous dissipation - 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 c96448cc01d728f0d903554cd1a2666a9847901b
(DIR) parent a6c68eb862e5d1c07ac66791537b3ad8b6a139f6
(HTM) Author: Anders Damsgaard <adc@geo.au.dk>
Date: Wed, 10 Oct 2012 09:33:18 +0200
Added visualization method for viscous dissipation
Diffstat:
M python/sphere.py | 69 ++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 24 deletions(-)
---
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -769,6 +769,12 @@ class Spherebin:
elif method == 'shearrate':
return numpy.sum(self.es_dot)
+ elif method == 'visc_n':
+ return numpy.sum(self.ev):
+
+ elif method == 'visc_n_rate':
+ return numpy.sum(self.ev_dot)
+
def voidRatio(self):
""" Return the current void ratio
"""
t@@ -925,56 +931,71 @@ def visualize(project, method = 'energy', savefig = False, outformat = 'png'):
Ekin[i] = sb.energy("kin")
Erot[i] = sb.energy("rot")
Es[i] = sb.energy("shear")
+ Ev[i] = sb.energy("visc_n")
Es_dot[i] = sb.energy("shearrate")
- Esum[i] = Epot[i] + Ekin[i] + Erot[i] + Es[i]
+ Ev_dot[i] = sb.energy("visc_n_rate")
+ Esum[i] = Epot[i] + Ekin[i] + Erot[i] + Es[i] + Ev[i]
t = numpy.linspace(0.0, sb.time_current, lastfile+1)
if (outformat != 'txt'):
# Potential energy
- ax1 = plt.subplot2grid((2,3),(0,0))
+ ax1 = plt.subplot2grid((5,5),(0,0))
ax1.set_xlabel('Time [s]')
ax1.set_ylabel('Total potential energy [J]')
ax1.plot(t, Epot, '+-')
# Kinetic energy
- ax2 = plt.subplot2grid((2,3),(0,1))
+ ax2 = plt.subplot2grid((5,5),(0,1))
ax2.set_xlabel('Time [s]')
ax2.set_ylabel('Total kinetic energy [J]')
ax2.plot(t, Ekin, '+-')
# Rotational energy
- ax3 = plt.subplot2grid((2,3),(0,2))
+ ax3 = plt.subplot2grid((5,5),(0,2))
ax3.set_xlabel('Time [s]')
ax3.set_ylabel('Total rotational energy [J]')
ax3.plot(t, Erot, '+-')
- # Shear energy rate
- ax4 = plt.subplot2grid((2,3),(1,0))
+ # Total energy
+ ax4 = plt.subplot2grid((5,5),(0,3))
ax4.set_xlabel('Time [s]')
- ax4.set_ylabel('Shear energy rate [W]')
- ax4.plot(t, Es_dot, '+-')
+ ax4.set_ylabel('Total energy [J]')
+ ax4.plot(t, Esum, '+-')
+
+ # Shear energy rate
+ ax5 = plt.subplot2grid((5,5),(1,0))
+ ax5.set_xlabel('Time [s]')
+ ax5.set_ylabel('Frictional dissipation rate [W]')
+ ax5.plot(t, Es_dot, '+-')
# Shear energy
- ax5 = plt.subplot2grid((2,3),(1,1))
- ax5.set_xlabel('Time [s]')
- ax5.set_ylabel('Total shear energy [J]')
- ax5.plot(t, Es, '+-')
+ ax6 = plt.subplot2grid((5,5),(1,1))
+ ax6.set_xlabel('Time [s]')
+ ax6.set_ylabel('Total frictional dissipation [J]')
+ ax6.plot(t, Es, '+-')
+
+ # Visc_n energy rate
+ ax7 = plt.subplot2grid((5,5),(1,2))
+ ax7.set_xlabel('Time [s]')
+ ax7.set_ylabel('Viscous dissipation rate [W]')
+ ax7.plot(t, Ev_dot, '+-')
+
+ # Visc_nenergy
+ ax8 = plt.subplot2grid((5,5),(1,3))
+ ax8.set_xlabel('Time [s]')
+ ax8.set_ylabel('Total viscous dissipation [J]')
+ ax8.plot(t, Ev, '+-')
- # Total energy
- #ax6 = plt.subplot2grid((2,3),(1,2))
- #ax6.set_xlabel('Time [s]')
- #ax6.set_ylabel('Total energy [J]')
- #ax6.plot(t, Esum, '+-')
# Combined view
- ax6 = plt.subplot2grid((2,3),(1,2))
- ax6.set_xlabel('Time [s]')
- ax6.set_ylabel('Energy [J]')
- ax6.plot(t, Epot, '+-g')
- ax6.plot(t, Ekin, '+-b')
- ax6.plot(t, Erot, '+-r')
- ax6.legend(('$\sum E_{pot}$','$\sum E_{kin}$','$\sum E_{rot}$'), 'upper right', shadow=True)
+ ax9 = plt.subplot2grid((5,5),(1,4))
+ ax9.set_xlabel('Time [s]')
+ ax9.set_ylabel('Energy [J]')
+ ax9.plot(t, Epot, '+-g')
+ ax9.plot(t, Ekin, '+-b')
+ ax9.plot(t, Erot, '+-r')
+ ax9.legend(('$\sum E_{pot}$','$\sum E_{kin}$','$\sum E_{rot}$'), 'upper right', shadow=True)
elif method == 'walls':