Introduction
Introduction Statistics Contact Development Disclaimer Help
twall.jl - Granular.jl - Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl
Log
Files
Refs
README
LICENSE
---
twall.jl (18726B)
---
1 #!/usr/bin/env julia
2
3 # Check the basic dynamic wall functionality
4
5 @info "# Test wall initialization"
6 @info "Testing argument value checks"
7 sim = Granular.createSimulation()
8 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 2., verbose=false)
9 @test_throws ErrorException Granular.addWallLinearFrictionless!(sim,
10 [.1, .1,…
11 1.)
12 @test_throws ErrorException Granular.addWallLinearFrictionless!(sim,
13 [1., 1.],
14 1.)
15 @test_throws ErrorException Granular.addWallLinearFrictionless!(sim,
16 [.1, .1,…
17 1.)
18 @test_throws ErrorException Granular.addWallLinearFrictionless!(sim,
19 [0., 1.,…
20 bc="asdf…
21 sim = Granular.createSimulation()
22 @test_throws ErrorException Granular.addWallLinearFrictionless!(sim, [1.…
23 1.)
24
25
26 @info "Check that wall mass equals total grain mass and max. thickness"
27 sim = Granular.createSimulation()
28 @test length(sim.walls) == 0
29 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 2., verbose=false)
30 sim.grains[1].mass = 1.0
31 Granular.addWallLinearFrictionless!(sim, [1., 0.], 1., verbose=true)
32 @test length(sim.walls) == 1
33 @test sim.walls[1].mass ≈ 1.0
34 @test sim.walls[1].thickness ≈ 2.0
35
36 @info "Test wall surface area and defined normal stress"
37 sim = Granular.createSimulation()
38 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
39 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 2., verbose=false)
40 sim.grains[1].mass = 1.0
41 Granular.addWallLinearFrictionless!(sim, [1., 0.], 1., verbose=false)
42 Granular.addWallLinearFrictionless!(sim, [0., 1.], 1., verbose=false)
43 @test length(sim.walls) == 2
44 @test sim.walls[1].mass ≈ 1.0
45 @test sim.walls[1].thickness ≈ 2.0
46 @test sim.walls[2].mass ≈ 1.0
47 @test sim.walls[2].thickness ≈ 2.0
48 @test Granular.getWallSurfaceArea(sim, 1) ≈ 20.0*2.0
49 @test Granular.getWallSurfaceArea(sim, 2) ≈ 10.0*2.0
50
51 sim.walls[1].normal_stress = 1.0
52 @test Granular.getWallNormalStress(sim, wall_index=1, stress_type="defin…
53 sim.walls[1].force = 1.0
54 @test Granular.getWallNormalStress(sim, wall_index=1, stress_type="effec…
55 @test_throws ErrorException Granular.getWallNormalStress(sim, wall_index…
56
57 sim.walls[1].normal = [1.0, 1.0, 1.0]
58 @test_throws ErrorException Granular.getWallSurfaceArea(sim, 1)
59 @test_throws ErrorException Granular.getWallSurfaceArea(sim, [1.,1.], 0.…
60
61 @info "# Test wall-grain interaction: elastic"
62
63 @info "Wall present but no contact"
64 sim = Granular.createSimulation()
65 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
66 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
67 Granular.addWallLinearFrictionless!(sim, [1., 0.], -1.01, verbose=false)
68 Granular.setTimeStep!(sim, verbose=false)
69 Granular.interactWalls!(sim)
70 @test sim.walls[1].force ≈ 0.
71 @test sim.grains[1].force[1] ≈ 0.
72 @test sim.grains[1].force[2] ≈ 0.
73
74 @info "Wall present but no contact"
75 sim = Granular.createSimulation()
76 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
77 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
78 Granular.addWallLinearFrictionless!(sim, [1., 0.], +2.01, verbose=false)
79 Granular.setTimeStep!(sim, verbose=false)
80 Granular.interactWalls!(sim)
81 @test sim.walls[1].force ≈ 0.
82 @test sim.grains[1].force[1] ≈ 0.
83 @test sim.grains[1].force[2] ≈ 0.
84
85 @info "Wall at -x"
86 sim = Granular.createSimulation()
87 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
88 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., youngs_modulus=0.,
89 verbose=false)
90 Granular.addWallLinearFrictionless!(sim, [1., 0.], -1. + .01, verbose=fa…
91 Granular.setTimeStep!(sim, verbose=false)
92 Granular.interactWalls!(sim)
93 @test sim.walls[1].force < 0.
94 @test sim.grains[1].force[1] > 0.
95 @test sim.grains[1].force[2] ≈ 0.
96
97 @info "Wall at -x"
98 sim = Granular.createSimulation()
99 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
100 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
101 Granular.addWallLinearFrictionless!(sim, [1., 0.], -1. + .01, verbose=fa…
102 Granular.setTimeStep!(sim, verbose=false)
103 Granular.interactWalls!(sim)
104 @test sim.walls[1].force < 0.
105 @test sim.grains[1].force[1] > 0.
106 @test sim.grains[1].force[2] ≈ 0.
107
108 @info "Wall at +x"
109 sim = Granular.createSimulation()
110 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
111 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
112 Granular.addWallLinearFrictionless!(sim, [1., 0.], +1. - .01, verbose=fa…
113 Granular.setTimeStep!(sim, verbose=false)
114 Granular.interactWalls!(sim)
115 @test sim.walls[1].force > 0.
116 @test sim.grains[1].force[1] < 0.
117 @test sim.grains[1].force[2] ≈ 0.
118
119 @info "Wall at -y"
120 sim = Granular.createSimulation()
121 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
122 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
123 Granular.addWallLinearFrictionless!(sim, [0., 1.], -1. + .01, verbose=fa…
124 Granular.setTimeStep!(sim, verbose=false)
125 Granular.interactWalls!(sim)
126 @test sim.walls[1].force < 0.
127 @test sim.grains[1].force[1] ≈ 0.
128 @test sim.grains[1].force[2] > 0.
129
130 @info "Wall at +y"
131 sim = Granular.createSimulation()
132 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
133 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
134 Granular.addWallLinearFrictionless!(sim, [0., 1.], +1. - .01, verbose=fa…
135 Granular.setTimeStep!(sim, verbose=false)
136 Granular.interactWalls!(sim)
137 @test sim.walls[1].force > 0.
138 @test sim.grains[1].force[1] ≈ 0.
139 @test sim.grains[1].force[2] < 0.
140
141 @info "# Test wall-grain interaction: elastic-viscous"
142
143 @info "Wall present but no contact"
144 sim = Granular.createSimulation()
145 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
146 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
147 Granular.addWallLinearFrictionless!(sim, [1., 0.], -1.01, verbose=false)
148 sim.walls[1].contact_viscosity_normal = 1e3
149 Granular.setTimeStep!(sim, verbose=false)
150 Granular.interactWalls!(sim)
151 @test sim.walls[1].force ≈ 0.
152 @test sim.grains[1].force[1] ≈ 0.
153 @test sim.grains[1].force[2] ≈ 0.
154
155 @info "Wall present but no contact"
156 sim = Granular.createSimulation()
157 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
158 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
159 Granular.addWallLinearFrictionless!(sim, [1., 0.], +2.01, verbose=false)
160 sim.walls[1].contact_viscosity_normal = 1e3
161 Granular.setTimeStep!(sim, verbose=false)
162 Granular.interactWalls!(sim)
163 @test sim.walls[1].force ≈ 0.
164 @test sim.grains[1].force[1] ≈ 0.
165 @test sim.grains[1].force[2] ≈ 0.
166
167 @info "Wall at -x"
168 sim = Granular.createSimulation()
169 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
170 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
171 Granular.addWallLinearFrictionless!(sim, [1., 0.], -1. + .01, verbose=fa…
172 sim.walls[1].contact_viscosity_normal = 1e3
173 Granular.setTimeStep!(sim, verbose=false)
174 Granular.interactWalls!(sim)
175 @test sim.walls[1].force < 0.
176 @test sim.grains[1].force[1] > 0.
177 @test sim.grains[1].force[2] ≈ 0.
178
179 @info "Wall at +x"
180 sim = Granular.createSimulation()
181 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
182 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
183 Granular.addWallLinearFrictionless!(sim, [1., 0.], +1. - .01, verbose=fa…
184 sim.walls[1].contact_viscosity_normal = 1e3
185 Granular.setTimeStep!(sim, verbose=false)
186 Granular.interactWalls!(sim)
187 @test sim.walls[1].force > 0.
188 @test sim.grains[1].force[1] < 0.
189 @test sim.grains[1].force[2] ≈ 0.
190
191 @info "Wall at -y"
192 sim = Granular.createSimulation()
193 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
194 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
195 Granular.addWallLinearFrictionless!(sim, [0., 1.], -1. + .01, verbose=fa…
196 sim.walls[1].contact_viscosity_normal = 1e3
197 Granular.setTimeStep!(sim, verbose=false)
198 Granular.interactWalls!(sim)
199 @test sim.walls[1].force < 0.
200 @test sim.grains[1].force[1] ≈ 0.
201 @test sim.grains[1].force[2] > 0.
202
203 @info "Wall at +y"
204 sim = Granular.createSimulation()
205 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
206 Granular.addGrainCylindrical!(sim, [ 0., 0.], 1., 2., verbose=false)
207 Granular.addWallLinearFrictionless!(sim, [0., 1.], +1. - .01, verbose=fa…
208 sim.walls[1].contact_viscosity_normal = 1e3
209 Granular.setTimeStep!(sim, verbose=false)
210 Granular.interactWalls!(sim)
211 @test sim.walls[1].force > 0.
212 @test sim.grains[1].force[1] ≈ 0.
213 @test sim.grains[1].force[2] < 0.
214
215 @info "Full collision with wall"
216 sim = Granular.createSimulation()
217 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
218 Granular.addGrainCylindrical!(sim, [1.2, 0.5], 1., 2., verbose=false)
219 Granular.addWallLinearFrictionless!(sim, [1., 0.], 0., verbose=false)
220 sim.walls[1].contact_viscosity_normal = 1e3
221 sim.grains[1].lin_vel[1] = -0.2
222 Granular.setTimeStep!(sim, verbose=false)
223 Granular.setTotalTime!(sim, 5.)
224 lin_vel0 = sim.grains[1].lin_vel
225 Granular.run!(sim)
226 @test sim.grains[1].lin_vel[1] < abs(lin_vel0[1])
227 @test sim.grains[1].lin_vel[2] ≈ 0.
228 lin_vel1 = sim.grains[1].lin_vel
229
230 sim = Granular.createSimulation()
231 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
232 Granular.addGrainCylindrical!(sim, [1.2, 0.5], 1., 2., verbose=false)
233 Granular.addWallLinearFrictionless!(sim, [1., 0.], 0., verbose=false)
234 sim.walls[1].contact_viscosity_normal = 1e4
235 sim.grains[1].lin_vel[1] = -0.2
236 Granular.setTimeStep!(sim, verbose=false)
237 Granular.setTotalTime!(sim, 5.)
238 lin_vel0 = sim.grains[1].lin_vel
239 Granular.run!(sim)
240 @test sim.grains[1].lin_vel[1] < abs(lin_vel0[1])
241 @test sim.grains[1].lin_vel[1] < lin_vel1[1]
242 @test sim.grains[1].lin_vel[2] ≈ 0.
243
244
245 @info "# Testing wall dynamics"
246
247 @info "Wall present, no contact, fixed (default)"
248 sim = Granular.createSimulation()
249 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
250 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
251 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01, verbose=false)
252 Granular.setTimeStep!(sim, verbose=false)
253 Granular.interactWalls!(sim)
254 Granular.updateWallKinematics!(sim)
255 @test sim.walls[1].force ≈ 0.
256 @test sim.walls[1].acc ≈ 0.
257 @test sim.walls[1].vel ≈ 0.
258 @test sim.walls[1].pos ≈ -0.01
259 @test sim.grains[1].force[1] ≈ 0.
260 @test sim.grains[1].force[2] ≈ 0.
261
262 @info "Wall present, no contact, fixed (TY2)"
263 sim = Granular.createSimulation()
264 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
265 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
266 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01, verbose=false)
267 Granular.setTimeStep!(sim, verbose=false)
268 Granular.interactWalls!(sim)
269 Granular.updateWallKinematics!(sim, method="Two-term Taylor")
270 @test sim.walls[1].force ≈ 0.
271 @test sim.walls[1].acc ≈ 0.
272 @test sim.walls[1].vel ≈ 0.
273 @test sim.walls[1].pos ≈ -0.01
274 @test sim.grains[1].force[1] ≈ 0.
275 @test sim.grains[1].force[2] ≈ 0.
276
277 @info "Wall present, no contact, fixed (TY3)"
278 sim = Granular.createSimulation()
279 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
280 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
281 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01, verbose=false)
282 Granular.setTimeStep!(sim, verbose=false)
283 Granular.interactWalls!(sim)
284 @test_throws ErrorException Granular.updateWallKinematics!(sim, method="…
285 Granular.updateWallKinematics!(sim, method="Three-term Taylor")
286 @test sim.walls[1].force ≈ 0.
287 @test sim.walls[1].acc ≈ 0.
288 @test sim.walls[1].vel ≈ 0.
289 @test sim.walls[1].pos ≈ -0.01
290 @test sim.grains[1].force[1] ≈ 0.
291 @test sim.grains[1].force[2] ≈ 0.
292
293 @info "Wall present, contact, fixed"
294 sim = Granular.createSimulation()
295 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
296 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
297 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01, verbose=false)
298 Granular.setTimeStep!(sim, verbose=false)
299 Granular.interactWalls!(sim)
300 Granular.updateWallKinematics!(sim)
301 @test sim.walls[1].acc ≈ 0.
302 @test sim.walls[1].vel ≈ 0.
303 @test sim.walls[1].pos ≈ -0.01
304
305 @info "Wall present, no contact, velocity BC"
306 sim = Granular.createSimulation()
307 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
308 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
309 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01,
310 bc="velocity", vel=1.0,
311 verbose=false)
312 Granular.setTimeStep!(sim, verbose=false)
313 Granular.interactWalls!(sim)
314 Granular.updateWallKinematics!(sim)
315 @test sim.walls[1].force ≈ 0.
316 @test sim.walls[1].acc ≈ 0.
317 @test sim.walls[1].vel ≈ 1.
318 @test sim.walls[1].pos > -0.01
319 @test sim.grains[1].force[1] ≈ 0.
320 @test sim.grains[1].force[2] ≈ 0.
321
322 @info "Wall present, no contact, velocity BC (TY2)"
323 sim = Granular.createSimulation()
324 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
325 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
326 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01,
327 bc="velocity", vel=1.0,
328 verbose=false)
329 Granular.setTimeStep!(sim, verbose=false)
330 Granular.interactWalls!(sim)
331 Granular.updateWallKinematics!(sim, method="Two-term Taylor")
332 @test sim.walls[1].force ≈ 0.
333 @test sim.walls[1].acc ≈ 0.
334 @test sim.walls[1].vel ≈ 1.
335 @test sim.walls[1].pos > -0.01
336 @test sim.grains[1].force[1] ≈ 0.
337 @test sim.grains[1].force[2] ≈ 0.
338
339 @info "Wall present, no contact, velocity BC (TY3)"
340 sim = Granular.createSimulation()
341 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
342 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
343 Granular.addWallLinearFrictionless!(sim, [1., 0.], -0.01,
344 bc="velocity", vel=1.0,
345 verbose=false)
346 Granular.setTimeStep!(sim, verbose=false)
347 Granular.interactWalls!(sim)
348 @test_throws ErrorException Granular.updateWallKinematics!(sim, method="…
349 Granular.updateWallKinematics!(sim, method="Three-term Taylor")
350 @test sim.walls[1].force ≈ 0.
351 @test sim.walls[1].acc ≈ 0.
352 @test sim.walls[1].vel ≈ 1.
353 @test sim.walls[1].pos > -0.01
354 @test sim.grains[1].force[1] ≈ 0.
355 @test sim.grains[1].force[2] ≈ 0.
356
357 @info "Wall present, contact, velocity BC (TY2)"
358 sim = Granular.createSimulation()
359 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
360 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
361 Granular.addWallLinearFrictionless!(sim, [1., 0.], 0.1,
362 bc="velocity", vel=1.0,
363 verbose=false)
364 Granular.setTimeStep!(sim, verbose=false)
365 Granular.interactWalls!(sim)
366 Granular.updateWallKinematics!(sim, method="Two-term Taylor")
367 @test sim.walls[1].bc == "velocity"
368 @test sim.walls[1].acc ≈ 0.
369 @test sim.walls[1].vel ≈ 1.
370 @test sim.walls[1].pos > -0.9
371
372 @info "Wall present, contact, velocity BC (TY2)"
373 sim = Granular.createSimulation()
374 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [10., 20., 1.0])
375 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 2., verbose=false)
376 Granular.addWallLinearFrictionless!(sim, [1., 0.], 0.1,
377 bc="velocity", vel=1.0,
378 verbose=false)
379 Granular.setTimeStep!(sim, verbose=false)
380 Granular.interactWalls!(sim)
381 Granular.updateWallKinematics!(sim, method="Two-term Taylor")
382 @test sim.walls[1].acc ≈ 0.
383 @test sim.walls[1].vel ≈ 1.
384 @test sim.walls[1].pos > -0.9
385
386 @info "Wall present, contact, normal stress BC"
387 sim = Granular.createSimulation()
388 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [2., 2., 1.])
389 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 1., verbose=false)
390 Granular.addWallLinearFrictionless!(sim, [1., 0.], 2.,
391 bc="normal stress",
392 normal_stress=0.,
393 verbose=false)
394 Granular.setTimeStep!(sim, verbose=false)
395 Granular.interactWalls!(sim)
396 Granular.updateWallKinematics!(sim)
397 @test sim.walls[1].force ≈ 0.
398 @test sim.walls[1].acc ≈ 0.
399 @test sim.walls[1].vel ≈ 0.
400 @test sim.grains[1].force[1] ≈ 0.
401 @test sim.grains[1].force[2] ≈ 0.
402
403 @info "Wall present, contact, normal stress BC"
404 sim = Granular.createSimulation()
405 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [2., 2., 1.])
406 Granular.addGrainCylindrical!(sim, [ 1., 1.], 1., 1., verbose=false)
407 sim.grains[1].fixed = true
408 Granular.addWallLinearFrictionless!(sim, [1., 0.], 2.,
409 bc="normal stress",
410 normal_stress=-1e4,
411 verbose=false)
412 Granular.setTimeStep!(sim, verbose=false)
413 Granular.interactWalls!(sim)
414 Granular.updateWallKinematics!(sim)
415 @test sim.walls[1].force ≈ 0.
416 @test sim.walls[1].acc < 0.
417 @test sim.walls[1].vel < 0.
418 @test sim.grains[1].force[1] ≈ 0.
419 @test sim.grains[1].force[2] ≈ 0.
420 for i=1:5
421 Granular.interactWalls!(sim)
422 Granular.updateWallKinematics!(sim)
423 @test sim.walls[1].force > 0.
424 @test sim.walls[1].acc < 0.
425 @test sim.walls[1].vel < 0.
426 @test sim.walls[1].pos < 2.
427 @test sim.grains[1].force[1] < 0.
428 @test sim.grains[1].force[2] ≈ 0.
429 end
430
431 @info "Granular packing, wall present, normal stress BC"
432 sim = Granular.createSimulation()
433 Granular.regularPacking!(sim, [5, 5], 1.0, 2.0)
434 Granular.fitGridToGrains!(sim, sim.ocean)
435 Granular.setGridBoundaryConditions!(sim.ocean, "impermeable")
436 global y_max_init = 0.
437 for grain in sim.grains
438 if y_max_init < grain.lin_pos[2] + grain.contact_radius
439 global y_max_init = grain.lin_pos[2] + grain.contact_radius
440 end
441 end
442 Granular.addWallLinearFrictionless!(sim, [0., 1.], y_max_init,
443 bc="normal stress", normal_stress=-1…
444 Granular.setTimeStep!(sim)
445 Granular.setTotalTime!(sim, 1.)
446 Granular.run!(sim)
447 Granular.removeSimulationFiles(sim)
448 @test sim.walls[1].pos < y_max_init
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.