Granular.jl

Julia package for granular dynamics simulation
git clone git://src.adamsgaard.dk/Granular.jl
Log | Files | Refs | README | LICENSE

commit 8306704d78dfadc40750669de1fbdfc32d0d99a1
parent 679fbb6447fc38b7bd214b3bac2c3c7300817069
Author: Anders Damsgaard <andersd@riseup.net>
Date:   Mon, 12 Jun 2017 15:24:03 -0400

make JLD optional

Diffstat:
Msrc/io.jl | 42+++++++++++++++++++++++++++++-------------
Mtest/jld.jl | 25+++++++++++++++----------
2 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/src/io.jl b/src/io.jl @@ -1,6 +1,10 @@ import WriteVTK import NetCDF -import JLD +hasJLD = false +if typeof(Pkg.installed("JLD")) == VersionNumber + import JLD + hasJLD = true +end ## IO functions @@ -19,17 +23,23 @@ function writeSimulation(simulation::Simulation; filename::String="", folder::String=".", verbose::Bool=true) - if filename == "" - folder = folder * "/" * simulation.id - mkpath(folder) - filename = string(folder, "/", simulation.id, ".", - simulation.file_number, ".jld") - end + if !hasJLD + warn("Package JLD not found. Simulation save/read not supported. " * + "Please install JLD and its " * + "requirements with `Pkg.add(\"JLD\")`.") + else + if filename == "" + folder = folder * "/" * simulation.id + mkpath(folder) + filename = string(folder, "/", simulation.id, ".", + simulation.file_number, ".jld") + end - JLD.save(filename, "simulation", simulation) + JLD.save(filename, "simulation", simulation) - if verbose - info("simulation written to $filename") + if verbose + info("simulation written to $filename") + end end end @@ -42,10 +52,16 @@ Read all content from `Simulation` from disk in JDL format. """ function readSimulation(filename::String=""; verbose::Bool=true) - if verbose - info("reading simulation from $filename") + if !hasJLD + warn("Package JLD not found. Simulation save/read not supported. " * + "Please install JLD and its " * + "requirements with `Pkg.add(\"JLD\")`.") + else + if verbose + info("reading simulation from $filename") + end + return JLD.load(filename, "simulation") end - return JLD.load(filename, "simulation") end export writeSimulationStatus diff --git a/test/jld.jl b/test/jld.jl @@ -2,15 +2,20 @@ info("#### $(basename(@__FILE__)) ####") -info("Writing simple simulation to JLD file") -sim = SeaIce.createSimulation(id="test") -SeaIce.addIceFloeCylindrical(sim, [ 0., 0.], 10., 1., verbose=false) -SeaIce.addIceFloeCylindrical(sim, [18., 0.], 10., 1., verbose=false) -sim.ocean = SeaIce.createRegularOceanGrid([10, 20, 5], [10., 25., 2.]) -SeaIce.findContacts!(sim, method="all to all") -SeaIce.writeVTK(sim, verbose=false) +info("Determining if JLD is installed") +if typeof(Pkg.installed("JLD")) == VersionNumber + info("JLD found, proceeding with JLD-specific tests") -SeaIce.writeSimulation(sim) + info("Writing simple simulation to JLD file") + sim = SeaIce.createSimulation(id="test") + SeaIce.addIceFloeCylindrical(sim, [ 0., 0.], 10., 1., verbose=false) + SeaIce.addIceFloeCylindrical(sim, [18., 0.], 10., 1., verbose=false) + sim.ocean = SeaIce.createRegularOceanGrid([10, 20, 5], [10., 25., 2.]) + SeaIce.findContacts!(sim, method="all to all") + SeaIce.writeVTK(sim, verbose=false) -sim2 = SeaIce.readSimulation("./test/test.1.jld") -SeaIce.compareSimulations(sim, sim2) + SeaIce.writeSimulation(sim) + + sim2 = SeaIce.readSimulation("./test/test.1.jld") + SeaIce.compareSimulations(sim, sim2) +end