# Smooth triangulation edge contacts¶

## Motivation¶

In in interaction of rather compliant particles with triangulated surface, internal edges of the surface can influence the simulation. Fig. 11 shows a simple case where such artefacts can be encoutered.

## Edge smoothing¶

To counter this effect, contacts of particles with internal edges (and with internal vertices) are regularized in such way that the contact force is always within the range of facet’s both normals. (An edge is considered internal if facet shares both nodes of that respective edge with another single facet; a vertex is considered internal if both adjacent edges are internal.) Normals were parallel in Fig. 11, but in general case of a curved surface, they are not; such a case is shown in Fig. 12.

The original contact normal \(\vec{n}\) will have be adjusted to the new normal \(\vec{n}'\) so that motion parallel to the surface is not obstructed. The relationship between \(\vec{n}_1\) and \(\vec{n}_2\) (which is constant for non-deforming meshes) is stored in the scalar \(n_{\rm lim}=\vec{n}_1\cdot\vec{n}_2\) which determines boundary values for 3 zones of adjustment.

The blue zone is when contact normal \(\vec{n}\) is between \(\vec{n}_1\) and \(\vec{n}_2\), i.e. when

\[n_{\rm lim}\leq\vec{n}\cdot\vec{n}_1.\]In this case, there is no need for adjustment, thus \(\vec{n}\equiv\vec{n}'\).

The red zone is convex contact with the edge; the condition is

\[-o_{\rm lim}<\vec{n}\cdot\vec{n}_1<n_{\rm lim}\]with the perpendicular component computed simply as

\[o_{\rm lim}=\sqrt{1-n_{\rm lim}^2}.\]In this case, the adjusted normal will be \(\vec{n}'=\vec{n}_2\) and the contact point will be contacting particle’s center projected onto plane defined by \(\mathbf{E}_{12}\) and normal \(\vec{n}_2\).

The green zone is concave contact with the edge; the condition is

\[\vec{n}\cdot\vec{n}_1\leq-o_{\rm lim},\]the adjusted normal becomes \(\vec{n}'=-\vec{n}_1\) and contact point is particle’s center projected onto plane defined by \(\mathbf{E}_{12}\) and normal \(\vec{n}_1\).

Note

In general case, the computation somewhat more complicated due to the fact that (a) normals \(\vec{n}_1\), \(\vec{n}_2\) may not be oriented consistently and (b) both cases of convex and concave edge must be handled, from both sides of possible contact.

Tip

Ask questions or report issues at github.