>> I'm thinking of a cube in 3D which is first refined once globally. Then > one of the cells is refined further. Three outer _faces_ of the cube > (where we set boundary conditions) are then a 2D mesh with two hanging > nodes: > +-----+-----+ > | | | > | | | > | | | > +-----+--+--+ > | | | | > | +--+--+ > | | | | > +-----+--+--+
You are right. Are there any suggestions on how this issue should be handled? I'm not sure it is possible to automate this internally to ConstraintMatrix (i.e., transparently to the user). One quick fix to interpolate_boundary_values, which doesn't require major changes in the library, would be to check wether the given dof is already constrained, in which case the dirichlet inhomogeineity constraint is simply ignored. This should work for hanging nodes, and I cannot think of a "user case" in which this would be bad. This would also be valid in the case of periodic boundary conditions, since one dof (1) is set equal to the other (2). When interpolate_boundary_values is called, dof 1 is ignored (there is already a line there), while dof 2 is set equal to its value. The final result is (2) = bv, (1) = (2), which sounds correct to me, and if I think of any other case, this should be enouhg, i.e., the interpolate_boundary_values should *ignore* any dof which is already constrained. Any thoughts? L. _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
