← Back to team overview

dolfin team mailing list archive

Re: Diagonal operations on GenericMatrix

 

On Mon, Apr 04, 2011 at 08:10:22PM +0100, Garth N. Wells wrote:
>
>
> 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.

I think scale_columns is more informative, if that is what it actually
does.

(Is it implied by A *= D that it corresponds to A = A * D or can it be
A = D * A?)

--
Anders


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