Introduction
Introduction Statistics Contact Development Disclaimer Help
tpacking.jl - Granular.jl - Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl
Log
Files
Refs
README
LICENSE
---
tpacking.jl (7005B)
---
1 #!/usr/bin/env julia
2 using Test
3 import Granular
4
5 verbose = false
6 plot = false
7 plot_packings=false
8
9 @info "Testing regular packing generation (power law GSD)"
10 sim = Granular.createSimulation()
11 Granular.regularPacking!(sim, [2, 2], 1., 1., size_distribution="powerla…
12 @test 4 == length(sim.grains)
13 for grain in sim.grains
14 @test grain.contact_radius ≈ 1.
15 end
16
17 sim = Granular.createSimulation()
18 Granular.regularPacking!(sim, [10, 10], 1., 10., size_distribution="powe…
19 @test 100 == length(sim.grains)
20 for grain in sim.grains
21 @test grain.contact_radius >= 1.
22 @test grain.contact_radius <= 10.
23 end
24 plot && Granular.plotGrains(sim, filetype="regular-powerlaw.png", show_f…
25
26 @info "Testing regular packing generation (uniform GSD)"
27 sim = Granular.createSimulation()
28 Granular.regularPacking!(sim, [2, 2], 1., 1., size_distribution="uniform…
29 @test 4 == length(sim.grains)
30 for grain in sim.grains
31 @test grain.contact_radius ≈ 1.
32 end
33
34 sim = Granular.createSimulation()
35 Granular.regularPacking!(sim, [10, 10], 1., 10., size_distribution="unif…
36 @test 100 == length(sim.grains)
37 for grain in sim.grains
38 @test grain.contact_radius >= 1.
39 @test grain.contact_radius <= 10.
40 end
41 plot && Granular.plotGrains(sim, filetype="regular-uniform.png", show_fi…
42
43
44 @info "Testing irregular (Poisson-disk) packing generation (monodisperse…
45 sim = Granular.createSimulation("poisson1-monodisperse-nopadding")
46 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [1., 1., 1.])
47 Granular.irregularPacking!(sim,
48 radius_max=.1,
49 radius_min=.1,
50 padding_factor=0.,
51 plot_during_packing=plot_packings,
52 verbose=verbose)
53 @test length(sim.grains) > 23
54
55 @info "Testing irregular (Poisson-disk) packing generation (wide PSD)"
56 sim = Granular.createSimulation("poisson2-wide-nopadding")
57 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [1., 1., 1.])
58 Granular.irregularPacking!(sim,
59 radius_max=.1,
60 radius_min=.005,
61 padding_factor=0.,
62 plot_during_packing=plot_packings,
63 verbose=verbose)
64 @test length(sim.grains) > 280
65 sim = Granular.createSimulation("poisson3-wide-padding")
66 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [1., 1., 1.])
67 Granular.irregularPacking!(sim,
68 radius_max=.1,
69 radius_min=.005,
70 padding_factor=2.,
71 plot_during_packing=plot_packings,
72 verbose=verbose)
73 @test length(sim.grains) > 280
74
75 sim = Granular.createSimulation("poisson4-binary-search")
76 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [1., 1., 1.])
77 Granular.irregularPacking!(sim,
78 radius_max=.1,
79 radius_min=.005,
80 binary_radius_search=true,
81 plot_during_packing=plot_packings,
82 verbose=verbose)
83 @test length(sim.grains) > 280
84
85 @info "Testing irregular packing with inactive boundaries"
86 sim = Granular.createSimulation("poisson-inactive")
87 sim.ocean = Granular.createRegularOceanGrid([5, 5, 1], [1., 1., 1.])
88 Granular.setGridBoundaryConditions!(sim.ocean, "inactive", verbose=verbo…
89 Granular.irregularPacking!(sim,
90 radius_max=.05,
91 radius_min=.1,
92 padding_factor=0.,
93 plot_during_packing=plot_packings,
94 verbose=verbose)
95 Granular.findContacts!(sim, method="ocean grid")
96 plot && Granular.plotGrains(sim, filetype="poisson-inactive.png", show_f…
97 for grain in sim.grains
98 @test grain.n_contacts == 0
99 end
100
101 @info "Testing irregular packing with periodic boundaries"
102 sim = Granular.createSimulation("poisson-periodic")
103 sim.ocean = Granular.createRegularOceanGrid([5, 5, 1], [1., 1., 1.])
104 Granular.setGridBoundaryConditions!(sim.ocean, "periodic", verbose=verbo…
105 Granular.irregularPacking!(sim,
106 radius_max=.05,
107 radius_min=.1,
108 padding_factor=0.,
109 plot_during_packing=plot_packings,
110 verbose=verbose)
111 plot && Granular.plotGrains(sim, filetype="poisson-periodic.png", show_f…
112 Granular.findContacts!(sim, method="ocean grid")
113 for grain in sim.grains
114 @test grain.n_contacts == 0
115 end
116
117
118 @info "Testing raster-based mapping algorithm"
119 sim = Granular.createSimulation("raster-packing1")
120 sim.ocean = Granular.createRegularOceanGrid([1, 1, 1], [1., 1., 1.])
121 Granular.addGrainCylindrical!(sim, [0.5, 0.5], 0.4, 1.0)
122 occupied = Granular.rasterMap(sim, 0.08)
123 occupied_ans = Array{Bool}([
124 0 0 0 0 0 0 0 0 0 0 0 0;
125 0 0 0 1 1 1 1 1 1 0 0 0;
126 0 0 1 1 1 1 1 1 1 1 1 0;
127 0 1 1 1 1 1 1 1 1 1 1 0;
128 0 1 1 1 1 1 1 1 1 1 1 1;
129 0 1 1 1 1 1 1 1 1 1 1 1;
130 0 1 1 1 1 1 1 1 1 1 1 1;
131 0 1 1 1 1 1 1 1 1 1 1 1;
132 0 1 1 1 1 1 1 1 1 1 1 0;
133 0 0 1 1 1 1 1 1 1 1 1 0;
134 0 0 1 1 1 1 1 1 1 1 0 0;
135 0 0 0 0 1 1 1 1 0 0 0 0])
136 @test occupied == occupied_ans
137 Granular.addGrainCylindrical!(sim, [0.03, 0.03], 0.02, 1.0)
138 occupied = Granular.rasterMap(sim, 0.08)
139 occupied_ans = Array{Bool}([
140 1 0 0 0 0 0 0 0 0 0 0 0;
141 0 0 0 1 1 1 1 1 1 0 0 0;
142 0 0 1 1 1 1 1 1 1 1 1 0;
143 0 1 1 1 1 1 1 1 1 1 1 0;
144 0 1 1 1 1 1 1 1 1 1 1 1;
145 0 1 1 1 1 1 1 1 1 1 1 1;
146 0 1 1 1 1 1 1 1 1 1 1 1;
147 0 1 1 1 1 1 1 1 1 1 1 1;
148 0 1 1 1 1 1 1 1 1 1 1 0;
149 0 0 1 1 1 1 1 1 1 1 1 0;
150 0 0 1 1 1 1 1 1 1 1 0 0;
151 0 0 0 0 1 1 1 1 0 0 0 0])
152 @test occupied == occupied_ans
153 sim_init = deepcopy(sim)
154 plot && Granular.plotGrains(sim, filetype="rastermap.png", show_figure=f…
155
156 @info "Testing raster-based mapping algorithm (power law GSD)"
157 sim = deepcopy(sim_init)
158 np_init = length(sim.grains)
159 Granular.rasterPacking!(sim, 0.02, 0.04, verbose=verbose)
160 @test np_init < length(sim.grains)
161 plot && Granular.plotGrains(sim, filetype="powerlaw.png", show_figure=fa…
162
163 @info "Testing raster-based mapping algorithm (uniform GSD)"
164 sim = deepcopy(sim_init)
165 np_init = length(sim.grains)
166 Granular.rasterPacking!(sim, 0.02, 0.04, size_distribution="uniform",
167 verbose=verbose)
168 @test np_init < length(sim.grains)
169 plot && Granular.plotGrains(sim, filetype="uniform.png", show_figure=fal…
170
171 @info "Tesing square packing"
172 sim = Granular.createSimulation()
173 Granular.regularPacking!(sim, [5,6], 1.0, 1.0, tiling="square",
174 padding_factor=0.0)
175 @test length(sim.grains) == 5*6
176 plot && Granular.plotGrains(sim, filetype="square.png", show_figure=fals…
177
178 @info "Tesing triangular packing"
179 sim = Granular.createSimulation()
180 Granular.regularPacking!(sim, [6,6], 1.0, 1.0, tiling="triangular",
181 padding_factor=0.0)
182 @test length(sim.grains) == 6*6
183 plot && Granular.plotGrains(sim, filetype="triangular.png", show_figure=…
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.