tgrain.jl - Granular.jl - Julia package for granular dynamics simulation
(HTM) git clone git://src.adamsgaard.dk/Granular.jl
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
tgrain.jl (4021B)
---
1 #!/usr/bin/env julia
2
3 # Check the basic icefloe functionality
4
5 @info "Writing simple simulation to VTK file"
6 sim = Granular.createSimulation(id="test")
7 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 1., verbose=false)
8 Granular.printGrainInfo(sim.grains[1])
9
10 @info "Testing grain value checks "
11 @test_throws ErrorException Granular.addGrainCylindrical!(sim, [.1, .1, .1, .1],
12 10., 1.)
13 @test_throws ErrorException Granular.addGrainCylindrical!(sim, [.1, .1],
14 10., 1.,
15 lin_vel=[.2,.2,.2,.2])
16 @test_throws ErrorException Granular.addGrainCylindrical!(sim, [.1, .1],
17 10., 1.,
18 lin_acc=[.2,.2,.2,.2])
19 @test_throws ErrorException Granular.addGrainCylindrical!(sim, [.1, .1],
20 0., 1.)
21 @test_throws ErrorException Granular.addGrainCylindrical!(sim, [.1, .1],
22 10., 1., density=-2.)
23 @test_throws ErrorException Granular.disableGrain!(sim, 0)
24
25 @info "Testing grain comparison "
26 sim = Granular.createSimulation(id="test")
27 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 1., verbose=false)
28 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 1., verbose=false)
29 Granular.compareGrains(sim.grains[1], sim.grains[2])
30 Granular.findContacts!(sim)
31
32 global gnuplot = true
33 try
34 run(`gnuplot --version`)
35 catch return_signal
36 if isa(return_signal, Base.IOError)
37 @warn "Skipping plotting routines: Could not launch gnuplot process"
38 global gnuplot = false
39 end
40 end
41 if gnuplot
42 @info "Testing GSD plotting "
43 Granular.plotGrainSizeDistribution(sim)
44 @test isfile("test-grain-size-distribution.png")
45 rm("test-grain-size-distribution.png")
46
47 Granular.plotGrainSizeDistribution(sim, skip_fixed=false)
48 @test isfile("test-grain-size-distribution.png")
49 rm("test-grain-size-distribution.png")
50
51 Granular.plotGrainSizeDistribution(sim, size_type="areal")
52 @test isfile("test-grain-size-distribution.png")
53 rm("test-grain-size-distribution.png")
54
55 @test_throws ErrorException Granular.plotGrainSizeDistribution(sim, size_type="asdf")
56
57 @info "Testing grain plotting"
58 Granular.plotGrains(sim, show_figure=false)
59 @test isfile("test/test.grains.0.png")
60 rm("test/test.grains.0.png")
61
62 @info " - contact_radius"
63 Granular.plotGrains(sim, palette_scalar="contact_radius", show_figure=false)
64 @test isfile("test/test.grains.0.png")
65 rm("test/test.grains.0.png")
66 @info " - areal_radius"
67 Granular.plotGrains(sim, palette_scalar="areal_radius", show_figure=false)
68 @test isfile("test/test.grains.0.png")
69 rm("test/test.grains.0.png")
70 @info " - color"
71 Granular.plotGrains(sim, palette_scalar="color", show_figure=false)
72 @test isfile("test/test.grains.0.png")
73 rm("test/test.grains.0.png")
74
75 @info " - invalid field"
76 @test_throws ErrorException Granular.plotGrains(sim, palette_scalar="asdf",
77 show_figure=false)
78 end
79
80 @info "Testing external body force routines"
81 sim = Granular.createSimulation(id="test")
82 Granular.addGrainCylindrical!(sim, [ 0., 0.], 10., 1., verbose=false)
83 Granular.setBodyForce!(sim.grains[1], [1., 2., 0.])
84 @test sim.grains[1].external_body_force ≈ [1., 2., 0.]
85 Granular.addBodyForce!(sim.grains[1], [1., 2., 0.])
86 @test sim.grains[1].external_body_force ≈ [2., 4., 0.]
87
88 @info "Testing zeroKinematics!()"
89 sim.grains[1].force .= ones(3)
90 sim.grains[1].lin_acc .= ones(3)
91 sim.grains[1].lin_vel .= ones(3)
92 sim.grains[1].torque .= ones(3)
93 sim.grains[1].ang_acc .= ones(3)
94 sim.grains[1].ang_vel .= ones(3)
95 Granular.zeroKinematics!(sim)
96 @test Granular.totalGrainKineticTranslationalEnergy(sim) ≈ 0.
97 @test Granular.totalGrainKineticRotationalEnergy(sim) ≈ 0.