thalfshear-darcy-starter-neumann.py - 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
---
thalfshear-darcy-starter-neumann.py (2258B)
---
1 #!/usr/bin/env python
2 import sphere
3 import numpy
4 import sys
5
6 # launch with:
7 # $ ipython halfshear-darcy-starter.py <device> <fluid> <c_phi> <k_c> <sigma_0> <mu> <velfac>
8
9 device = int(sys.argv[1])
10 wet = int(sys.argv[2])
11 c_phi = float(sys.argv[3])
12 k_c = float(sys.argv[4])
13 sigma0 = float(sys.argv[5])
14 mu = float(sys.argv[6])
15 velfac = float(sys.argv[7])
16
17 if wet == 1:
18 fluid = True
19 else:
20 fluid = False
21
22 sim = sphere.sim('halfshear-sigma0=' + str(sigma0), fluid=False)
23 print('Input: ' + sim.sid)
24 sim.readlast()
25
26 sim.fluid = fluid
27 if fluid:
28 sim.id('halfshear-darcy-sigma0=' + str(sigma0) + '-k_c=' + str(k_c) + \
29 '-mu=' + str(mu) + '-velfac=' + str(velfac) + '-shear-neu')
30 else:
31 sim.id('halfshear-sigma0=' + str(sigma0) + '-velfac=' + str(velfac) + \
32 '-shear')
33
34 sim.checkerboardColors(nx=6,ny=3,nz=6)
35 sim.cleanup()
36 sim.adjustUpperWall()
37 sim.zeroKinematics()
38
39 #sim.shear(0.0/20.0)
40 sim.shear(1.0/20.0 * velfac)
41 K_q_real = 36.4e9
42 K_w_real = 2.2e9
43 K_q_sim = 1.16e9
44 K_w_sim = K_w_real/K_q_real * K_q_sim
45
46 if fluid:
47 #sim.num[2] *= 2
48 sim.num[:] /= 2
49 #sim.L[2] *= 2.0
50 #sim.initFluid(mu = 1.787e-6, p = 600.0e3, cfd_solver = 1)
51 sim.initFluid(mu = mu, p = 0.0, cfd_solver = 1)
52 sim.setFluidBottomNoFlow()
53 #sim.setFluidTopFixedPressure()
54 sim.setFluidTopNoFlow()
55 #sim.setDEMstepsPerCFDstep(10)
56 sim.setMaxIterations(2e5)
57 sim.setPermeabilityPrefactor(k_c)
58 sim.setFluidCompressibility(1.0/K_w_sim)
59
60 sim.w_sigma0[0] = sigma0
61 sim.w_m[0] = numpy.abs(sigma0*sim.L[0]*sim.L[1]/sim.g[2])
62
63 #sim.setStiffnessNormal(36.4e9 * 0.1 / 2.0)
64 #sim.setStiffnessTangential(36.4e9/3.0 * 0.1 / 2.0)
65 sim.setStiffnessNormal(K_q_sim)
66 sim.setStiffnessTangential(K_q_sim)
67 sim.mu_s[0] = 0.5
68 sim.mu_d[0] = 0.5
69 sim.setDampingNormal(0.0)
70 sim.setDampingTangential(0.0)
71 #sim.deleteAllParticles()
72 #sim.fixvel[:] = -1.0
73
74 sim.initTemporal(total = 20.0/velfac, file_dt = 0.01/velfac, epsilon=0.07)
75 #sim.time_dt[0] *= 1.0e-2
76 #sim.initTemporal(total = 1.0e-4, file_dt = 1.0e-5, epsilon=0.07)
77
78 # Fix lowermost particles
79 #dz = sim.L[2]/sim.num[2]
80 #I = numpy.nonzero(sim.x[:,2] < 1.5*dz)
81 #sim.fixvel[I] = 1
82
83 sim.run(dry=True)
84 sim.run(device=device)
85 sim.writeVTKall()
86 #sim.visualize('walls')
87 #sim.visualize('fluid-pressure')