tuse conformal mapping by default during cell binning - Granular.jl - Julia package for granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/Granular.jl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit ddf1f4d1c0e72b369fcae11a7cd37e9267265f65
 (DIR) parent 4a79e477b83eb068b4024f6695bca0295a5a06c4
 (HTM) Author: Anders Damsgaard <andersd@riseup.net>
       Date:   Mon,  1 May 2017 09:40:30 -0400
       
       use conformal mapping by default during cell binning
       
       Diffstat:
         M examples/nares_strait.jl            |       2 --
         M src/grid.jl                         |      11 +++++++----
         M test/grid.jl                        |      17 +++++++++++++----
       
       3 files changed, 20 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/examples/nares_strait.jl b/examples/nares_strait.jl
       t@@ -104,8 +104,6 @@ end
        n = length(sim.ice_floes) - n_walls
        info("added $(n) ice floes")
        
       -SeaIce.writeVTK(sim)
       -
        # Run temporal loop
        SeaIce.setTotalTime!(sim, 24.*60.*60.)
        SeaIce.setOutputFileInterval!(sim, 60.)
 (DIR) diff --git a/src/grid.jl b/src/grid.jl
       t@@ -61,13 +61,16 @@ end
        export findCellContainingPoint
        """
        Returns the `i`, `j` index of the ocean grid cell containing the `point`.
       +The function uses either an area-based approach (`method = "Area"`), or a 
       +conformal mapping approach (`method = "Conformal"`).  The area-based approach is 
       +more robust.  This function returns the coordinates of the cell or raises an 
       +error.
        """
       -function findCellContainingPoint(ocean::Ocean, point::Array{float, 1})
       -
       -    found = false
       +function findCellContainingPoint(ocean::Ocean, point::Array{float, 1};
       +                                 method::String="Conformal")
            for i=1:size(ocean.xh, 1)
                for j=1:size(ocean.yh, 2)
       -            if isPointInCell(ocean, i, j, point)
       +            if isPointInCell(ocean, i, j, point, method=method)
                        return i, j
                    end
                end
 (DIR) diff --git a/test/grid.jl b/test/grid.jl
       t@@ -79,10 +79,19 @@ ocean.u[1, 2, 1, 1] = 0.0
        @test SeaIce.bilinearInterpolation(ocean.u, .25, .25, 1, 1, 1, 1) ≈ .75
        @test SeaIce.bilinearInterpolation(ocean.u, .75, .75, 1, 1, 1, 1) ≈ .25
        
       -info("Testing cell binning")
       -@test SeaIce.findCellContainingPoint(ocean, [6.2, 53.4]) == (1, 1)
       -@test SeaIce.findCellContainingPoint(ocean, [7.2, 53.4]) == (2, 1)
       -@test_throws ErrorException SeaIce.findCellContainingPoint(ocean, [0.2, 53.4])
       +info("Testing cell binning - Area-based approach")
       +@test SeaIce.findCellContainingPoint(ocean, [6.2,53.4], method="Area") == (1, 1)
       +@test SeaIce.findCellContainingPoint(ocean, [7.2,53.4], method="Area") == (2, 1)
       +@test_throws ErrorException SeaIce.findCellContainingPoint(ocean, [0.2, 53.4],
       +                                                           method="Area")
       +
       +info("Testing cell binning - Conformal mapping")
       +@test SeaIce.findCellContainingPoint(ocean, [6.2,53.4], method="Conformal") == 
       +    (1, 1)
       +@test SeaIce.findCellContainingPoint(ocean, [7.2,53.4], method="Conformal") == 
       +    (2, 1)
       +@test_throws ErrorException SeaIce.findCellContainingPoint(ocean, [0.2, 53.4],
       +                                                           method="Conformal")
        
        sim = SeaIce.createSimulation()
        sim.ocean = SeaIce.readOceanNetCDF("Baltic/00010101.ocean_month.nc",