[petsc-dev] Scatter a single local value to multiple global values

Jed Brown jed at jedbrown.org
Wed Feb 22 11:36:07 CST 2017

Chris Eldred <chris.eldred at gmail.com> writes:

> Hey Jed,
> That makes sense now, thanks! It sounds like the correct way to do things is:
> For matrices:
> 1) for each set of coupled dofs, select 1 to be the master and modify
> the local to global maps such that all the local indices that
> previously pointed to the slave dofs now point to the master dof
> -> assembly doesn't produce anything for the slave rows
> 2) fill the rows for the slave dofs with a -1 in the master column and
> 1 in the slave column (since we are just enforcing slave = master).

It's better to not store slave dofs in the global matrix.  Just use the
local-to-global mapping so that you get it in your local spaces.  What
you describe makes the matrix nonsymmetric and possibly ill-conditioned
(depends on scaling of the other dofs).

> For residuals, just do 1) and then set slave dofs equal to the master dof.

What you describe above with +1 and -1 requires a right-hand side of 0.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170222/d9e7ff54/attachment.sig>

More information about the petsc-dev mailing list