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.