tsave stresses as cell data, add firststep argument - sphere - GPU-based 3D dis… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit ee15c150c5a60b9707bc7fd1b9648468ce7a0e2f | |
parent 675d72b75412b8a1480027d596e8be8013f2a2db | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 3 Mar 2015 15:27:09 +0100 | |
save stresses as cell data, add firststep argument | |
Diffstat: | |
M python/halfshear-darcy-combined.py | 1 + | |
M python/sphere.py | 71 ++++++++++++++++-------------… | |
2 files changed, 38 insertions(+), 34 deletions(-) | |
--- | |
diff --git a/python/halfshear-darcy-combined.py b/python/halfshear-darcy-combin… | |
t@@ -53,6 +53,7 @@ v = numpy.empty_like(t) | |
# displacement and mean porosity plot | |
xdisp = numpy.empty_like(t) | |
+xdispint = numpy.zeros_like(t) | |
phi_bar = numpy.empty_like(t) | |
# mean horizontal porosity plot | |
diff --git a/python/sphere.py b/python/sphere.py | |
t@@ -1843,9 +1843,9 @@ class sim: | |
#polydata.GetCellData().SetScalars(forces) # default scalar | |
polydata.GetCellData().SetScalars(forces) # default scalar | |
#polydata.GetCellData().AddArray(forces) | |
- #polydata.GetCellData().AddArray(stresses) | |
+ polydata.GetCellData().AddArray(stresses) | |
#polydata.GetPointData().AddArray(stresses) | |
- polydata.GetPointData().SetScalars(stresses) # default scalar | |
+ #polydata.GetPointData().SetScalars(stresses) # default scalar | |
# write VTK XML image data file | |
writer = vtk.vtkXMLPolyDataWriter() | |
t@@ -5866,7 +5866,7 @@ class sim: | |
def visualize(self, method='energy', savefig=True, outformat='png', | |
- pickle=False, xlim=False): | |
+ pickle=False, xlim=False, firststep=0): | |
''' | |
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@@ -5888,6 +5888,8 @@ class sim: | |
: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 | |
+ :param firststep: The first output file step to read (default: 0) | |
+ :type firststep: int | |
''' | |
lastfile = self.status() | |
t@@ -5901,18 +5903,19 @@ class sim: | |
fig = plt.figure(figsize=(20,8)) | |
# Allocate arrays | |
- Epot = numpy.zeros(lastfile+1) | |
- Ekin = numpy.zeros(lastfile+1) | |
- Erot = numpy.zeros(lastfile+1) | |
- Es = numpy.zeros(lastfile+1) | |
- Ev = numpy.zeros(lastfile+1) | |
- Es_dot = numpy.zeros(lastfile+1) | |
- Ev_dot = numpy.zeros(lastfile+1) | |
- Ebondpot = numpy.zeros(lastfile+1) | |
- Esum = numpy.zeros(lastfile+1) | |
+ t = numpy.zeros(lastfile-firststep) | |
+ Epot = numpy.zeros_like(t) | |
+ Ekin = numpy.zeros_like(t) | |
+ Erot = numpy.zeros_like(t) | |
+ Es = numpy.zeros_like(t) | |
+ Ev = numpy.zeros_like(t) | |
+ Es_dot = numpy.zeros_like(t) | |
+ Ev_dot = numpy.zeros_like(t) | |
+ Ebondpot = numpy.zeros_like(t) | |
+ Esum = numpy.zeros_like(t) | |
# Read energy values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose = False) | |
Epot[i] = sb.energy("pot") | |
t@@ -5925,8 +5928,8 @@ class sim: | |
Ebondpot[i] = sb.energy("bondpot") | |
Esum[i] = Epot[i] + Ekin[i] + Erot[i] + Es[i] + Ev[i] +\ | |
Ebondpot[i] | |
+ t[i] = sb.currentTime() | |
- t = numpy.linspace(0.0, sb.time_current, lastfile+1) | |
if outformat != 'txt': | |
# Potential energy | |
t@@ -6020,11 +6023,11 @@ class sim: | |
elif method == 'walls': | |
# Read energy values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose=False) | |
# Allocate arrays on first run | |
- if i == 0: | |
+ if i == firststep: | |
wforce = numpy.zeros((lastfile+1)*sb.nw[0],\ | |
dtype=numpy.float64).reshape((lastfile+1), sb.nw[0… | |
wvel = numpy.zeros((lastfile+1)*sb.nw[0],\ | |
t@@ -6096,14 +6099,14 @@ class sim: | |
elif method == 'triaxial': | |
# Read energy values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose = False) | |
vol = (sb.w_x[0]-sb.origo[2]) * (sb.w_x[1]-sb.w_x[2]) \ | |
* (sb.w_x[3] - sb.w_x[4]) | |
# Allocate arrays on first run | |
- if i == 0: | |
+ if i == firststep: | |
axial_strain = numpy.zeros(lastfile+1, dtype=numpy.float64) | |
deviatoric_stress =\ | |
numpy.zeros(lastfile+1, dtype=numpy.float64) | |
t@@ -6155,11 +6158,11 @@ class sim: | |
elif method == 'shear': | |
# Read stress values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose = False) | |
# First iteration: Allocate arrays and find constant values | |
- if i == 0: | |
+ if i == firststep: | |
# Shear displacement | |
self.xdisp = numpy.zeros(lastfile+1, dtype=numpy.float6… | |
t@@ -6186,7 +6189,7 @@ class sim: | |
w_x0 = sb.w_x[0] # Original height | |
A = sb.L[0] * sb.L[1] # Upper surface area | |
- if i == 1: | |
+ if i == firststep+1: | |
w_x0 = sb.w_x[0] # Original height | |
# Summation of shear stress contributions | |
t@@ -6269,7 +6272,7 @@ class sim: | |
try : | |
fh = open(filename, "w") | |
L = sb.L[2] - sb.origo[2] # Initial height | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
# format: shear distance [mm], sigma [kPa], tau [kPa], | |
# Dilation [%] | |
fh.write("{0}\t{1}\t{2}\t{3}\n".format(xdisp[i], | |
t@@ -6282,14 +6285,14 @@ class sim: | |
elif method == 'shear-displacement': | |
+ time = numpy.zeros(lastfile+1, dtype=numpy.float64) | |
# Read stress values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose = False) | |
# First iteration: Allocate arrays and find constant values | |
- if i == 0: | |
+ if i == firststep: | |
# Shear displacement | |
- time = numpy.zeros(lastfile+1, dtype=numpy.float64) | |
# Shear displacement | |
self.xdisp = numpy.zeros(lastfile+1, dtype=numpy.float6… | |
t@@ -6330,7 +6333,7 @@ class sim: | |
time[i] = sb.time_current[0] | |
- if i == 1: | |
+ if i == firststep+1: | |
w_x0 = sb.w_x[0] # Original height | |
# Summation of shear stress contributions | |
t@@ -6353,7 +6356,7 @@ class sim: | |
if self.fluid: | |
if i > 0: | |
self.phi_bar[i] = numpy.mean(sb.phi[:,:,0:wall0_iz]) | |
- if i == 1: | |
+ if i == firststep+1: | |
self.phi_bar[0] = self.phi_bar[1] | |
self.p_f_bar[i] = numpy.mean(sb.p_f[:,:,0:wall0_iz]) | |
self.p_f_top[i] = sb.p_f[0,0,-1] | |
t@@ -6486,7 +6489,7 @@ class sim: | |
#v = numpy.empty(sb.status()) | |
shearstrainrate = numpy.empty(sb.status()) | |
shearstrain = numpy.empty(sb.status()) | |
- for i in numpy.arange(sb.status()): | |
+ for i in numpy.arange(firststep, sb.status()): | |
sb.readstep(i+1, verbose=False) | |
#tau = sb.shearStress() | |
tau[i] = sb.w_tau_x # defined shear stress | |
t@@ -6545,7 +6548,7 @@ class sim: | |
t = numpy.zeros(sb.status()) | |
I = numpy.zeros(sb.status()) | |
- for i in numpy.arange(sb.status()): | |
+ for i in numpy.arange(firststep, sb.status()): | |
sb.readstep(i, verbose = False) | |
t[i] = sb.currentTime() | |
I[i] = sb.inertiaParameterPlanarShear() | |
t@@ -6567,11 +6570,11 @@ class sim: | |
elif method == 'mean-fluid-pressure': | |
# Read pressure values from simulation binaries | |
- for i in range(lastfile+1): | |
+ for i in numpy.arange(firststep, lastfile+1): | |
sb.readstep(i, verbose = False) | |
# Allocate arrays on first run | |
- if i == 0: | |
+ if i == firststep: | |
p_mean = numpy.zeros(lastfile+1, dtype=numpy.float64) | |
p_mean[i] = numpy.mean(sb.p_f) | |
t@@ -6608,7 +6611,7 @@ class sim: | |
pres = numpy.zeros((sb.num[2], sb.status())) | |
# Read pressure values from simulation binaries | |
- for i in numpy.arange(sb.status()): | |
+ for i in numpy.arange(firststep, sb.status()): | |
sb.readstep(i, verbose = False) | |
pres[:,i] = numpy.average(numpy.average(sb.p_f, axis=0), axis=… | |
shear_strain[i] = sb.shearStrain() | |
t@@ -6680,14 +6683,14 @@ class sim: | |
# cell midpoint cell positions | |
zpos_c = numpy.zeros(sb.num[2]) | |
dz = sb.L[2]/sb.num[2] | |
- for i in numpy.arange(sb.num[2]): | |
+ for i in numpy.arange(firststep, sb.num[2]): | |
zpos_c[i] = i*dz + 0.5*dz | |
shear_strain = numpy.zeros(sb.status()) | |
poros = numpy.zeros((sb.num[2], sb.status())) | |
# Read pressure values from simulation binaries | |
- for i in numpy.arange(sb.status()): | |
+ for i in numpy.arange(firststep, sb.status()): | |
sb.readstep(i, verbose = False) | |
poros[:,i] = numpy.average(numpy.average(sb.phi, axis=0),axis=… | |
shear_strain[i] = sb.shearStrain() |