Granular.jl

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

commit 30af4dcf37a6204bd9d127ffce9a0763a5d9d1b0
parent ddb4611e8e4fa17f9e08d61a5b5d16ce25bf00e1
Author: Anders Damsgaard <andersd@riseup.net>
Date:   Tue, 25 Apr 2017 16:20:01 -0400

add outline of sorting algorithm

Diffstat:
Msrc/datatypes.jl | 4++++
Msrc/grid.jl | 31+++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/datatypes.jl b/src/datatypes.jl @@ -44,6 +44,8 @@ type IceFloeCylindrical contact_dynamic_friction::float pressure::float + + #ocean_grid_pos::Array{Int, 2} end # Type for gathering data from ice floe objects into single arrays @@ -151,6 +153,8 @@ type Ocean v::Array{Float64, 4} h::Array{Float64, 4} e::Array{Float64, 4} + + #ice_floe_list::Array{Array{Int, 1}, 2} end # Top-level simulation type diff --git a/src/grid.jl b/src/grid.jl @@ -30,3 +30,34 @@ function bilinearInterpolation(field::Array{Float64, 4}, error("grid type not understood.") end end + +""" +Find ice-floe positions in ocean grid, based on their center positions. +""" +function sortIceFloesInOceanGrid!(simulation::Simulation, verbose=true) + + # TODO: initialize empty ice_floe_list before appending to list + + for idx in 1:length(simulation.ice_floes) + + for i in 1:size(simulation.ocean.xh)[1] + for j in 1:size(simulation.ocean.xh)[2] + + if cellContainsIceFloe(simulation.ocean, i, j, + simulation.ice_floes[idx]) + + # add cell to ice floe + simulation.ice_floes[idx].ocean_grid_pos = [i, j] + + # add ice floe to cell + push!(simulation.ice_floe_list[i, j], idx) + end + end + end + end +end + +function cellContainsIceFloe(ocean::Ocean, i::Int, j::Int, + icefloe::IceFloeCylindrical) + +end