Heinrich,
The way constraints are resolved in deal.II is as follows (related to *M.
S. Shephard: Linear multipoint constraints applied via transformation as
part of a direct stiffness assembly process. Int. J. Numer. Meth. Engrg.,
vol. 20 (1984), pp. 2107-2112.*):
You have a linear system Ax=b and some (linear) constraints C such that x =
C\overline{x}+k where \overline{x} is the reduced set of DoFs you want to
solve for.
This implies A (C\overline{x}+k)=b or C^TAC \overline{x}=C^T(b-Ak). For
your example, you have a_{i,j}=\delta_{ij} and c_{i,j}=\delta{ij} apart
from row 8 where c_{8,0}=c_{8,2}=.5 and c_{8,8}=0.
Therefore, C^TAC takes exactly the form you observe above (we add 1/4 to
a_{0,0}, a_{0,2}, a_{2,0} and a_{2,2}) apart from row 8 where we keep the
constraint DoF. The same applies to the right-hand side. After solving, all
the DoFs apart from DoF 8 should have the correct value and we correct this
with a call to constraints.distribute().
The linear system that A corresponds to comes form a bilinear form that is
stated in terms of the constrained degrees of freedom and the result of
assembling the unconstrained matrix is just an auxiliary object. Therefore,
the above approach is correct while you are doing something different.
That said, you can consider the linear system C^TAC
\overline{x}=C^T(b-Ak) (constructed by deal.II) and replace the rows for
the constrained degrees of freedom by the constraints. That way all the
information is contained in the linear system and no modification of the
solution vector is necessary.
Best,
Daniel
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.