Introduction
Introduction Statistics Contact Development Disclaimer Help
tMerge branch 'master' of github.com:anders-dc/sphere - sphere - GPU-based 3D d…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 5374a230e300340aededef87773a555e87243559
parent e8e839893bdaf652fcc6ecec92ecefc7bd1e7885
Author: Anders Damsgaard <[email protected]>
Date: Sat, 5 Mar 2016 18:21:50 +0100
Merge branch 'master' of github.com:anders-dc/sphere
Diffstat:
M README.rst | 7 +++----
A python/sigma-sideways-dry.sh | 15 +++++++++++++++
A python/sigma-sideways-starter.py | 183 +++++++++++++++++++++++++++++…
M python/sphere.py | 2 +-
4 files changed, 202 insertions(+), 5 deletions(-)
---
diff --git a/README.rst b/README.rst
t@@ -92,7 +92,7 @@ publications and presentations:
- Damsgaard, A., D.L. Egholm, J.A. Piotrowski, S. Tulaczyk, N.K. Larsen, and
C.F. Brædstrup (2015), A new methodology to simulate subglacial deformation…
- water saturated granular material, The Cryosphere, 9, 2183-2200,
+ water-saturated granular material, The Cryosphere, 9, 2183-2200,
`doi:10.5194/tc-9-2183-2015 <http://dx.doi.org/10.5194/tc-9-2183-2015>`_.
- Damsgaard, A., D.L. Egholm, J.A. Piotrowski, S. Tulaczyk, N.K. Larsen, and
C.F. Brædstrup (2014), Numerical modeling of particle-fluid mixtures in a
t@@ -125,7 +125,6 @@ publications and presentations:
Author
------
-Anders Damsgaard, `[email protected] <mailto:[email protected].…
-`blog <http://anders-dc.github.io>`_,
-`more contact information <https://cs.au.dk/~adc>`_.
+Anders Damsgaard, `[email protected] <mailto:[email protected]>`_,
+`webpage <https://cs.au.dk/~adc>`_.
diff --git a/python/sigma-sideways-dry.sh b/python/sigma-sideways-dry.sh
t@@ -0,0 +1,15 @@
+#!/bin/bash
+
+#SBATCH -o sigma-sideways-dry.%j.%N.out
+#SBATCH -p longq
+#SBATCH --nodes=1
+#SBATCH --gres=gpu:1
+#SBATCH -J sigma-sideways-dry
+#SBATCH --time=48:00:00
+
+module load gcc/4.8.5
+module load cuda75
+
+cd ~/code/sphere/python/
+python sigma-sideways-starter.py 0 0 1.0 2.0e-16 10000.0 2.080e-7 1.0
+
diff --git a/python/sigma-sideways-starter.py b/python/sigma-sideways-starter.py
t@@ -0,0 +1,183 @@
+#!/usr/bin/env python
+import sphere
+import numpy
+import sys
+
+# launch with:
+# $ ipython sigma-sideways-starter.py <device> <fluid> <c_phi> <k_c> <sigma_0>
+# <mu> <velfac>
+
+# start with
+# ipython sigma-sideways-starter.py 0 1 1.0 2.0e-16 10000.0 2.080e-7 1.0
+
+device = int(sys.argv[1])
+wet = int(sys.argv[2])
+c_phi = float(sys.argv[3])
+k_c = float(sys.argv[4])
+sigma0 = float(sys.argv[5])
+mu = float(sys.argv[6])
+velfac = float(sys.argv[7])
+
+if wet == 1:
+ fluid = True
+else:
+ fluid = False
+
+#sim = sphere.sim('halfshear-sigma0=' + str(sigma0), fluid=False)
+sim = sphere.sim('shear-sigma0=' + str(sigma0), fluid=False)
+sim.readlast()
+#sim.readbin('../input/shear-sigma0=10000.0-new.bin')
+#sim.scaleSize(0.01) # from 1 cm to 0.01 cm = 100 micro m (fine sand)
+
+sim.fluid = fluid
+if fluid:
+ #sim.id('halfshear-darcy-sigma0=' + str(sigma0) + '-k_c=' + str(k_c) + \
+ #'-mu=' + str(mu) + '-velfac=' + str(velfac) + '-shear')
+ sim.id('sw-darcy-sigma0=' + str(sigma0) + '-k_c=' + str(k_c) + \
+ '-mu=' + str(mu) + '-velfac=' + str(velfac) + '-noflux-shear')
+else:
+ sim.id('sw-darcy-sigma0=' + str(sigma0) + '-velfac=' + str(velfac) + \
+ '-noflux-shear')
+
+#sim.checkerboardColors(nx=6,ny=3,nz=6)
+sim.checkerboardColors(nx=6,ny=6,nz=6)
+sim.cleanup()
+sim.adjustUpperWall()
+sim.zeroKinematics()
+
+# customized shear function for sidewards shear
+def shearVelocitySideways(sim, shear_strain_rate = 1.0, shear_stress = False):
+ '''
+ Setup shear experiment either by a constant shear rate or a constant
+ shear stress. The shear strain rate is the shear velocity divided by
+ the initial height per second. The shear movement is along the positive
+ x axis. The function zeroes the tangential wall viscosity (gamma_wt) and
+ the wall friction coefficients (mu_ws, mu_wn).
+
+ :param shear_strain_rate: The shear strain rate [-] to use if
+ shear_stress isn't False.
+ :type shear_strain_rate: float
+ :param shear_stress: The shear stress value to use [Pa].
+ :type shear_stress: float or bool
+ '''
+
+ sim.nw[0] = 1
+
+ # Find lowest and heighest point
+ z_min = numpy.min(sim.x[:,2] - sim.radius)
+ z_max = numpy.max(sim.x[:,2] + sim.radius)
+
+ # the grid cell size is equal to the max. particle diameter
+ cellsize = sim.L[0] / sim.num[0]
+
+ # make grid one cell heigher to allow dilation
+ sim.num[2] += 1
+ sim.L[2] = sim.num[2] * cellsize
+
+ # zero kinematics
+ sim.zeroKinematics()
+
+ # Adjust grid and placement of upper wall
+ sim.wmode = numpy.array([1])
+
+ # Fix horizontal velocity to 0.0 of -x particles
+ d_max_below = numpy.max(sim.radius[numpy.nonzero(sim.x[:,1] <
+ (z_max-z_min)*0.3)])*2.0
+ I = numpy.nonzero(sim.x[:,2] < (z_min + d_max_below))
+ sim.fixvel[I] = 1
+ sim.angvel[I,0] = 0.0
+ sim.angvel[I,1] = 0.0
+ sim.angvel[I,2] = 0.0
+ sim.vel[I,0] = 0.0 # x-dim
+ sim.vel[I,1] = 0.0 # y-dim
+ sim.color[I] = -1
+
+ # Fix horizontal velocity to specific value of +x particles
+ d_max_top = numpy.max(sim.radius[numpy.nonzero(sim.x[:,1] >
+ (z_max-z_min)*0.7)])*2.0
+ I = numpy.nonzero(sim.x[:,1] > (z_max - d_max_top))
+ sim.fixvel[I] = 1
+ sim.angvel[I,0] = 0.0
+ sim.angvel[I,1] = 0.0
+ sim.angvel[I,2] = 0.0
+ if shear_stress == False:
+ prefactor = sim.x[I,1]/sim.L[1]
+ sim.vel[I,0] = prefactor*(z_max-z_min)*shear_strain_rate
+ else:
+ sim.vel[I,0] = 0.0
+ sim.wmode[0] = 3
+ sim.w_tau_x[0] = float(shear_stress)
+ sim.vel[I,1] = 0.0 # y-dim
+ sim.color[I] = -1
+
+ # Set wall tangential viscosity to zero
+ sim.gamma_wt[0] = 0.0
+
+ # Set wall friction coefficients to zero
+ sim.mu_ws[0] = 0.0
+ sim.mu_wd[0] = 0.0
+ return sim
+
+sim = shearVelocitySideways(sim, 1.0/20.0 * velfac)
+K_q_real = 36.4e9
+K_w_real = 2.2e9
+
+
+#K_q_sim = 1.16e9
+K_q_sim = 1.16e6
+sim.setStiffnessNormal(K_q_sim)
+sim.setStiffnessTangential(K_q_sim)
+K_w_sim = K_w_real/K_q_real * K_q_sim
+
+
+if fluid:
+ #sim.num[2] *= 2
+ sim.num[:] /= 2
+ #sim.L[2] *= 2.0
+ #sim.initFluid(mu = 1.787e-6, p = 600.0e3, cfd_solver = 1)
+ sim.initFluid(mu = mu, p = 0.0, cfd_solver = 1)
+ sim.setFluidTopFixedPressure()
+ #sim.setFluidTopFixedFlow()
+ sim.setFluidBottomNoFlow()
+ #sim.setFluidBottomFixedPressure()
+ #sim.setDEMstepsPerCFDstep(10)
+ sim.setMaxIterations(2e5)
+ sim.setPermeabilityPrefactor(k_c)
+ sim.setFluidCompressibility(1.0/K_w_sim)
+
+
+# frictionless side boundaries
+sim.periodicBoundariesX()
+
+# rearrange particle assemblage to accomodate frictionless side boundaries
+sim.x[:,1] += numpy.abs(numpy.min(sim.x[:,1] - sim.radius[:]))
+sim.L[1] = numpy.max(sim.x[:,1] + sim.radius[:])
+
+
+sim.w_sigma0[0] = sigma0
+sim.w_m[0] = numpy.abs(sigma0*sim.L[0]*sim.L[1]/sim.g[2])
+
+#sim.setStiffnessNormal(36.4e9 * 0.1 / 2.0)
+#sim.setStiffnessTangential(36.4e9/3.0 * 0.1 / 2.0)
+sim.setStiffnessNormal(K_q_sim)
+sim.setStiffnessTangential(K_q_sim)
+sim.mu_s[0] = 0.5
+sim.mu_d[0] = 0.5
+sim.setDampingNormal(0.0)
+sim.setDampingTangential(0.0)
+#sim.deleteAllParticles()
+#sim.fixvel[:] = -1.0
+
+sim.initTemporal(total = 20.0/velfac, file_dt = 0.01/velfac, epsilon=0.07)
+#sim.time_dt[0] *= 1.0e-2
+#sim.initTemporal(total = 1.0e-4, file_dt = 1.0e-5, epsilon=0.07)
+
+# Fix lowermost particles
+#dz = sim.L[2]/sim.num[2]
+#I = numpy.nonzero(sim.x[:,2] < 1.5*dz)
+#sim.fixvel[I] = 1
+
+sim.run(dry=True)
+
+sim.run(device=device)
+sim.writeVTKall()
diff --git a/python/sphere.py b/python/sphere.py
t@@ -3234,7 +3234,7 @@ class sim:
def wet(self):
'''
- Set the simulation to be dry (no fluids).
+ Set the simulation to be wet (total fluid saturation).
See also :func:`dry()`
'''
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.