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
>>
>>
>>

Reply via email to