File kernel/src/modelingTools/FirstOrderLinearR.hpp#
Go to the source code of this file
Typedefs
-
typedef void (*FOMatPtr1)(double, unsigned int, unsigned int, double*, unsigned int, double*)#
Pointer to function used for plug-in for matrix-type operators (C,F etc)
-
typedef void (*FOMatPtr2)(double, unsigned int, double*, unsigned int, double*)#
Pointer to function used for plug-in for square matrix-type operators (D)
-
typedef void (*FOVecPtr)(double, unsigned int, double*, unsigned int, double*)#
Pointer to function used for plug-in for vector-type operators (e)
-
class FirstOrderLinearR : public FirstOrderR
- #include <FirstOrderLinearR.hpp>
First Order Linear Relation.
Linear Relation for First Order Dynamical Systems:
\[\begin{split} y &=& C(t,z)x(t) + F(t,z)z + D(t,z)\lambda + e(t,z) \\ R &=& B(t,z) \lambda \end{split}\]The following operators can be plugged: B(t,z), C(t,z), D(t,z), e(t,z), F(t,z)
Public Functions
-
inline FirstOrderLinearR()
default constructor
-
FirstOrderLinearR(const std::string &Cname, const std::string &Bname)
Constructor with C and B plugin names.
- Parameters:
Cname – the plugin name for computing the C matrix
Bname – the plugin name for computing the B matrix
-
FirstOrderLinearR(const std::string &Cname, const std::string &Dname, const std::string &Fname, const std::string &Ename, const std::string &Bname)
Constructor with all plugin names.
- Parameters:
Cname – the plugin name for computing the C matrix
Dname – the plugin name for computing the D matrix
Fname – the plugin name for computing the F matrix
Ename – the plugin name for computing the e vector
Bname – the plugin name for computing the B matrix
-
FirstOrderLinearR(SP::SimpleMatrix C, SP::SimpleMatrix B)
create the Relation from constant matrices (only B and C operators)
- Parameters:
C – the C matrix
B – the B matrix
-
FirstOrderLinearR(SP::SimpleMatrix C, SP::SimpleMatrix D, SP::SimpleMatrix F, SP::SiconosVector e, SP::SimpleMatrix B)
create the Relation from a set of data
- Parameters:
C – the C matrix
D – the D matrix
F – the F matrix
e – the e matrix
B – the B matrix
-
virtual ~FirstOrderLinearR() noexcept = default
destructor
-
inline void setComputeCFunction(const std::string &pluginPath, const std::string &functionName)
set a specified function to compute the matrix C
- Parameters:
pluginPath – the complete path to the plugin
functionName – the function name to use in this plugin
-
inline void setComputeDFunction(const std::string &pluginPath, const std::string &functionName)
set a specified function to compute the matrix D
- Parameters:
pluginPath – the complete path to the plugin
functionName – the function name to use in this plugin
-
inline void setComputeBFunction(const std::string &pluginPath, const std::string &functionName)
set a specified function to compute the matrix B
- Parameters:
pluginPath – the complete path to the plugin
functionName – the function name to use in this plugin
-
virtual void computeC(double time, BlockVector &z, SimpleMatrix &C)
Function to compute the matrix C.
- Parameters:
time – the current time
z – the auxiliary input vector
C – the C matrix
-
virtual void computeD(double time, BlockVector &z, SimpleMatrix &D)
Function to compute the matrix D.
- Parameters:
time – the current time
z – the auxiliary input vector
D – the D matrix
-
virtual void computeF(double time, BlockVector &z, SimpleMatrix &F)
Function to compute the matrix F.
- Parameters:
time – the current time
z – the auxiliary input vector
F – the F matrix
-
virtual void computee(double time, BlockVector &z, SiconosVector &e)
Function to compute the vector e.
- Parameters:
time – the current time
z – the auxiliary input vector
e – the e vector
-
virtual void computeB(double time, BlockVector &z, SimpleMatrix &B)
Function to compute the matrix B.
- Parameters:
time – the current time
z – the auxiliary input vector
B – the B matrix
-
virtual void computeh(double time, const BlockVector &x, const SiconosVector &lambda, BlockVector &z, SiconosVector &y)
to compute the output y = h(t,x,…) of the Relation
- Parameters:
time – current time value
x – coordinates of the dynamical systems involved in the relation
lambda – interaction \(\lambda\) vector
z – user defined parameters (optional)
y – the resulting vector
-
virtual void computeg(double time, const SiconosVector &lambda, BlockVector &z, BlockVector &r)
to compute the nonsmooth input r = g(t,x,…) of the Relation
- Parameters:
time – current time value
lambda – interaction \(\lambda\) vector
z – user defined parameters (optional)
r – the resulting vector
-
virtual void computeOutput(double time, Interaction &inter, unsigned int level = 0) override
default function to compute y
- Parameters:
time – current time
inter – Interaction using this Relation
level – not used
-
virtual void computeInput(double time, Interaction &inter, unsigned int level = 0) override
default function to compute r
- Parameters:
time – current time
inter – Interaction using this Relation
level – not used
-
virtual void display() const override
print the data to the screen
-
inline void setePtr(SP::SiconosVector newe)
set e operator
- Parameters:
newe – the new value of e
-
inline SP::SiconosVector e() const
get e
- Returns:
e matrix
-
inline virtual bool isLinear() override
determines if the Relation is linear
- Returns:
true if the relation is linear.
-
inline virtual void computeJach(double time, Interaction &inter) override
compute all the H Jacobian
- Parameters:
time – the current time
inter – the interaction using this relation
-
inline virtual void computeJacg(double time, Interaction &inter) override
compute all the G Jacobian
- Parameters:
time – the current time
inter – the interaction using this relation
interProp –
-
ACCEPT_STD_VISITORS()#
Protected Functions
-
ACCEPT_SERIALIZATION(FirstOrderLinearR)#
-
virtual void initialize(Interaction &inter) override#
initialize the relation (check sizes, memory allocation in workV and workM …)
- Parameters:
inter – Interaction using this Relation
-
virtual void checkSize(Interaction &inter) override#
check sizes of the relation specific operators.
- Parameters:
inter – an Interaction using this relation
-
inline FirstOrderLinearR()