File kernel/src/modelingTools/FirstOrderR.hpp#

Go to the source code of this file

General interface for relations.

class FirstOrderR : public Relation
#include <FirstOrderR.hpp>

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.

Subclassed by FirstOrderLinearR, FirstOrderLinearTIR, FirstOrderNonLinearR, FirstOrderType1R, FirstOrderType2R

Public Types

enum FirstOrderRDS#

Values:

enumerator x#
enumerator z#
enumerator r#
enumerator DSlinkSize#
enum FirstOrderRVec#

Values:

enumerator e#
enumerator relationVectorsSize#
enum FirstOrderRMat#

Values:

enumerator mat_C#
enumerator mat_D#
enumerator mat_F#
enumerator mat_B#
enumerator mat_K#
enumerator relationMatricesSize#

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

Protected Functions

ACCEPT_SERIALIZATION(FirstOrderR)#
inline FirstOrderR(RELATION::SUBTYPES newType)#

basic constructor

Parameters:

newType – the type of the relation

Protected Attributes

SP::SimpleMatrix _C = {nullptr}#

A matrix to store the constant Jacobian of h(t, X, lambda, Z) w.r.t X.

SP::SimpleMatrix _D = {nullptr}#

A matrix to store the constant Jacobian of h(t, X, lambda, Z) w.r.t lambda.

SP::SimpleMatrix _F = {nullptr}#

A matrix to store the constant Jacobian of h(t, X, lambda, Z) w.r.t Z.

SP::SimpleMatrix _B = {nullptr}#

A matrix to store the constant Jacobian of g(t, X, lambda, Z) w.r.t lambda.

SP::SimpleMatrix _K = {nullptr}#

A matrix to store the constant Jacobian of g(t, X, lambda, Z) w.r.t X.