tadd x axis limits to visualize function - 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 1b910fed50018679c13fab415c1c8e4f6dbdcbbe
(DIR) parent 397538fb3117476cef261d014086a2df0b1d52bf
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Mon, 9 Feb 2015 14:14:05 +0100
add x axis limits to visualize function
Diffstat:
M python/sphere.py | 55 +++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -5472,7 +5472,7 @@ class sim:
def visualize(self, method = 'energy', savefig = True, outformat = 'png',
- pickle=False):
+ pickle=False, xlim=False):
'''
Visualize output from the simulation, where the temporal progress is
of interest. The output will be saved in the current folder with a name
t@@ -5490,6 +5490,9 @@ class sim:
:param pickle: Save all figure content as a Python pickle file. It can
be opened later using `fig = pickle.load(open('file.pickle','rb'))`.
:type pickle: bool
+ :param xlim: Set custom limits to the x axis. If not specified, the x
+ range will correspond to the entire data interval.
+ :type xlim: array
'''
lastfile = self.status()
t@@ -5605,6 +5608,18 @@ class sim:
'$\sum E_{rot}$'), 'upper right', shadow=True)
ax10.grid()
+ if xlim:
+ ax1.set_xlim(xlim)
+ ax2.set_xlim(xlim)
+ ax3.set_xlim(xlim)
+ ax4.set_xlim(xlim)
+ ax5.set_xlim(xlim)
+ ax6.set_xlim(xlim)
+ ax7.set_xlim(xlim)
+ ax8.set_xlim(xlim)
+ ax9.set_xlim(xlim)
+ ax10.set_xlim(xlim)
+
fig.tight_layout()
elif method == 'walls':
t@@ -5677,6 +5692,12 @@ class sim:
ax4.legend(loc=4)
ax4.grid()
+ if xlim:
+ ax1.set_xlim(xlim)
+ ax2.set_xlim(xlim)
+ ax3.set_xlim(xlim)
+ ax4.set_xlim(xlim)
+
elif method == 'triaxial':
# Read energy values from simulation binaries
t@@ -5732,6 +5753,9 @@ class sim:
ax2.plot(axial_strain, volumetric_strain, '+-')
ax2.grid()
+ if xlim:
+ ax1.set_xlim(xlim)
+ ax2.set_xlim(xlim)
elif method == 'shear':
t@@ -5802,7 +5826,6 @@ class sim:
self.tau_p = self.tau[i]
self.tau_p_shearstrain = self.xdisp[i]/w_x0
-
self.shear_strain = self.xdisp/w_x0
# Plot stresses
t@@ -5833,6 +5856,10 @@ class sim:
ax2.plot(self.shear_strain, self.dilation, '.-')
ax2.grid()
+ if xlim:
+ ax1.set_xlim(xlim)
+ ax2.set_xlim(xlim)
+
fig.tight_layout()
else :
t@@ -6010,12 +6037,19 @@ class sim:
labs = [l.get_label() for l in lns]
ax4.legend(lns, labs, loc='upper right',
fancybox=True, framealpha=legend_alpha)
+ if xlim:
+ ax4.set_xlim(xlim)
# aesthetics
ax3.set_xlabel('Time [s]')
#ax1.grid()
#ax3.grid()
+ if xlim:
+ ax1.set_xlim(xlim)
+ ax2.set_xlim(xlim)
+ ax3.set_xlim(xlim)
+
plt.setp(ax1.get_xticklabels(), visible=False)
fig.tight_layout()
plt.subplots_adjust(hspace=0.05)
t@@ -6037,6 +6071,9 @@ class sim:
# Plotting
if (outformat != 'txt'):
+ if xlim:
+ ax1.set_xlim(xlim)
+
# linear plot of deviatoric stress
ax1 = plt.subplot2grid((1,1),(0,0))
ax1.set_xlabel('Time $t$, [s]')
t@@ -6047,6 +6084,8 @@ class sim:
elif method == 'fluid-pressure':
+ fig = plt.figure(figsize=(8,6))
+
sb.readfirst(verbose=False)
# cell midpoint cell positions
t@@ -6098,6 +6137,9 @@ class sim:
#ax.set_title(sb.id())
+ if xlim:
+ ax.set_xlim(xlim)
+
cb = plt.colorbar(im1)
cb.set_label('$p_\\text{f}$ [kPa]')
cb.solids.set_rasterized(True)
t@@ -6161,6 +6203,9 @@ class sim:
#ax.set_xlabel('Time $t$ [s]')
ax.set_ylabel('Vertical position $z$ [m]')
+ if xlim:
+ ax.set_xlim(xlim)
+
#ax.set_title(sb.id())
cb = plt.colorbar(im1)
t@@ -6174,7 +6219,11 @@ class sim:
return
# Optional save of figure content
- filename = '{0}-{1}.{2}'.format(self.sid, method, outformat)
+ if xlim:
+ filename = '{0}-{1}-{3}.{2}'.format(self.sid, method, outformat,
+ xlim[-1])
+ else:
+ filename = '{0}-{1}.{2}'.format(self.sid, method, outformat)
if pickle:
pl.dump(fig, file(filename + '.pickle', 'w'))