Andrew,

> I've had similar problems with hanging nodes that occur on faces where I
> have Dirichlet constraints. My way of handling this was to create separate
> ConstraintMatrices for hanging node and Dirichlet constraints and then do a
> customised merge. The customised merge allows you (the user) to decide
> which set of constraints should dominate. I don't think this decision
> should be made by the library.

Right now if ConstraintMatrix::merge is called and both objects have a 
constraint for the same DoF, an exception is thrown. I think it would not be 
unreasonable to extend the function in the direction you already have, i.e.

class ConstraintMatrix {
    enum MergeDecision {
       no_conflicts_allowed,
       left_object_wins,
       right_object_wins };

  void merge (const ConstraintMatrix &,
            const MergeDecision = no_conflicts_allowed);
};

Would that fit what you want? Want to help implement it?

Best
 W.
-- 
-------------------------------------------------------------------------
Wolfgang Bangerth                email:            [email protected]
                                 www: http://www.math.tamu.edu/~bangerth/

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to