Its a classical dense-within-the-band matrix (from a Finite Element
problem).
I want access to the solvers that are already supported by SparseMatrixCSC,
and interfacing them to another new type seems like a lot of work. If
there were an abstract CSC matrix type, this could be made much easier.
I've been hoping issues #8001, #9906, and #9928 would lead in that
direction, but so far they haven't.
The syntax is really what I am after with the overriding of the methods.
Using a macro is a safer alternative. I'll have to try that at some point.
Jared Crean
On Tuesday, August 11, 2015 at 7:25:06 PM UTC-4, Tony Kelman wrote:
>
> For storing explicit zeros you're best off modifying nzvals directly.
>
> In what way are you specializing your banded getindex method? Is this a
> classical banded but dense-within-the-band matrix, or general CSC sparse
> but with additional knowledge that no nonzeros ever have i and j different
> by more than the bandwidth? You're probably better off either making a new
> type for this that just wraps a SparseMatrixCSC for storage and either
> stores or is parameterized by the bandwidth, or using a different method
> other than getindex for this. If you'll miss the syntax, you could write a
> macro to locally replace getindex with your specialized version.
>
>
> On Tuesday, August 11, 2015 at 1:00:58 PM UTC-7, Jared Crean wrote:
>>
>> For a problem I am working on, I need to be able to store explicit zeros
>> in a SparseMatrixCSC. While the storage format supports this, the
>> setindex! method does not. Also, for banded sparse matricies I can define a
>> much more efficient getindex method than the generic one. When I define my
>> own method (importing the one from Base and then creating a method with the
>> same signature as the existing one) I get warnings of the type:
>>
>>
>> Warning: Method definition
>> getindex(Base.SparseMatrix.SparseMatrixCSC{#T<:Any, Ti<:Integer}, Integer,
>> Integer) in module SparseMatrix at sparse/sparsematrix.jl:1232 overwritten
>> in module PDESolverCommon at
>> /users/creanj/.julia/v0.4/PDESolverCommon/src/sparse.jl:63.
>>
>> My question is in what contexts is the method overwritten? In my local
>> context (the REPL session where I use the one I created). Do functions
>> within Base use the one in Base or the local one?
>>
>> Jared Crean
>>
>>
>>