← Back to team overview

dolfin team mailing list archive

Re: Diagonal operations on GenericMatrix

 

On Mon, Apr 04, 2011 at 12:00:47PM -0700, 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.

It depends on whether the multiplication is from the left or from the
right...

I think the function should be named scale_rows or scale_columns
depending on what it actually does.

--
Anders


> 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



References