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.

Reply via email to