[petsc-users] Correct Usage of MatDiagonalSet

Jed Brown jed at jedbrown.org
Mon May 25 11:52:34 CDT 2020


Edoardo alinovi <edoardo.alinovi at gmail.com> writes:

> Dear Guys,
>
> I have quick question for you. Can anyone tell me if MatDiagonalSet needs
> also MatAssemblyBegin/MatAssemblyEnd to be called afterwards or not?

It's called internally so you don't have to call again.

> Basically, I am trying to compute: sum (a_nb*\phi_nb), where anb are the
> off diagonal coeffs of the matrix and phi_nb the corresponding field
> values.
>
> I was thinking to set the matrix diagonal to zero using MatDiagonalSet and
> then simply use MatMult(A, x) to accomplish my task. Do we have a better
> way in PETSc?  Any suggestion in welcome :)

An alternative would be to extract the diagonal and subtract off the
result of VecPointwiseMult(w, diag, phi).


More information about the petsc-users mailing list