grain.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.