Introduction
Introduction Statistics Contact Development Disclaimer Help
tsmall changes in scripts - sphere - GPU-based 3D discrete element method algor…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit dcbfc0526787a023a06cc57200e81ff87a3eb709
parent ef0e8ba6bae7051abf968c42029f18fa8352ba10
Author: Anders Damsgaard <[email protected]>
Date: Wed, 30 Oct 2013 09:12:01 +0100
small changes in scripts
Diffstat:
M python/darcy.py | 79 ++++++++++-------------------…
M python/segregation.py | 64 +++++++++++++++++++++++++++++…
M python/uniaxial.py | 2 +-
3 files changed, 85 insertions(+), 60 deletions(-)
---
diff --git a/python/darcy.py b/python/darcy.py
t@@ -14,7 +14,7 @@ plots = True
# Number of particles
-#np = 1e2
+#np = 2e2
np = 1e4
# Common simulation id
t@@ -37,6 +37,7 @@ init.defaultParams(mu_s = 0.4, mu_d = 0.4, nu = 8.9e-4)
# Initialize positions in random grid (also sets world size)
#init.initRandomGridPos(gridnum = numpy.array([9, 9, 1000]), periodic = 1, con…
+#init.initRandomGridPos(gridnum = numpy.array([10, 10, 1000]), periodic = 1, c…
#init.initRandomGridPos(gridnum = numpy.array([32, 32, 1000]), periodic = 1, c…
init.initRandomGridPos(gridnum = numpy.array([32, 32, 1000]), periodic = 1, co…
t@@ -44,14 +45,15 @@ init.initRandomGridPos(gridnum = numpy.array([32, 32, 1000…
#init.random2bonds(spacing=0.1)
# Set duration of simulation
-init.initTemporal(total = 7.0)
+init.initTemporal(total = 1.0)
+#init.initTemporal(total = 0.01)
init.time_file_dt[0] = 0.05
#init.time_file_dt[0] = init.time_dt[0]*0.99
#init.time_total[0] = init.time_dt[0]*2.0
#init.initTemporal(total = 0.5)
-#init.time_file_dt[0] = init.time_total[0]/5.0
+#init.time_dt[0] = 1.0e-5;
-#init.f_rho[2,2,4] = 5.0
+init.f_rho[2,2,4] = 1.1
#init.f_rho[6,6,10] = 1.1
#init.f_rho[:,:,-1] = 1.0001
t@@ -65,54 +67,21 @@ if (initialization == True):
init.run(darcyflow=True)
-### CONSOLIDATION ###
-
-for devs in devslist:
- # New class
- cons = Spherebin(np = init.np, nw = 1, sid = sim_id + "-cons-devs{}".forma…
-
- # Read last output file of initialization step
- lastf = status(sim_id + "-init")
- cons.readbin("../output/" + sim_id + "-init.output{:0=5}.bin".format(lastf…
-
- # Setup consolidation experiment
- cons.consolidate(deviatoric_stress = devs, periodic = init.periodic)
-
-
- # Set duration of simulation
- cons.initTemporal(total = 1.5)
- #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(darcyflow=True) # 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 = 2.0*devs, verbose = False)
-
- project = cons.sid
- lastfile = status(cons.sid)
- sb = Spherebin()
- for i in range(lastfile+1):
- fn = "../output/{0}.output{1:0=5}.bin".format(project, i)
- sb.sid = project + ".output{:0=5}".format(i)
- sb.readbin(fn, verbose = False)
- for y in range(0,sb.num[1]):
- sb.plotFluidDensities(y = y)
- sb.plotFluidVelocities(y = y)
+ 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 = "pres", max_val = 2.0*devs, verbose = False)
+
+ project = init.sid
+ lastfile = status(init.sid)
+ sb = Spherebin()
+ for i in range(lastfile+1):
+ fn = "../output/{0}.output{1:0=5}.bin".format(project, i)
+ sb.sid = project + ".output{:0=5}".format(i)
+ sb.readbin(fn, verbose = False)
+ for y in range(0,sb.num[1]):
+ sb.plotFluidDensities(y = y)
+ sb.plotFluidVelocities(y = y)
diff --git a/python/segregation.py b/python/segregation.py
t@@ -18,7 +18,7 @@ sim_id = "segregation"
# Deviatoric stress [Pa]
#devslist = [80e3, 10e3, 20e3, 40e3, 60e3, 120e3]
-devslist = [80e3]
+devslist = [120e3]
#devs = 0
### INITIALIZATION ###
t@@ -30,10 +30,10 @@ init = Spherebin(np = np, nd = 3, nw = 0, sid = sim_id + "…
init.generateRadii(radius_mean = 0.08)
# Use default params
-init.defaultParams(gamma_n = 0.0, mu_s = 0.3, mu_d = 0.3)
+init.defaultParams(gamma_n = 0.0, mu_s = 0.4, mu_d = 0.4)
# Initialize positions in random grid (also sets world size)
-hcells = np**(1.0/3.0)
+hcells = np**(1.0/3.0)*0.6
init.initRandomGridPos(gridnum = numpy.array([hcells, hcells, 1e9]), periodic …
# Decrease size of top particles
t@@ -115,7 +115,63 @@ for devs in devslist:
shear.readbin("../output/" + sim_id + "-cons-devs{}.output{:0=5}.bin".format…
# Setup shear experiment
- shear.shear(shear_strain_rate = 0.05, periodic = init.periodic)
+ #shear.shear(shear_strain_rate = 0.05, periodic = init.periodic)
+ shear_strain_rate = 0.05
+
+ ## Custom shear function
+ # Find lowest and heighest point
+ z_min = numpy.min(shear.x[:,2] - shear.radius)
+ z_max = numpy.max(shear.x[:,2] + shear.radius)
+
+ # the grid cell size is equal to the max. particle diameter
+ cellsize = shear.L[0] / shear.num[0]
+
+ # make grid one cell heigher to allow dilation
+ shear.num[2] += 1
+ shear.L[2] = shear.num[2] * cellsize
+
+ # zero kinematics
+ shear.zeroKinematics()
+
+ # set friction coefficients
+ shear.mu_s[0] = 0.5
+ shear.mu_d[0] = 0.5
+
+ # set the thickness of the horizons of fixed particles
+ #fixheight = 2*cellsize
+ #fixheight = cellsize
+
+ # Fix horizontal velocity to 0.0 of lowermost particles
+ d_max_below = numpy.max(shear.radius[numpy.nonzero(shear.x[:,2] <
+ (z_max-z_min)*0.3)])*2.0
+ #I = numpy.nonzero(shear.x[:,2] < (z_min + fixheight))
+ I = numpy.nonzero(shear.x[:,2] < (z_min + d_max_below))
+ shear.fixvel[I] = 1
+ shear.angvel[I,0] = 0.0
+ shear.angvel[I,1] = 0.0
+ shear.angvel[I,2] = 0.0
+ shear.vel[I,0] = 0.0 # x-dim
+ shear.vel[I,1] = 0.0 # y-dim
+
+ # Copy bottom fixed particles to top
+ z_offset = z_max-z_min
+ shearvel = (z_max-z_min)*shear_strain_rate
+ for i in I[0]:
+ x = shear.x[i,:] + numpy.array([0.0, 0.0, z_offset])
+ vel = numpy.array([shearvel, 0.0, 0.0])
+ shear.addParticle(x = x, radius = shear.radius[i], fixvel = 1, vel = vel)
+
+
+ # Set wall viscosities to zero
+ shear.gamma_wn[0] = 0.0
+ shear.gamma_wt[0] = 0.0
+
+ # Set wall friction coefficients to zero
+ shear.mu_ws[0] = 0.0
+ shear.mu_wd[0] = 0.0
+
+ # Readjust top wall
+ shear.adjustUpperWall()
# Set duration of simulation
#shear.initTemporal(total = 20.0)
diff --git a/python/uniaxial.py b/python/uniaxial.py
t@@ -4,7 +4,7 @@
from sphere import *
### EXPERIMENT SETUP ###
-initialization = True
+initialization = False
consolidation = True
rendering = True
plots = True
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.