tadd initialization and consolidation script - 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 cb145bb36bca6fad2bdcdbe633d5c135eb3bf66a
(DIR) parent 2d6d6b6937b1b3894180194600a3ffdaa24f0e37
(HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
Date: Wed, 15 Jun 2016 17:30:26 -0700
add initialization and consolidation script
Diffstat:
A python/alejandro-init-cons.py | 103 +++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/python/alejandro-init-cons.py b/python/alejandro-init-cons.py
t@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+
+# Import sphere functionality
+import sphere
+
+# EXPERIMENT SETUP #
+initialization = True
+consolidation = True
+plots = True
+
+# CUDA device to use
+device = 0
+
+# Number of particles
+np = 2e3
+
+# Common simulation id
+sim_id = "alejandro"
+
+# Consolidation stress [Pa]
+N = 10e3
+
+# INITIALIZATION #
+
+# New class
+init = sphere.sim(np=np, nd=3, nw=0, sid=sim_id + "-init")
+
+# Save radii
+init.generateRadii(mean=0.01)
+
+# Use default params
+init.defaultParams(k_n=1.16e7, k_t=1.16e7, gamma_n=100.0, mu_s=0.5, mu_d=0.5)
+
+# Add gravity
+init.g[2] = -9.81
+
+# Periodic x and y boundaries
+init.periodicBoundariesX()
+
+# Initialize positions in random grid (also sets world size)
+hcells = np**(1.0/3.0)
+init.initRandomGridPos(gridnum=[hcells, hcells, 1e9])
+
+# Set duration of simulation
+init.initTemporal(total=10.0, epsilon=0.07)
+
+if (initialization):
+
+ # Run sphere
+ init.run(dry=True)
+ init.run(device=device)
+
+ if (plots):
+ # Make a graph of energies
+ init.visualize('energy')
+
+ init.writeVTKall()
+
+
+# CONSOLIDATION #
+
+# New class
+cons = sphere.sim(
+ np=init.np,
+ nw=1,
+ sid=sim_id +
+ "-cons-N={}".format(N))
+
+# Read last output file of initialization step
+lastf = sphere.status(sim_id + "-init")
+cons.readbin(
+ "../output/" +
+ sim_id +
+ "-init.output{:0=5}.bin".format(lastf),
+ verbose=False)
+
+cons.periodicBoundariesX()
+
+# Setup consolidation experiment
+cons.consolidate(normal_stress=N)
+cons.w_m[0] = cons.totalMass()
+
+# Disable all viscosities
+cons.gamma_n[0] = 0.0
+cons.gamma_t[0] = 0.0
+cons.gamma_wn[0] = 0.0
+cons.gamma_wt[0] = 0.0
+
+# Set duration of simulation
+cons.initTemporal(total=5.0, epsilon=0.07)
+
+if (consolidation):
+
+ # Run sphere
+ cons.run(dry=True) # show values, don't run
+ cons.run(device=device) # run
+
+ if (plots):
+ # Make a graph of energies
+ cons.visualize('energy')
+ cons.visualize('walls')
+
+ cons.writeVTKall()