Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdd options to smooth shear visualization - sphere - GPU-based 3D discrete ele…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 2adafa25ee9d168069098b06a018316eb2086913
parent 382c95a6e4f9f333dc93531ec68fa9024a8d2bc9
Author: Anders Damsgaard <[email protected]>
Date: Fri, 13 Apr 2018 09:01:29 -0700
Add options to smooth shear visualization
Diffstat:
M python/sphere.py | 54 +++++++++++++++++++++++++++--…
1 file changed, 47 insertions(+), 7 deletions(-)
---
diff --git a/python/sphere.py b/python/sphere.py
t@@ -6437,7 +6437,7 @@ class sim:
def visualize(self, method='energy', savefig=True, outformat='png',
figsize=False, pickle=False, xlim=False, firststep=0, f_min=None,
- f_max=None, cmap=None):
+ f_max=None, cmap=None, smoothing=0, smoothing_window='hanning'):
'''
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@@ -6466,6 +6466,14 @@ class sim:
:param cmap: Choose custom color map, e.g.
`cmap=matplotlib.cm.get_cmap('afmhot')`
:type cmap: matplotlib.colors.LinearSegmentedColormap
+ :param smoothing: Apply smoothing across a number of output files to t…
+ `method='shear'` plot. A value of less than 3 means that no
+ smoothing occurs.
+ :type smoothing: int
+ :param smoothing_window: Type of smoothing to use when `smoothing >= 3…
+ Valid values are 'flat', 'hanning' (default), 'hamming', 'bartlett…
+ and 'blackman'.
+ :type smoothing_window: str
'''
lastfile = self.status()
t@@ -6808,6 +6816,28 @@ class sim:
self.shear_strain = self.xdisp/w_x0
+ # Copy values so they can be modified during smoothing
+ shear_strain = self.shear_strain
+ tau = self.tau
+ sigma_def = self.sigma_def
+
+ # Optionally smooth the shear stress
+ if smoothing > 2:
+
+ if not smoothing_window in ['flat', 'hanning', 'hamming',
+ 'bartlett', 'blackman']:
+ raise ValueError
+
+ s = numpy.r_[2*tau[0]-tau[smoothing:1:-1], tau,
+ 2*tau[-1]-tau[-1:-smoothing:-1]]
+
+ if smoothing_window == 'flat': # moving average
+ w = numpy.ones(smoothing, 'd')
+ else:
+ w = getattr(numpy, smoothing_window)(smoothing)
+ y = numpy.convolve(w/w.sum(), s, mode='same')
+ tau = y[smoothing-1:-smoothing+1]
+
# Plot stresses
if outformat != 'txt':
shearinfo = "$\\tau_p$ = {:.3} Pa at $\gamma$ = {:.3}".format(\
t@@ -6822,11 +6852,17 @@ class sim:
#ax1.plot(xdisp / w_x0, sigma_eff, '+-g', label="$\sigma'$")
#ax1.plot(xdisp / w_x0, sigma_def, '+-b', label="$\sigma_0$")
#ax1.plot(xdisp / w_x0, tau, '+-r', label="$\\tau$")
- ax1.plot(self.shear_strain[1:],\
- self.tau[1:]/self.sigma_def[1:],\
- #self.tau[1:]/self.sigma_eff[1:],\
- '-', label="$\\tau/\\sigma_0$")
- #'.-', label="$\\tau$")
+ if smoothing > 2:
+ ax1.plot(shear_strain[1:-(smoothing+1)/2],
+ tau[1:-(smoothing+1)/2] /
+ sigma_def[1:-(smoothing+1)/2],
+ '-', label="$\\tau/\\sigma_0$")
+ else:
+ ax1.plot(shear_strain[1:],\
+ tau[1:]/sigma_def[1:],\
+ #self.tau[1:]/self.sigma_eff[1:],\
+ '-', label="$\\tau/\\sigma_0$")
+ #'.-', label="$\\tau$")
#ax1.legend(loc=4)
ax1.grid()
t@@ -6837,7 +6873,11 @@ class sim:
#ax2.set_ylabel('Dilation [%]')
ax2.set_ylabel('Dilation, $\Delta h/(2\\bar{r})$ [m]')
#ax2.plot(self.shear_strain, self.dilation, '.-')
- ax2.plot(self.shear_strain, self.dilation, '-')
+ if smoothing > 2:
+ ax2.plot(self.shear_strain[1:-(smoothing+1)/2],
+ self.dilation[1:-(smoothing+1)/2], '-')
+ else:
+ ax2.plot(self.shear_strain, self.dilation, '-')
ax2.grid()
if xlim:
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.