zero'ing parts of blocks

Matthew Knepley knepley at gmail.com
Fri Dec 4 13:53:31 CST 2009


On Fri, Dec 4, 2009 at 12:58 PM, Craig Tanis <craig-tanis at utc.edu> wrote:

> First of all, thanks for all the help on my recent questions!  Here's a new
> one:
>
> I have multiple degrees of freedom per node in an unstructured mesh.  I
> have set up an AO to get  the PETSC ordering for these global nodes, and
> then a LocalToGlobalMapping to map local indices to these AO-renumbered
> global nodes.   This appears to be working correctly.
>
> I create a Mat of type MATMPIBAIJ, and I use MatSetValuesBlockedLocal to
> add things to my matrix, as expected.   I have some boundary conditions that
> require certain rows within certain blocks to be zeroed out.  Conceptually,
> I would like to use MatZeroRowsLocal (which appears to operate on individual
> rows.. not on constituent blocks).  The problem is that this call complains
> that I have not set a LocalToGlobalMapping (since I've only set the block
> one).
>
> Is it common (or even possible) to register a LocalToGlobalMapping  a
> LocalToGlobalMappingBlock for a given Mat?
> Is there a way to extrapolate one from the other?
>

The easiest thing to do is take your block l2g mapping and produce a
row-wise l2g mapping by unrolling the
blocks. Set that in the matrix. Then the MatZeroRowsLocal will work.

  Matt


> If there is no way to Zero these rows individually, am I forced to get the
> block values, zero out the rows manually and then INSERT them back in?
>
> thanks again,
> Craig

-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20091204/8b0dd249/attachment.htm>


More information about the petsc-users mailing list