view grid.jl @ 14:b11b67c02d1a

Started implementing grids
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 17 Dec 2018 14:45:10 +0100
parents b714e341a0ba
children 3d032081832d
line wrap: on
line source

module grid

abstract type Grid end

function numberOfDimensions(grid::Grid)
    error("Not yet implemented");
end

function numberOfPoints(grid::Grid)
    error("Not yet implemented");
end

function points(grid::Grid)
    error("Not yet implemented");
end

abstract type BoundaryId end

# Move to seperate file.
struct EquidistantGrid <: Grid
    numberOfDimensions::UInt;
    numberOfPoints::Vector(UInt);
    limits::Vector{Pair{Real, Real}};
    function EquidistantGrid(nDims, nPoints, lims)
        @assert nDims == size(nPoints);
        return new(nDims, nPoints, lims);
    end
end

# Getter functions for public properties?
function numberOfDimensions(grid::EquidistantGrid)
    return grid.numberOfDimensions;
end

function numberOfPoints(grid::EquidistantGrid)
    return grid.numberOfPoints;
end


function points(grid::EquidistantGrid)
    points::Array{Real,3}(undef, numberOfPoints(grid));
#    for i ∈ eachindex(points)
#        points(i) = i/
#    end
    return points;
end

function limitsForDimension(grid::EquidistantGrid, dim::UInt)
    @assert dim <= 3
    @assert dim >= 1
    return grid.limits(dim);
end