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.
