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