← Back to team overview

dolfin team mailing list archive

Re: Diagonal operations on GenericMatrix

 


On 04/04/11 20:00, Johan Hake wrote:
> On Monday April 4 2011 11:55:05 Garth N. Wells wrote:
>> On 04/04/11 19:51, Johan Hake wrote:
>>> Hello!
>>>
>>> I would very much like to have something like:
>>>   // Set the diagonal of a matrix
>>>   GenericMatrix::set_diagonal(const GenericVector& vec);
>>>   
>>>   // Scale Matrix with a diagonal matrix (represented as a Vector)
>>>   GenericMatrix::scale(const GenericVector& vec);
>>>   (maybe use operator*=)
>>>
>>> added to the GenericMatrix interface.
>>>
>>> The corresponding backend specific methods would be:
>>>   // PETSc
>>>   MatDiagonalSet
>>>   MatDiagonalScale
>>>   
>>>   // Epetra
>>>   ReplaceDiagonalValues
>>>   RightScale
>>>   
>>>   // MTL4/uBLAS find out later...
>>>
>>> which should ensure the methods works in parallel too.
>>>
>>> Any objections or advices in respect to implement these?
>>
>> Fine with me, but could GenericMatrix::scale have a better name? It's
>> not clear to me what it would do. Scale the diagonal, or scale the rows
>> or the columns?
> 
> It basically doing:
> 
>   A*=D
> 
> where D is a diagonal matrix given by the a vector. And I guess this would 
> then correspond to a column scale.
> 

OK. It might get complicated, but we could have a

    (Generic)DiagonalMatrix

class?

Otherwise, GenericMatrix::right_scale is probably an OK name.

Garth

> Johan
>  
>> Garth
>>
>>> Best regards,
>>>
>>> Johan
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~dolfin
>>> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~dolfin
>>> More help   : https://help.launchpad.net/ListHelp
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dolfin
>> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dolfin
>> More help   : https://help.launchpad.net/ListHelp



Follow ups

References