Non Smooth Laws

A non-smooth law is an object used to define the behavior of the systems involved in an Interaction, when a non-smooth event occurs. For example, in the case of an impact, a Newton impact law will link the pre and post velocities at impact in something like “post-velocity = -e X pre-velocity”.

Each non-smooth law is characterized by:

  • a type (more or less the name of its class), i.e. what kind of law is required
  • the size of vectors involved in the law
  • some specific variables depending on its type.

Nonsmooth laws are defined in classes which name ends with “NSL”. All of them are derived from an abstract class which defines a generic interface, NonSmoothLaw.

Available classes: NonSmoothLaw, ComplementarityConditionNSL, EqualityConditionNSL, MixedComplementarityConditionNSL, MultipleImpactNSL, NewtonImpactNSL, NewtonImpactFrictionNSL, RelayNSL, NormalConeNSL.


Complementarity Condition

nsLawSize: 1. no specific parameters.

\[0 \leq y \perp \lambda\geq 0\]

Newton Impact

nsLawSize: 1.

parameter: e, the Newton normal coefficient of restitution.

\[if \ y(t)=0,\ 0 \leq \dot y(t^+) +e \dot y(t^-) \perp \lambda\geq 0\]

Newton Impact-Friction

nsLawSize: 2 or 3 (2 or 3 dimensional friction).

parameters: en, et (Newton impact normal and tangential coefficients) and mu, friction coefficient.

Newton Impact Law plus Coulomb Friction.

In this case, y components are in the following order:

  • first relation, normal part
  • first relation, tangential part
  • relation n, normal part
  • relation n, tangential part

and so on .

Note also that usually only normal part definition is required for y[0].


nsLawSize: 1.

parameters: c and d

\[\begin{split}\dot y &=0, \ d \leq \lambda \leq c \\ \dot y &\geq 0, \ \lambda = c \\ \dot y &\leq 0, \ \lambda = d \\\end{split}\]