siconos.kernel.LagrangianRheonomousR (Python class)

class siconos.kernel.LagrangianRheonomousR(*args)[source]

Bases: siconos.kernel.LagrangianR

Lagrangian (Non Linear) Rheonomous Relation.

This class provides tools to describe non linear relation of the type:

\[\]

y = h(q,t,z) \ dot y = nabla^top_q(q,t,z)dot q + frac{partial }{partial t}h(q,t,z) \

or more generally

\[\]

dot y = H(q,t,z)dot q + frac{partial }{partial t}h(q,t,z)

and by duality

\[p = H^\top(q,t,z)\lambda\]

The following operators (and their jacobians) can be plugged, in the usual way (see User Guide, ‘User-defined plugins’)

  • \(h(q,t,z)\)
  • \(\nabla_q h(q,t,z)\)
  • \(\dot h(q,t,z)\)

The plugin functions must fit with the following signature (FPtr4):

void func(unsigned int qsize, double* q, double time, unsigned int ysize, double* buffer , unsigned int sizez, double* z)

buffer being either \(y\), \(\dot h\) or \(\nabla_qh\).

Generated class (swig), based on C++ header Program listing for file kernel/src/modelingTools/LagrangianRheonomousR.hpp.

Constructors

LagrangianRheonomousR(str pluginh, str pluginJacobianhq, str pluginDoth)

constructor from a set of data

Parameters:
  • pluginh – name of the plugin to compute h. Its signature must be “void userPluginH(unsigned int, double*, double, unsigned int, double*, unsigned int, double*)”
  • pluginJacobianhq – name of the plugin to compute jacobian h according to q. Its signature must be “void userPluginG0(unsigned int, double*, double, unsigned int, double*, unsigned int, double*)”
  • pluginDoth – name of the plugin to compute hDot. Its signature must be “void userPluginHDot(unsigned int, double*, double, unsigned int, double*, unsigned int, double*)
checkSize(Interaction inter) → None[source]

check sizes of the relation specific operators.

Parameters:inter – an Interaction using this relation
computeInput(double time, Interaction inter, int level=0) → None[source]

to compute p

Parameters:
  • time – current time
  • inter – the Interaction
  • level – “derivative” order of lambda used to compute input
computeJacg(double time, Interaction inter) → None[source]
computeJach(double time, Interaction inter) → None[source]

compute all the H Jacobian

Parameters:
  • time – the current time
  • inter – the interaction using this relation
computeJachq(double time, array_like (np.float64, 1D) q, array_like (np.float64, 1D) z) → None[source]

to compute the jacobian of h using plug-in mechanism.

Index shows which jacobian is computed

Parameters:
  • time – double, current time
  • q – the coordinates vector
  • z – the parameters vector
computeOutput(double time, Interaction inter, int derivativeNumber=0) → None[source]

to compute output

Parameters:
  • time – current time
  • inter – the Interaction
  • derivativeNumber – number of the derivative to compute, optional, default = 0.
computeh(double time, array_like (np.float64, 1D) q, array_like (np.float64, 1D) z, array_like (np.float64, 1D) y) → None[source]

to compute y = h(t,q,z) using plug-in mechanism

Parameters:
  • time – current time
  • q – the vector of coordinates
  • z – the vector of parameters
  • y – the y vector
computehDot(double time, array_like (np.float64, 1D) q, array_like (np.float64, 1D) z) → None[source]

to compute hDot using plug-in mechanism

Parameters:
  • time – current time
  • q – the vector of coordinates
  • z – the vector of parameters
hDot() -> array_like (np.float64, 1D)[source]

get a pointer on vector hDot

Returns:a smart pointer on a SiconosVector
initialize(Interaction inter) → None[source]

initialize G matrices or components specific to derived classes.

Parameters:inter – the Interaction
setComputehDotFunction(str pluginpath, str name) → None[source]

to set a specified function to compute function hDot

Parameters:
  • pluginpath – the complete path to the plugin
  • name – the name of the function to use in this plugin