# Class FirstOrderR¶

class FirstOrderR : public Relation

FirstOrder Relation.

This is an abstract class for all relation operating on first order systems. The following subclasses can be used:

• FirstOrderNonlinearR: for fully nonlinear relations: $$y = h(t, X, \lambda, Z)$$ , $$R = g(t, X, \lambda, Z)$$ .

• FirstOrderType2R: specialization with $$y = h(t, X, \lambda, Z)$$ , $$R = g(t, \lambda, Z)$$ .

• FirstOrderType1R: further specialization with $$y = h(t, X, Z)$$ , $$R = g(t, \lambda, Z)$$ .

• FirstOrderLinearR: linear case: $$y = C(t)x + D(t)\lambda + F(t) z + e$$ , $$R = B(t)\lambda$$ .

• FirstOrderLinearTIR: time-invariant linear case: $$y = Cx + D\lambda + F z + e$$ , $$R = B\lambda$$ .

If the relation involves only one DynamicalSystem, then $$R = r$$ , $$X = x$$ , and $$Z = z$$ . With two, then $$R = [r_1, r_2]$$, $$X = [x_1 x_2]$$, and $$Z = [z_1 z_2]$$ .

Remember that $$y$$ and $$\lambda$$ are relation from the Interaction, and have the same size.

Public Functions

virtual ~FirstOrderR() noexcept = default

destructor

virtual void initialize(Interaction &inter) override

initialize the relation (check sizes, memory allocation …)

Parameters

inter – the interaction using this relation

inline void setCPtr(SP::SimpleMatrix newC)

set C to pointer newC

Parameters

newC – the C matrix

inline void setBPtr(SP::SimpleMatrix newB)

set B to pointer newB

Parameters

newB – the B matrix

inline void setDPtr(SP::SimpleMatrix newD)

set D to pointer newPtr

Parameters

newD – the D matrix

inline void setFPtr(SP::SimpleMatrix newF)

set F to pointer newPtr

Parameters

newF – the F matrix

inline virtual SP::SimpleMatrix C() const override

get C

Returns

C matrix

inline virtual SP::SimpleMatrix H() const override

get H

Returns

C matrix

inline SP::SimpleMatrix D() const

get D

Returns

D matrix

inline SP::SimpleMatrix F() const

get F

Returns

F matrix

inline SP::SimpleMatrix B() const

get B

Returns

B matrix

inline SP::SimpleMatrix K() const

get K

Returns

K matrix