seaice-experiments

sea ice experiments using Granular.jl
git clone git://src.adamsgaard.dk/seaice-experiments # fast
git clone https://src.adamsgaard.dk/seaice-experiments.git # slow
Log | Files | Refs | README | LICENSE Back to index

simulation_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)")