>> 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

Reply via email to