Johan Hake wrote:
> On Thursday 05 March 2009 17:13:02 Garth N. Wells wrote:
>> We have a high-level interface which provides operations like
>>
>>    A += B
>>
>> for matrices. 
> 
> For the record: This is not only for the python interface. The c++ operator+= 
> also use axpy.
> 

OK.

>> This causes some problems as it hides the complexity which 
>> is inherent in sparse matrices, in particularly with respect to whether
>> or not the two matrices have the same non-zero pattern. Unless someone
>> has a good idea as to get around this robustly, I suggest that we remove
>> these functions for matrices. A user can still do
>>
>>      A.axpy(1.0, B)
>>
>> or
>>
>>      A.axpy(1.0, B, True)
>>
>> where the last argument indicates whether or not the sparsity patterns
>> of A and B are the same (default is False).
> 
> A naive suggestion: 
> Is it possible to compute a unique number based on our SparsityPattern? This 
> number could be stored as a private member of a Matrix? Then only matrices 
> from the same SparsityPattern will be addable. When ever a Matrix is changed, 
> by other means than M.init(sp), this number will be set to some default 
> incompatible number.
> 

Unfortunately we can't be sure that the backend doesn't modify the 
non-zero pattern. For example, the matrix might be initialised with a 
sparsity pattern, but if an entry is added to a 'zero' entry, the 
pattern changes.

Garth

> If we do not find a robust way to do this I am fine with removing the 
> operators that use axpy, but I really think it is a neat feature which I 
> would like to keep.
> 
> Johan


_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to