[petsc-users] How to set matrix values using "MatSetValuesStencil" when dof>1 idxn -

Feng Shi fshi at fit.edu
Sat Sep 20 00:55:41 CDT 2014

I'm sorry I've no idea on the finite element, but for the finite difference, say for a 3-D case, we could use 7-point differentiation method, so the routine would be MatSetValuesStencil(A_mat, 1, &row, 7, col, val, INSERT_VALUES). I know 7 denotes the 7-points in space for differentiation and array val[0:6]. If I use MatSetValuesBlockedStencil, am I right using MatSetValuesBlockedStencil(A_mat, 1, &row, 7, col, val, INSERT_VALUES), where array is val[0:1][0:7] for dof=2?

Best regards,

From: Jed Brown [jed at jedbrown.org]
Sent: Saturday, September 20, 2014 1:16 AM
To: Feng  Shi; petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] How to set matrix values using "MatSetValuesStencil" when dof>1 idxn -

Feng  Shi <fshi at fit.edu> writes:

> Hi Folks,
> I get hard times in using the routine MatSetValuesStencil for
> dof>1. There numerous examples for dof=1 but dof>1, neither in the
> Petsc manual. The routine on-line manual
> (http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValuesStencil.html) says, idxm/idxn are grid coordinates (and component number when dof > 1) for matrix columns being entered. What is the general form of these indices?

If you have dof>1, please use MatSetValuesBlockedStencil.  See
src/snes/examples/tutorials/ex48.c for an example usage for a
finite-element method.

> Am I right, for example, for idxn, if I write idxn[ix, dof].i?

That's not valid syntax, so I don't know what you're asking.

More information about the petsc-users mailing list