tfix writing of ocean vtk files and vertical discretization - Granular.jl - Jul… | |
git clone git://src.adamsgaard.dk/Granular.jl | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c5889a172d1134078e47e1df2556fb70d3713787 | |
parent fe0c1c4c3ed7188621c45f618ebe7f74b49a2b00 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Fri, 28 Apr 2017 14:41:33 -0400 | |
fix writing of ocean vtk files and vertical discretization | |
Diffstat: | |
M examples/nares_strait.jl | 3 ++- | |
M src/io.jl | 25 +++++++++++++++++++------ | |
M src/ocean.jl | 7 ++++--- | |
3 files changed, 25 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/examples/nares_strait.jl b/examples/nares_strait.jl | |
t@@ -13,7 +13,8 @@ sim.ocean = createRegularOceanGrid(n, L, name="poiseuille_fl… | |
sim.ocean.v[:, :, 1, 1] = 1e-8*((sim.ocean.xq - Lx/2.).^2 - Lx^2./4.) | |
# Initialize confining walls, which are ice floes that are fixed in space | |
-r = .5e3 | |
+#r = .5e3 | |
+r = minimum(L[1:2]/n[1:2])/2. | |
h = 1. | |
## N-S segments | |
diff --git a/src/io.jl b/src/io.jl | |
t@@ -21,12 +21,12 @@ function writeVTK(simulation::Simulation; | |
simulation.file_number += 1 | |
filename = string(folder, "/", simulation.id, ".icefloes.", | |
simulation.file_number) | |
- writeIceFloeVTK(simulation, filename) | |
+ writeIceFloeVTK(simulation, filename, verbose=verbose) | |
if typeof(simulation.ocean.input_file) != Bool && ocean | |
filename = string(folder, "/", simulation.id, ".ocean.", | |
simulation.file_number) | |
- writeOceanVTK(simulation.ocean, filename) | |
+ writeOceanVTK(simulation.ocean, filename, verbose=verbose) | |
end | |
end | |
t@@ -125,16 +125,29 @@ function writeOceanVTK(ocean::Ocean, | |
end | |
for ix=1:size(xq, 1) | |
for iy=1:size(xq, 2) | |
- xq[ix,iy,:] = ocean.zl | |
- yq[ix,iy,:] = ocean.zl | |
+ zq[ix,iy,:] = ocean.zl | |
end | |
end | |
# add arrays to VTK file | |
vtkfile = WriteVTK.vtk_grid(filename, xq, yq, zq) | |
- WriteVTK.vtk_point_data(vtkfile, u, "Zonal velocity [m/s]") | |
- WriteVTK.vtk_point_data(vtkfile, v, "Meridional velocity [m/s]") | |
+ WriteVTK.vtk_point_data(vtkfile, ocean.u[:, :, :, 1], | |
+ "u: Zonal velocity [m/s]") | |
+ WriteVTK.vtk_point_data(vtkfile, ocean.v[:, :, :, 1], | |
+ "v: Meridional velocity [m/s]") | |
+ # write velocities as 3d vector | |
+ vel = zeros(3, size(xq, 1), size(xq, 2), size(xq, 3)) | |
+ for ix=1:size(xq, 1) | |
+ for iy=1:size(xq, 2) | |
+ for iz=1:size(xq, 3) | |
+ vel[1, ix, iy, iz] = ocean.u[ix, iy, iz, 1] | |
+ vel[2, ix, iy, iz] = ocean.v[ix, iy, iz, 1] | |
+ end | |
+ end | |
+ end | |
+ | |
+ WriteVTK.vtk_point_data(vtkfile, vel, "Velocity [m/s]") | |
outfiles = WriteVTK.vtk_save(vtkfile) | |
if verbose | |
diff --git a/src/ocean.jl b/src/ocean.jl | |
t@@ -207,7 +207,8 @@ cells in the horizontal dimension, and `n[3]` vertical cel… | |
and center coordinates will be set according to the grid spatial dimensions | |
`L[1]`, `L[2]`, and `L[3]`. The grid `u`, `v`, `h`, and `e` fields will conta… | |
one 4-th dimension matrix per `time` step. Sea surface will be at `z=0.` with | |
-the ocean spanning `z<0.`. | |
+the ocean spanning `z<0.`. Vertical indexing starts with `k=0` at the sea | |
+surface, and increases downwards. | |
""" | |
function createRegularOceanGrid(n::Array{Int, 1}, | |
L::Array{float, 1}; | |
t@@ -222,8 +223,8 @@ function createRegularOceanGrid(n::Array{Int, 1}, | |
xh = repmat(linspace(origo[1] + .5*dx[1], L[1] - .5*dx[1], n[1]), 1, n[2]) | |
yh = repmat(linspace(origo[2] + .5*dx[2], L[2] - .5*dx[2], n[2])', n[1], 1) | |
- zl = linspace(-L[3] + .5*dx[3], -.5*dx[3], n[3]) | |
- zi = linspace(-L[3], 0., n[3] + 1) | |
+ zl = -linspace(.5*dx[3], L[3] - .5*dx[3], n[3]) | |
+ zi = -linspace(0., L[3], n[3] + 1) | |
u = zeros(n[1] + 1, n[2] + 1, n[3], length(time)) | |
v = zeros(n[1] + 1, n[2] + 1, n[3], length(time)) |