File kernel/src/modelingTools/RelayNSL.hpp

Go to the source code of this file

formalization of the Relay nonsmooth law

class RelayNSL : public NonSmoothLaw
#include <RelayNSL.hpp>

Relay NonSmoothLaw.

This class formalizes the Relay nonsmooth law i.e.

\begin{array}{l} -y \in \mathcal{N}_{[lb,ub]}(\lambda), \end{array}

where \(lb\) is the lower bound and \(ub\) is the upper bound of the Relay law.

In this default case, the lower bound is set to \(lb=-1\) and the upper bound ub is set to \(ub=1\). We get the well-known form of the RelayNSL as the multivalued sign function, i.e.

\begin{array}{l} y \in -\mathcal{N}_{[-1,1]}(\lambda)\quad \Longleftrightarrow \quad\lambda \in -\mbox{sgn} (y) \end{array}
where the multi-valued sign function is defined as

\mbox{sgn} (y) = \left\{ \begin{array}{lcl} 1 &\quad& y >0 \\ \,[-1,1] &\quad& y =0 \\ -1 &\quad& y <0 \\ \end{array}\right.

Public Functions

RelayNSL(unsigned int size, double lb = -1.0, double ub = 1.0)

constructor with the value of the RelayNSL attributes

  • size: size of the NonSmoothLaw

  • lb: lower endpoint of the interval, default value is -1.0

  • ub: upper endpoint of the interval, default value is 1.0


visitors hook

void display() const

print the data to the screen

bool isVerified() const

check the ns law to see if it is verified


true if the NS Law is verified, false otherwise

double lb() const

to get lb


the value of lb

void setLb(double lb)

to set the lower bound

  • lb: the new lower bound

void setUb(double ub)

to set ub

  • ub: the new upper bound

double ub() const

to get ub


the value of ub

Private Functions


default constructor


serialization hooks

Private Members

double _lb

represent the lower bound of the Relay

double _ub

represent the upper bound of the Relay