Thanks for the response. I think I have settled on how to get this to work. 
This is what I have right now

immutable ShiftedInterpGrid{T,N,BC,IT}
    IG::InterpGrid{T,N,BC,IT}
    m::Number
    b::Number
end

function ShiftedInterpGrid{T,BC,IT}(V::Vector{T}, X::Vector{T}, ::Type{BC}, 
::Type{IT})
    n = size(X, 1)
    (b, m) = [1 X[1]; 1 X[n]] \ [1; n]
    IG = InterpGrid(V, BC, IT)
    ShiftedInterpGrid(IG, m, b)
end

function getindex{T,R<:Real}(G::ShiftedInterpGrid{T,1}, x::AbstractVector{R})
    s_x::AbstractVector{R} = G.b .+ G.m.*x
    return getindex(G.IG, s_x)
end

function getindex{T,R<:Real}(G::ShiftedInterpGrid{T,1}, x::R)
    s_x::R = G.b + G.m * x
    return getindex(G.IG, s_x)
end

It seems to me that this would be fairly standard functionality. I am sure 
there is a benefit to having the default getindex methods deal in “index 
units” instead of physical ones, but I can’t tell what that benefit is? Is 
there a reason you chose to have it set up the way it is?

Thanks again,

Spencer

Reply via email to