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 [[email protected]]
Sent: Saturday, September 20, 2014 1:16 AM
To: Feng  Shi; [email protected]
Subject: Re: [petsc-users] How to set matrix values using "MatSetValuesStencil" 
when dof>1 idxn -

Feng  Shi <[email protected]> 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.

Reply via email to