tsimulation_benchmark.jl - seaice-experiments - sea ice experiments using Granular.jl
 (HTM) git clone git://src.adamsgaard.dk/seaice-experiments
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tsimulation_benchmark.jl (1471B)
       ---
            1 #/usr/bin/env julia
            2 ENV["MPLBACKEND"] = "Agg"
            3 import Granular
            4 
            5 
            6 const N = 30e3
            7 const n_runs = 1000
            8 
            9 ## Coulomb-frictional model
           10 function prepare_simulation(sim::Granular.Simulation)
           11     sim = Granular.readSimulation(sim)
           12     sim.id = "$(sim.id)-benchmark"
           13     Granular.resetTime!(sim)
           14     Granular.setTotalTime!(sim, 1.)
           15     Granular.setOutputFileInterval!(sim, 0.)
           16     return sim
           17 end
           18 
           19 function benchmark_interaction(sim::Granular.Simulation, n_runs::Int)
           20     time = zeros(n_runs)
           21     for i=1:n_runs
           22         Granular.interact!(sim)
           23         Granular.interact!(sim)
           24         t = @elapsed(Granular.interact!(sim))
           25         time[i] = t
           26     end
           27     return time
           28 end
           29 
           30 
           31 sim = Granular.createSimulation("mohr_coulomb_mu0.3_sigma_c0kPa.pdf-seed1-cons-N$(N)Pa")
           32 sim = prepare_simulation(sim)
           33 time_frictional = benchmark_interaction(sim, n_runs)
           34 
           35 sim = Granular.createSimulation("mohr_coulomb_mu0.3_sigma_c0kPa.pdf-seed1-cons-N$(N)Pa")
           36 sim = prepare_simulation(sim)
           37 for grain in sim.grains
           38     grain.rotating = false
           39 end
           40 time_cohesive = benchmark_interaction(sim, n_runs)
           41 
           42 time_frictional_mean = mean(time_frictional)
           43 time_frictional_std  = std(time_frictional)
           44 time_cohesive_mean   = mean(time_cohesive)
           45 time_cohesive_std    = std(time_cohesive)
           46 
           47 println("Frictional: mean = $time_frictional_mean, std = $time_frictional_std")
           48 println("Cohesive:   mean = $time_cohesive_mean, std = $time_cohesive_std")
           49 println("Speedup of cohesive model: $(time_frictional_mean/time_cohesive_mean)")