Class NonSmoothLaw

Defined in Program listing for file kernel/src/modelingTools/NonSmoothLaw.hpp

class NonSmoothLaw

Non Smooth Laws (NSL) Base Class.

This class is the base class for all nonsmooth laws in Siconos. A nonsmooth law characterize the (nonsmooth) relationship between 2 variables, usually designated by \(y\) and \(\lambda\). \(y\) is most of time seen as the “input” from DynamicalSystems and is given by a Relation linked to this nonsmoothlaw. \(\lambda\) is then the “output” and through the same Relation is fed back to one or more DynamicalSystem.

classical examples of nonsmooth law include:

The computation of both \(y\) and \(\lambda\) is carried on by a solver in Numerics through a OneStepNSProblem object.

Subclassed by ComplementarityConditionNSL, EqualityConditionNSL, MixedComplementarityConditionNSL, MultipleImpactNSL, NewtonImpactFrictionNSL, NewtonImpactNSL, NewtonImpactRollingFrictionNSL, NormalConeNSL, RelayNSL

Public Functions

NonSmoothLaw(unsigned int size)

basic constructor

  • size: the nonsmooth law size

virtual ~NonSmoothLaw()


virtual void display() const = 0

display the data of the NonSmoothLaw on the standard output

virtual bool isVerified() const

check if the NS law is verified


a boolean value which determines if the NS Law is verified

unsigned int size() const

to get the size


the size of the NS law


visitors hook