Introduction
Introduction Statistics Contact Development Disclaimer Help
tcohesion.jl - Granular.jl - Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl
Log
Files
Refs
README
LICENSE
---
tcohesion.jl (8100B)
---
1 #!/usr/bin/env julia
2 using Test
3 import Granular
4
5 # Check for conservation of kinetic energy (=momentum) during a normal c…
6 # between two ice cylindrical grains
7
8 verbose=false
9
10 sim_init = Granular.createSimulation()
11 Granular.addGrainCylindrical!(sim_init, [0., 0.], 10., 1.)
12 Granular.addGrainCylindrical!(sim_init, [18., 0.], 10., 1.)
13 sim_init.grains[1].youngs_modulus = 1e-5 # repulsion is negligible
14 sim_init.grains[2].youngs_modulus = 1e-5 # repulsion is negligible
15 Granular.setTimeStep!(sim_init, verbose=verbose)
16
17 @info "# Check contact age scheme"
18 sim = deepcopy(sim_init)
19 Granular.setTotalTime!(sim, 10.)
20 sim.time_step = 1.
21 Granular.run!(sim, verbose=verbose)
22 Granular.removeSimulationFiles(sim)
23 @test sim.grains[1].contact_age[1] ≈ sim.time
24
25 @info "# Check if bonds add tensile strength"
26 sim = Granular.createSimulation(id="cohesion")
27 Granular.addGrainCylindrical!(sim, [0., 0.], 10., 1., tensile_strength=5…
28 Granular.addGrainCylindrical!(sim, [20.1, 0.], 10., 1., tensile_strength…
29 sim.grains[1].lin_vel[1] = 0.1
30 Granular.setTimeStep!(sim)
31 Granular.setTotalTime!(sim, 10.)
32 Granular.run!(sim, verbose=verbose)
33 Granular.removeSimulationFiles(sim)
34 @test sim.grains[1].lin_vel[1] > 0.
35 @test sim.grains[1].lin_vel[2] ≈ 0.
36 @test sim.grains[2].lin_vel[1] > 0.
37 @test sim.grains[2].lin_vel[2] ≈ 0.
38 @test sim.grains[1].ang_vel ≈ zeros(3)
39 @test sim.grains[2].ang_vel ≈ zeros(3)
40
41 @info "# Add shear strength and test bending resistance (one grain rotat…
42 sim = Granular.createSimulation(id="cohesion")
43 Granular.addGrainCylindrical!(sim, [0., 0.], 10.1, 1., tensile_strength=…
44 shear_strength=500e3)
45 Granular.addGrainCylindrical!(sim, [20., 0.], 10., 1., tensile_strength=…
46 shear_strength=500e3)
47 sim.grains[1].ang_vel[3] = 0.1
48 Granular.findContacts!(sim) # make sure contact is registered
49 sim.grains[1].contact_radius=10.0 # decrease radius so there isn't compr…
50 E_kin_lin_init = Granular.totalGrainKineticTranslationalEnergy(sim)
51 E_kin_rot_init = Granular.totalGrainKineticRotationalEnergy(sim)
52 Granular.setTimeStep!(sim)
53 Granular.setTotalTime!(sim, 5.)
54 #Granular.setOutputFileInterval!(sim, 0.1)
55 Granular.run!(sim, verbose=verbose)
56 Granular.removeSimulationFiles(sim)
57 @test sim.grains[1].lin_vel[1] ≈ 0.
58 @test sim.grains[1].lin_vel[2] ≈ 0.
59 @test sim.grains[2].lin_vel[1] ≈ 0.
60 @test sim.grains[2].lin_vel[2] ≈ 0.
61 @test sim.grains[1].ang_vel[3] != 0.
62 @test sim.grains[2].ang_vel[3] != 0.
63 E_kin_lin_final = Granular.totalGrainKineticTranslationalEnergy(sim)
64 E_kin_rot_final = Granular.totalGrainKineticRotationalEnergy(sim)
65 E_therm_final = Granular.totalGrainThermalEnergy(sim)
66 @test E_kin_lin_init ≈ E_kin_lin_final
67 @test E_kin_rot_init > E_kin_rot_final + E_therm_final
68
69 @info "# Add shear strength and test bending resistance (one grain rotat…
70 sim = Granular.createSimulation(id="cohesion")
71 Granular.addGrainCylindrical!(sim, [0., 0.], 10.1, 1., tensile_strength=…
72 shear_strength=500e3)
73 Granular.addGrainCylindrical!(sim, [20., 0.], 10., 1., tensile_strength=…
74 shear_strength=500e3)
75 sim.grains[2].ang_vel[3] = 0.1
76 Granular.findContacts!(sim) # make sure contact is registered
77 sim.grains[1].contact_radius=10.0 # decrease radius so there isn't compr…
78 E_kin_lin_init = Granular.totalGrainKineticTranslationalEnergy(sim)
79 E_kin_rot_init = Granular.totalGrainKineticRotationalEnergy(sim)
80 Granular.setTimeStep!(sim)
81 Granular.setTotalTime!(sim, 5.)
82 #Granular.setOutputFileInterval!(sim, 0.1)
83 Granular.run!(sim, verbose=verbose)
84 Granular.removeSimulationFiles(sim)
85 @test sim.grains[1].lin_vel[1] ≈ 0.
86 @test sim.grains[1].lin_vel[2] ≈ 0.
87 @test sim.grains[2].lin_vel[1] ≈ 0.
88 @test sim.grains[2].lin_vel[2] ≈ 0.
89 @test sim.grains[1].ang_vel[3] != 0.
90 @test sim.grains[2].ang_vel[3] != 0.
91 E_kin_lin_final = Granular.totalGrainKineticTranslationalEnergy(sim)
92 E_kin_rot_final = Granular.totalGrainKineticRotationalEnergy(sim)
93 E_therm_final = Granular.totalGrainThermalEnergy(sim)
94 @test E_kin_lin_init ≈ E_kin_lin_final
95 @test E_kin_rot_init > E_kin_rot_final + E_therm_final
96
97 @info "# Add shear strength and test bending resistance (both grains rot…
98 sim = Granular.createSimulation(id="cohesion")
99 Granular.addGrainCylindrical!(sim, [0., 0.], 10.0000001, 1., tensile_str…
100 shear_strength=500e3)
101 Granular.addGrainCylindrical!(sim, [20., 0.], 10., 1., tensile_strength=…
102 shear_strength=500e3)
103 sim.grains[1].ang_vel[3] = 0.1
104 sim.grains[2].ang_vel[3] = -0.1
105 Granular.findContacts!(sim) # make sure contact is registered
106 sim.grains[1].contact_radius=10.0 # decrease radius so there isn't compr…
107 E_kin_lin_init = Granular.totalGrainKineticTranslationalEnergy(sim)
108 E_kin_rot_init = Granular.totalGrainKineticRotationalEnergy(sim)
109 Granular.setTimeStep!(sim)
110 Granular.setTotalTime!(sim, 5.)
111 #Granular.setOutputFileInterval!(sim, 0.1)
112 Granular.run!(sim, verbose=verbose)
113 Granular.removeSimulationFiles(sim)
114 @test sim.grains[1].lin_vel[1] ≈ 0.
115 @test sim.grains[1].lin_vel[2] ≈ 0.
116 @test sim.grains[2].lin_vel[1] ≈ 0.
117 @test sim.grains[2].lin_vel[2] ≈ 0.
118 @test sim.grains[1].ang_vel[3] != 0.
119 @test sim.grains[2].ang_vel[3] != 0.
120 E_kin_lin_final = Granular.totalGrainKineticTranslationalEnergy(sim)
121 E_kin_rot_final = Granular.totalGrainKineticRotationalEnergy(sim)
122 E_therm_final = Granular.totalGrainThermalEnergy(sim)
123 @test E_kin_lin_init ≈ E_kin_lin_final
124 @test E_kin_rot_init > E_kin_rot_final + E_therm_final
125
126 @info "# Break bond through bending I"
127 sim = Granular.createSimulation(id="cohesion")
128 Granular.addGrainCylindrical!(sim, [0., 0.], 10.0000001, 1., tensile_str…
129 shear_strength=500e3)
130 Granular.addGrainCylindrical!(sim, [20., 0.], 10., 1., tensile_strength=…
131 shear_strength=500e3)
132 sim.grains[1].ang_vel[3] = 100
133 sim.grains[2].ang_vel[3] = -100
134 Granular.findContacts!(sim) # make sure contact is registered
135 sim.grains[1].contact_radius=10.0 # decrease radius so there isn't compr…
136 E_kin_lin_init = Granular.totalGrainKineticTranslationalEnergy(sim)
137 E_kin_rot_init = Granular.totalGrainKineticRotationalEnergy(sim)
138 Granular.setTimeStep!(sim)
139 Granular.setTotalTime!(sim, 5.)
140 #Granular.setOutputFileInterval!(sim, 0.1)
141 Granular.run!(sim, verbose=verbose)
142 Granular.removeSimulationFiles(sim)
143 @test sim.grains[1].lin_vel[1] ≈ 0.
144 @test sim.grains[1].lin_vel[2] ≈ 0.
145 @test sim.grains[2].lin_vel[1] ≈ 0.
146 @test sim.grains[2].lin_vel[2] ≈ 0.
147 @test sim.grains[1].ang_vel[3] != 0.
148 @test sim.grains[2].ang_vel[3] != 0.
149 E_kin_lin_final = Granular.totalGrainKineticTranslationalEnergy(sim)
150 E_kin_rot_final = Granular.totalGrainKineticRotationalEnergy(sim)
151 E_therm_final = Granular.totalGrainThermalEnergy(sim)
152 @test E_kin_lin_init ≈ E_kin_lin_final
153 @test sim.grains[1].n_contacts == 0
154 @test sim.grains[2].n_contacts == 0
155
156 @info "# Break bond through bending II"
157 sim = Granular.createSimulation(id="cohesion")
158 Granular.addGrainCylindrical!(sim, [0., 0.], 10.1, 1., tensile_strength=…
159 shear_strength=50e3)
160 Granular.addGrainCylindrical!(sim, [20., 0.], 10., 1., tensile_strength=…
161 shear_strength=50e3)
162 sim.grains[1].ang_vel[3] = 100
163 sim.grains[2].ang_vel[3] = 0.0
164 Granular.findContacts!(sim) # make sure contact is registered
165 sim.grains[1].contact_radius=10.0 # decrease radius so there isn't compr…
166 E_kin_lin_init = Granular.totalGrainKineticTranslationalEnergy(sim)
167 E_kin_rot_init = Granular.totalGrainKineticRotationalEnergy(sim)
168 Granular.setTimeStep!(sim)
169 Granular.setTotalTime!(sim, 5.)
170 #Granular.setOutputFileInterval!(sim, 0.1)
171 Granular.run!(sim, verbose=verbose)
172 Granular.removeSimulationFiles(sim)
173 @test sim.grains[1].lin_vel[1] ≈ 0.
174 @test sim.grains[1].lin_vel[2] ≈ 0.
175 @test sim.grains[2].lin_vel[1] ≈ 0.
176 @test sim.grains[2].lin_vel[2] ≈ 0.
177 @test sim.grains[1].ang_vel[3] != 0.
178 @test sim.grains[2].ang_vel[3] != 0.
179 E_kin_lin_final = Granular.totalGrainKineticTranslationalEnergy(sim)
180 E_kin_rot_final = Granular.totalGrainKineticRotationalEnergy(sim)
181 E_therm_final = Granular.totalGrainThermalEnergy(sim)
182 @test E_kin_lin_init ≈ E_kin_lin_final
183 @test sim.grains[1].n_contacts == 0
184 @test sim.grains[2].n_contacts == 0
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.