Boundary Condition Handling Using Constraints
The way rigid boundary conditions are handled normally in PBD is to set the inverse mass of a node to zero, making the mass infinite and therefore immoveable. While this works, it has negative side effects on collision, namely the solution explodes if a user contacts near to or at a boundary point that is fixed. This is because collision constraints are expected to be solved exactly, and a small deformation near a fixed point causes a large deformation far from the fixed point along a constraint axis. This is a feature of the method, not a bug. There is currently a MR for a patch that will allow the solution to stay mostly stable under these conditions by ignoring collision constraints at and near fixed points.
A better long term solution would be to replace the current handling of boundary conditions with (zero inverse mass) with stiff constraints between boundary points and corresponding virtual points. That way the points are allowed to move slightly which should alleviate the explosion issue and still allow for contact constraints near a boundary.