From: Roy S. <roy...@ic...> - 2018-01-25 23:06:22
|
On Thu, 25 Jan 2018, David Knezevic wrote: > Hi all (though Roy I think you're the expert on this one ;) ), Well, I was the least-amateur when I refactored the code, but an *expert* would have also properly documented it, so apparently none of those were available. > I know that in DofMap::process_constraints libMesh handles communicating > the constraint rows to the processes that need to know about them, but I > just want to make sure that I satisfy any requirements that we have on how > user-defined constraint rows should be set up in parallel initially. Good question! IIRC: on ReplicatedMesh we try to avoid communication as much as possible, so you have to add user constraints identically on every processor. There might be ways to get around that (add local constraints only, then re-add after any repartitioning?) but I definitely wouldn't suggest trying to depend on them. > In particular: are we required to set up the constraint row only on > the process that owns the constrained dof index, or can the > constraint row be on any process (or all processes)? On DistributedMesh we set up library-added constraint rows on the process that owns the constrained index, and I *think* we have the same restriction on user constraints (to avoid the need for an initial usually-redundant communication sweep sending out ghost dof constraints). --- Roy |