File kernel/src/simulationTools/MoreauJeanBilbaoOSI.hpp

Contents

File kernel/src/simulationTools/MoreauJeanBilbaoOSI.hpp#

Go to the source code of this file

class MoreauJeanBilbaoOSI : public OneStepIntegrator
#include <MoreauJeanBilbaoOSI.hpp>

One-step integrator for event-capturing simulation combining Moreau-Jean and Bilbao numerical scheme.

Numerical scheme which combines an exact method (Bilbao) for the linear (non-contacting) part of the equations of motion with a Moreau-Jean time-stepping for the nonsmooth part.

Check details in users’guide.

Public Types

enum MoreauJeanBilbaoOSI_ds_workVector_id#

Values:

enumerator TWO_DT_SIGMA_STAR#
enumerator ONE_MINUS_THETA#
enumerator VFREE#
enumerator WORK_LENGTH#
enum MoreauJeanBilbaoOSI_interaction_workVector_id#

Values:

enumerator OSNSP_RHS#
enumerator WORK_INTERACTION_LENGTH#
enum MoreauJeanBilbaoOSI_interaction_workBlockVector_id#

Values:

enumerator xfree#
enumerator BLOCK_WORK_LENGTH#

Public Functions

MoreauJeanBilbaoOSI()

Constructor - No extra parameters: depends only on connected ds and simulation time step.

inline virtual ~MoreauJeanBilbaoOSI()

destructor

virtual void initializeWorkVectorsForDS(double t, SP::DynamicalSystem ds) override

initialization of the work vectors and matrices (properties) related to one dynamical system on the graph and needed by the osi

Parameters:
  • t – time of initialization

  • ds – the dynamical system

virtual void initializeWorkVectorsForInteraction(Interaction &inter, InteractionProperties &interProp, DynamicalSystemsGraph &DSG) override

initialization of the work vectors and matrices (properties) related to one interaction on the graph and needed by the osi

Parameters:
  • inter – the interaction

  • interProp – the properties on the graph

  • DSG – the dynamical systems graph

void _initialize_iteration_matrix(SP::DynamicalSystem ds)#
virtual void computeInitialNewtonState() override

compute the initial state of the Newton loop.

virtual void initialize_nonsmooth_problems() override

Initialization process of the nonsmooth problems linked to this OSI.

inline virtual unsigned int numberOfIndexSets() const override

get the number of index sets required for the simulation

Returns:

unsigned int

void compute_parameters(double time_step, double omega, double sigma, double &theta, double &sigma_star)#
inline SP::SimpleMatrix iteration_matrix(SP::DynamicalSystem ds)

get iteration_matrix (pointer link) corresponding to DynamicalSystem ds

Parameters:

ds – a pointer to DynamicalSystem

Returns:

pointer to a SiconosMatrix

virtual void integrate(double &tinit, double &tend, double &tout, int &idid) override

integrate the system, between tinit and tend (->iout=true), with possible stop at tout (->iout=false)

Parameters:
  • tinit – initial time

  • tend – end time

  • tout – real end time

  • idid – flag used in EventDriven schemes

virtual double computeResidu() override

return the maximum of all norms for the “MoreauJeanOSI-discretized” residus of DS

Returns:

a double

virtual void computeFreeState() override

Perform the integration of the dynamical systems linked to this integrator without taking into account the nonsmooth input ( _p)

virtual void computeFreeOutput(InteractionsGraph::VDescriptor &vertex_inter, OneStepNSProblem *osnsp) override

integrates the Interaction linked to this integrator, without taking non-smooth effects into account

Parameters:
  • vertex_inter – vertex of the interaction graph

  • osnsp – pointer to OneStepNSProblem

inline virtual SiconosVector &osnsp_rhs(InteractionsGraph::VDescriptor &vertex_inter, InteractionsGraph &indexSet) override

return the workVector corresponding to the right hand side of the OneStepNonsmooth problem

void updatePosition(DynamicalSystem &ds)

update the state of the dynamical systems

Parameters:

ds – the dynamical to update

virtual void updateState(const unsigned int level) override

update the state of the DynamicalSystem attached to this Integrator

Parameters:

level – level of interest for the dynamics level is set to 0 by default since in all time-stepping schemes we update all the state whatever the value of level is.

virtual void display() override

print the data to the screen

virtual void prepareNewtonIteration(double time) override#
virtual bool addInteractionInIndexSet(SP::Interaction inter, unsigned int i) override

Apply the rule to one Interaction to know if it should be included in the IndexSet of level i.

Parameters:
  • inter – the Interaction to test

  • i – level of the IndexSet

Returns:

Boolean

virtual bool removeInteractionFromIndexSet(SP::Interaction inter, unsigned int i) override

Apply the rule to one Interaction to know if it should be removed from the IndexSet of level i.

Parameters:
  • inter – the Interaction to test

  • i – level of the IndexSet

Returns:

Boolean

ACCEPT_STD_VISITORS()#

Protected Functions

ACCEPT_SERIALIZATION(MoreauJeanBilbaoOSI)#

Friends

friend struct _NSLEffectOnFreeOutput