Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd function for cell center coordinates, add tests - Granular.jl - Julia pack…
git clone git://src.adamsgaard.dk/Granular.jl
Log
Files
Refs
README
LICENSE
---
commit dec15a9e0cb198b20df8eaab444a6d03d2a1a80e
parent 764f9a160974b94ffec0b0572a0bcdc2cbc49336
Author: Anders Damsgaard <[email protected]>
Date: Mon, 1 May 2017 10:28:19 -0400
add function for cell center coordinates, add tests
Diffstat:
M examples/nares_strait.jl | 18 +++++++++++++++---
M src/grid.jl | 22 ++++++++++++++++++++++
M test/grid.jl | 8 ++++++++
3 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/examples/nares_strait.jl b/examples/nares_strait.jl
t@@ -81,7 +81,8 @@ noise_amplitude = floe_padding
Base.Random.srand(1)
for y in (L[2] - r - noise_amplitude):(-(2.*r + floe_padding)):((L[2] -
Ly_constriction)/2. + Ly_constriction)
- for x in (Lx*.125):(2.*r + floe_padding):(Lx*.875 - 2.*r)
+ for x in (r + noise_amplitude):(2.*r + floe_padding):(Lx - r -
+ noise_amplitude)
if iy % 2 == 0
x += 1.5*r
end
t@@ -104,8 +105,19 @@ end
n = length(sim.ice_floes) - n_walls
info("added $(n) ice floes")
-# Run temporal loop
+# Set temporal parameters
SeaIce.setTotalTime!(sim, 24.*60.*60.)
SeaIce.setOutputFileInterval!(sim, 60.)
SeaIce.setTimeStep!(sim)
-SeaIce.run!(sim, status_interval=1)
+
+# Run simulation for 10 time steps, then add new icefloes from the top
+while sim.time < sim.time_total
+ for it=1:10
+ SeaIce.run!(sim, status_interval=1, single_step=true)
+ end
+ for i=1:size(sim.ocean.xh, 1)
+ if sim.ocean.ice_floe_list[i, end] == []
+ SeaIce.addIceFloeCylindrical(sim, [x, y], r, h, verbose=false)
+ end
+ end
+end
diff --git a/src/grid.jl b/src/grid.jl
t@@ -145,8 +145,15 @@ end
export getCellCornerCoordinates
"""
+ getCellCornerCoordinates(ocean, i, j)
+
Returns ocean-grid corner coordinates in the following order (south-west corne…
south-east corner, north-east corner, north-west corner).
+
+# Arguments
+* `ocean::Ocean`: ocean object containing grid.
+* `i::Int`: x-index of cell.
+* `j::Int`: y-index of cell.
"""
function getCellCornerCoordinates(ocean::Ocean, i::Int, j::Int)
sw = [ocean.xq[ i, j], ocean.yq[ i, j]]
t@@ -156,6 +163,21 @@ function getCellCornerCoordinates(ocean::Ocean, i::Int, j…
return sw, se, ne, nw
end
+export getCellCenterCoordinates
+"""
+ getCellCenterCoordinates(ocean, i, j)
+
+Returns ocean-grid center coordinates (h-point).
+
+# Arguments
+* `ocean::Ocean`: ocean object containing grid.
+* `i::Int`: x-index of cell.
+* `j::Int`: y-index of cell.
+"""
+function getCellCenterCoordinates(ocean::Ocean, i::Int, j::Int)
+ return [ocean.xh[i, j], ocean.yh[i, j]]
+end
+
export areaOfTriangle
"Returns the area of an triangle with corner coordinates `a`, `b`, and `c`."
function areaOfTriangle(a::Array{float, 1},
diff --git a/test/grid.jl b/test/grid.jl
t@@ -8,6 +8,14 @@ info("#### $(basename(@__FILE__)) ####")
ocean = SeaIce.readOceanNetCDF("Baltic/00010101.ocean_month.nc",
"Baltic/ocean_hgrid.nc")
+info("Testing coordinate retrieval functions")
+sw, se, ne, nw = SeaIce.getCellCornerCoordinates(ocean, 1, 1)
+@test sw ≈ [6., 53.]
+@test se ≈ [7., 53.]
+@test ne ≈ [7., 54.]
+@test nw ≈ [6., 54.]
+@test SeaIce.getCellCenterCoordinates(ocean, 1, 1) ≈ [6.5, 53.5]
+
info("Testing area-determination methods")
@test SeaIce.areaOfTriangle([0., 0.], [1., 0.], [0., 1.]) ≈ .5
@test SeaIce.areaOfTriangle([1., 0.], [0., 1.], [0., 0.]) ≈ .5
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.