tadded tests for hydrological parameters - 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 c3db40ae9c7b5fcc85b2b2818ab59cb2b82f196d
(DIR) parent d2c4cf8394c22630b74b581fb67a0f44b7520c3b
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Fri, 4 Jul 2014 14:44:27 +0200
added tests for hydrological parameters
Diffstat:
A python/diffusivity.py | 83 +++++++++++++++++++++++++++++++
A python/permeability.py | 26 ++++++++++++++++++++++++++
2 files changed, 109 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/python/diffusivity.py b/python/diffusivity.py
t@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+import sphere
+import numpy
+
+sid = 'diffusivity'
+
+## Initialization from loose packing to a gravitationally collapsed state
+## without fluids
+#sim = sphere.sim(sid + '-init', np = 2400, fluid = False)
+sim = sphere.sim(sid + '-init', np = 10000, fluid = False)
+#sim.cleanup()
+sim.radius[:] = 0.01
+#sim.initRandomGridPos(gridnum = [12, 12, 9000])
+sim.initRandomGridPos(gridnum = [24, 24, 9000])
+sim.initTemporal(total = 5.0, file_dt = 0.05, epsilon=0.07)
+sim.g[2] = -9.81
+sim.periodicBoundariesXY()
+#sim.run(dry=True)
+#sim.run()
+#sim.writeVTKall()
+
+# Stack two init assemblages on top of each other
+sim.readlast()
+max_z = numpy.max(sim.x[:,2] + sim.radius[:])
+for i in numpy.arange(sim.np):
+ sim.addParticle(
+ [sim.x[i,0], sim.x[i,1], sim.x[i,2] + max_z],
+ radius=sim.radius[i])
+
+cellsize_min = 2.1*numpy.max(sim.radius)
+sim.L[2] = numpy.max(sim.x[:,2] + sim.radius[:])
+#sim.num[0] = numpy.ceil((sim.L[0]-sim.origo[0])/cellsize_min)
+#sim.num[1] = numpy.ceil((sim.L[1]-sim.origo[1])/cellsize_min)
+#sim.num[2] = numpy.ceil((sim.L[2]-sim.origo[2])/cellsize_min)
+sim.initGrid()
+
+## Relaxation step
+sim.sid = sid + '-relax'
+sim.initTemporal(total = 2.0, file_dt = 0.05, epsilon=0.07)
+sim.mu_s[0] = 0.3
+sim.mu_d[0] = 0.3
+sim.zeroKinematics()
+sim.periodicBoundariesXY()
+#sim.run(dry=True)
+#sim.run()
+#sim.writeVTKall()
+
+## Consolidation from a top wall with fluids
+sim.readlast()
+sim.sid = sid + '-cons-wet'
+
+# Checkerboard colors
+x_min = numpy.min(sim.x[:,0])
+x_max = numpy.max(sim.x[:,0])
+y_min = numpy.min(sim.x[:,1])
+y_max = numpy.max(sim.x[:,1])
+z_min = numpy.min(sim.x[:,2])
+z_max = numpy.max(sim.x[:,2])
+color_nx = 6
+color_ny = 6
+color_nz = 6
+for i in range(sim.np):
+ ix = numpy.floor((sim.x[i,0] - x_min)/(x_max/color_nx))
+ iy = numpy.floor((sim.x[i,1] - y_min)/(y_max/color_ny))
+ iz = numpy.floor((sim.x[i,2] - z_min)/(z_max/color_nz))
+ sim.color[i] = (-1)**ix + (-1)**iy + (-1)**iz
+
+sim.cleanup()
+sim.adjustUpperWall()
+sim.zeroKinematics()
+sim.consolidate(normal_stress = 10.0e3)
+sim.initFluid(mu = 17.87e-4, p = 1.0e5, hydrostatic = True) # mu = water at 0 deg C
+#sim.initFluid(mu = 8.9e-4, p = 1.0e5, hydrostatic = True) # mu = water at 20 deg C
+sim.setFluidBottomNoFlow()
+sim.setFluidTopFixedPressure()
+#sim.setDEMstepsPerCFDstep(100)
+sim.setDEMstepsPerCFDstep(10)
+sim.initTemporal(total = 5.0, file_dt = 0.01, epsilon=0.07)
+sim.run(dry=True)
+sim.run()
+sim.writeVTKall()
+sim.visualize('walls')
+sim.visualize('fluid-pressure')
(DIR) diff --git a/python/permeability.py b/python/permeability.py
t@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+import sphere
+import numpy
+
+
+for dp in [1.0e3, 2.0e3, 4.0e3, 10.0e3, 20.0e3, 40.0e3, 80.0e3]:
+ # Read initial configuration
+ sim.sid = 'diffusivity-relax'
+ sim.readlast()
+
+ sim.sid = 'permeability-dp=' + str(dp)
+ sim.cleanup()
+
+ sim.g[2] = -9.81
+ sim.nw[0] = 0
+ sim.initGrid()
+ sim.zeroKinematics()
+ sim.initFluid(mu = 17.87e-4, p = 1.0e5, hydrostatic=True) # mu = water at 0 deg C
+ sim.setFluidTopFixedPressure()
+ sim.p_f[:,:,-1] = dp
+ #sim.setDEMstepsPerCFDstep(100)
+ sim.setDEMstepsPerCFDstep(10)
+ sim.initTemporal(total = 2.0, file_dt = 0.01, epsilon=0.07)
+ sim.run(dry=True)
+ sim.run()
+ sim.writeVTKall()