General Slip DBC
Fortunately, for constraints like slip DBCs that are decoupled per node, SVD simply results in block-diagonal and which could be constructed procedurally in an efficient way. 3D planar slip DBC at node can be expressed as where is the normal of the plane that node is slipping, and is an arbitrary point on that plane. As discussed near Equation (5.1.2), if at the beginning of the time step node is already on the plane, the constraint simplifies to Then performing SVD on the row vector , we obtain where unit vectors , , and together form an orthonormal basis in 3D.
Then it becomes clear that globally, is simply a identity matrix, is a matrix where every row contains exactly one unit-valued entry in the column corresponding to the first DOF of the slip BC node, and is a block-diagonal matrix with the orthonormal blocks only on those corresponding to BC nodes, and identity matrix elsewhere.
To compute and from , we first note that there are an infinite number of possible solutions. Therefore, we can simply first construct , or if is almost colinear with , and then construct . To obtain , one only needs to left-multiply each to . As for , first left-multiply each to every block on the -th block row of to obtain . Then for the -th block column of , left-multiply to every block. Finally, after solving for by applying the DOF elimination method on the modified system (Equation (6.2.3)), can be obtained by with similar block(node)-wise operations.
Example 6.3.1 (General Slip DBC). For the same two-node system in 2D as mentioned in the slip DBC example (Example 5.1.2), to constrain the first node inside the line, the slip DBC can be expressed as and we can build for changing the basis. Then in a time step where this slip DBC is already satisfied, assume we have we can compute and solve the system for . Then the search direction can be obtained by so that and so the first node will stay on the line for arbitrary step size.