tadded triaxial and uniaxial example scripts - 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 95180945f0ef9f2bf1ad44f25f43ef7fec95c52d
(DIR) parent a715612236ad2daa95f223638876f0b63b387605
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Wed, 21 Aug 2013 14:47:23 +0200
added triaxial and uniaxial example scripts
Diffstat:
A python/triaxial.py | 90 +++++++++++++++++++++++++++++++
A python/uniaxial.py | 56 +++++++++++++++++++++++++++++++
2 files changed, 146 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/python/triaxial.py b/python/triaxial.py
t@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+
+# Import sphere functionality
+from sphere import *
+
+### EXPERIMENT SETUP ###
+initialization = True
+consolidation = True
+rendering = True
+plots = True
+
+# Number of particles
+np = 2e3
+
+# Common simulation id
+sim_id = "triaxial-test"
+
+# Normal stress (sigma_3)
+devs = 10e3
+
+
+### INITIALIZATION ###
+
+# New class
+init = Spherebin(np = np, nd = 3, nw = 0, sid = sim_id + "-init")
+
+# Save radii
+init.generateRadii(radius_mean = 0.05)
+
+# Use default params
+init.defaultParams(gamma_n = 0.0, mu_s = 0.4, mu_d = 0.4)
+
+# Initialize positions in random grid (also sets world size)
+init.initRandomGridPos(gridnum = numpy.array([12, 12, 1000]), periodic = 1, contactmodel = 2)
+
+# Set duration of simulation
+init.initTemporal(total = 5.0)
+
+if (initialization == True):
+ # Write input file for sphere
+ init.writebin()
+
+ # Run sphere
+ init.run()
+
+ if (plots == True):
+ # Make a graph of energies
+ visualize(init.sid, "energy", savefig=True, outformat='png')
+
+ #if (rendering == True):
+ # Render images with raytracer
+ #init.render(method = "angvel", max_val = 0.3, verbose = False)
+
+
+### CONSOLIDATION ###
+
+# New class
+cons = Spherebin(np = np, nw = 1, sid = sim_id + "-cons")
+
+# Read last output file of initialization step
+lastf = status(sim_id + "-init")
+cons.readbin("../output/" + sim_id + "-init.output{:0=5}.bin".format(lastf), verbose=False)
+
+# Setup triaxial experiment
+cons.triaxial(wvel = -cons.L[2]*0.01, deviatoric_stress = devs) # one percent of height per second
+
+# Set duration of simulation
+cons.initTemporal(total = 5.0)
+
+cons.w_m[:] *= 0.001
+
+
+
+if (consolidation == True):
+ # Write input file for sphere
+ cons.writebin()
+
+ # Run sphere
+ cons.run(dry=True) # show values, don't run
+ cons.run() # run
+
+ if (plots == True):
+ # Make a graph of energies
+ visualize(cons.sid, "energy", savefig=True, outformat='png')
+ visualize(cons.sid, "walls", savefig=True, outformat='png')
+
+ if (rendering == True):
+ # Render images with raytracer
+ cons.render(method = "pres", max_val = 1e4, verbose = False)
+
(DIR) diff --git a/python/uniaxial.py b/python/uniaxial.py
t@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+# Import sphere functionality
+from sphere import *
+
+### EXPERIMENT SETUP ###
+consolidation = True
+rendering = True
+plots = True
+
+# Number of particles
+np = 2e3
+
+# Common simulation id
+sim_id = "uniaxial-test"
+
+
+### CONSOLIDATION ###
+
+# New class
+cons = Spherebin(np = np, nw = 1, sid = sim_id + "-cons")
+
+# Read last output file of initialization step
+lastf = status("shear-test-init")
+cons.readbin("../output/shear-test-init.output{:0=5}.bin".format(lastf), verbose=False)
+
+# Setup consolidation experiment
+cons.uniaxialStrainRate(wvel = -cons.L[2]*0.05) # five percent of height per second
+
+# Set duration of simulation
+cons.initTemporal(total = 3.0)
+#cons.initTemporal(total = 0.0019, file_dt = 0.00009)
+#cons.initTemporal(total = 0.0019, file_dt = 1e-6)
+#cons.initTemporal(total = 0.19, file_dt = 0.019)
+
+cons.w_m[0] *= 0.001
+
+
+
+if (consolidation == True):
+ # Write input file for sphere
+ cons.writebin()
+
+ # Run sphere
+ cons.run(dry=True) # show values, don't run
+ cons.run() # run
+
+ if (plots == True):
+ # Make a graph of energies
+ visualize(cons.sid, "energy", savefig=True, outformat='png')
+ visualize(cons.sid, "walls", savefig=True, outformat='png')
+
+ if (rendering == True):
+ # Render images with raytracer
+ cons.render(method = "pres", max_val = 1e4, verbose = False)
+