talejandro-init-cons.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
---
talejandro-init-cons.py (1968B)
---
1 #!/usr/bin/env python
2
3 # Import sphere functionality
4 import sphere
5
6 # EXPERIMENT SETUP #
7 initialization = True
8 consolidation = True
9 plots = True
10
11 # CUDA device to use
12 device = 0
13
14 # Number of particles
15 np = 6634
16
17 # Common simulation id
18 sim_id = "alejandro"
19
20 # Consolidation stress [Pa]
21 N = 10e3
22
23 # INITIALIZATION #
24
25 # New class
26 init = sphere.sim(np=np, nd=3, nw=0, sid=sim_id + "-init")
27
28 # Save radii
29 init.generateRadii(mean=0.01)
30
31 # Add viscous damping to quickly dissipate kinetic energy
32 init.defaultParams(k_n=1.16e7, k_t=1.16e7, gamma_n=100.0, mu_s=0.5, mu_d=0.5)
33 init.gamma_wn[0] = 10000.0
34
35 # Add gravity
36 init.g[2] = -9.81
37
38 # Periodic x and y boundaries
39 init.periodicBoundariesX()
40
41 # Initialize positions in random grid (also sets world size)
42 init.initRandomGridPos(gridnum=[24, 24, 1e9])
43
44 # Set duration of simulation
45 init.initTemporal(total=10.0, epsilon=0.07)
46
47 if (initialization):
48
49 # Run sphere
50 init.run(dry=True)
51 init.run(device=device)
52
53 if (plots):
54 # Make a graph of energies
55 init.visualize('energy')
56
57 init.writeVTKall()
58
59
60 # CONSOLIDATION #
61
62 # New class
63 cons = sphere.sim(
64 np=init.np,
65 nw=1,
66 sid=sim_id +
67 "-cons-N={}".format(N))
68
69 # Read last output file of initialization step
70 lastf = sphere.status(sim_id + "-init")
71 cons.readbin(
72 "../output/" +
73 sim_id +
74 "-init.output{:0=5}.bin".format(lastf),
75 verbose=False)
76
77 cons.periodicBoundariesX()
78
79 # Setup consolidation experiment
80 cons.consolidate(normal_stress=N)
81 cons.w_m[0] = cons.totalMass()
82
83 # Disable all viscosities
84 cons.gamma_n[0] = 0.0
85 cons.gamma_t[0] = 0.0
86 cons.gamma_wn[0] = 0.0
87 cons.gamma_wt[0] = 0.0
88
89 # Set duration of simulation
90 cons.initTemporal(total=5.0, epsilon=0.07)
91
92 if (consolidation):
93
94 # Run sphere
95 cons.run(dry=True) # show values, don't run
96 cons.run(device=device) # run
97
98 if (plots):
99 # Make a graph of energies
100 cons.visualize('energy')
101 cons.visualize('walls')
102
103 cons.writeVTKall()