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