On 04/28/2016 06:36 AM, Marc Fehling wrote:
> I followed step-11
> <
https://dealii.org/8.4.0/doxygen/deal.II/step_11.html> and basically
> tried to implement the third possibility that constraints the boundary
> dofs to have a mean value of zero. This works with one CPU, but fails
> with more than one, because each CPU would need the information of all
> boundary dofs and I don't know how to distribute it. The other question
> is how this will worsen the total runtime of the program, especially
> regarding solver and preconditioner (currently: GMRES with AMG).
In addition to what Timo already said, here's an additional consideration:
If you couple M of the total of N degrees of freedom (e.g., the M DoFs
on the boundary), you will get an MxM dense sub-block of your system
matrix. If you run in parallel, I suspect that you have a large problem,
where M is going to be large as well. In 3d, for example, you will have
M=O(N^{2/3}), so an MxM dense block of the matrix may well contain the
vast majority of matrix elements. You really don't want to do this. It
will certainly also throw off any of the preconditioners you would
typically use.
The better approach is to pin a single degree of freedom to a particular
value, e.g., the first DoF on the first processor.
Best
W.
--
------------------------------------------------------------------------
Wolfgang Bangerth email:
bang...@math.tamu.edu
www:
http://www.math.tamu.edu/~bangerth/