Class EventDriven#

Defined in Program listing for file kernel/src/simulationTools/EventDriven.hpp

class EventDriven : public Simulation#

Simulation based on event driven method, ie events detection (see theoretical manual for more details).

WARNING: at the time only written for Lagrangian systems !!!

Public Functions

EventDriven(SP::NonSmoothDynamicalSystem nsds, SP::TimeDiscretisation td)#

defaut constructor

Parameters:
  • nsds – current nonsmooth dynamical system

  • td – time discretisation

EventDriven(SP::NonSmoothDynamicalSystem nsds, SP::TimeDiscretisation td, int nb)#

constructor with data

Parameters:
  • nsds – current nonsmooth dynamical system

  • td – time discretisation

  • nb – number of NSProblem

inline EventDriven()#

defaut constructor (needed for serialization)

~EventDriven() noexcept = default#

destructor

virtual void initialize() override#

Overload Simulation::initialize.

virtual void firstInitialize() override#

First (and unique) run of initialization step.

inline void setIstate(int newValue)#

Set value to _istate.

Parameters:

newValue

inline double istate()#

Get value of _istate.

Returns:

_istate a double

inline void setToleranceED(double var)#

Set value to _TOL_ED.

Parameters:

var – the new tolerance

inline double toleranceED()#

Get value of _epsilon.

Returns:

double

inline bool isNewtonConverge()#

To know if Newton Iteratio is convergent.

Returns:

_isNewtonConverge

inline unsigned int getNewtonNbIterations()#

To known the number of steps performed by the Newton algorithm.

Returns:

_newtonNbIterations

inline void setNewtonMaxIteration(unsigned int maxStep)#

Set value to the maximum number of iterations.

Parameters:

maxStep – maximum number of step

inline void setLocalizeEventsMaxIteration(unsigned int maxIter)#

To set maximum number of iterations to localize events.

Parameters:

maxIter – maximum number of iterations

inline double newtonMaxIteration()#

get the maximum number of Newton iteration

Returns:

unsigned int

inline unsigned int LocalizeEventsMaxIteration()#

get the maximum number of iterations to localize events

Returns:

unsigned int: maximum number of iterations

inline double newtonResiduDSMax()#

accessor to _newtonResiduDSMax

Returns:

double _newtonResiduDSMax

inline double newtonResiduYMax()#

accessor to _newtonResiduYMax

Returns:

double _newtonResiduYMax

inline void setNewtonTolerance(double tol)#

set the Default Newton tolerance

Parameters:

tol – new tolerance

inline double newtonTolerance()#

get the Newton tolerance

Returns:

tolerance

virtual void insertIntegrator(SP::OneStepIntegrator) override#

Redefine method insertIntegrator of the class Simulation.

virtual void updateIndexSet(unsigned int i) override#

update indexSets[i] of the topology, using current y and lambda values of Interactions.

Parameters:

i – the number of the set to be updated

void updateIndexSetsWithDoubleCondition()#

update indexSets[1] and [2] (using current y and lambda values of Interactions) with conditions on y[2] AND lambda[2].

void computef(OneStepIntegrator &osi, integer *sizeOfX, doublereal *time, doublereal *x, doublereal *xdot)#

compute right-hand side of xdot = f(x,t), for the integrator osi.

Parameters:
  • osi – the integrator (Lsodar)

  • sizeOfX – size of vector x

  • time – current time given by the integrator

  • x – state vector

  • xdot – derivative of x

void computeJacobianfx(OneStepIntegrator &osi, integer *sizeOfX, doublereal *time, doublereal *x, doublereal *jacob)#

compute jacobian of the right-hand side

Parameters:
  • osi – the integrator (Lsodar)

  • sizeOfX – size of vector x

  • time – current time given by the integrator

  • x – state vector

  • jacob – jacobian of f according to x

virtual unsigned int computeSizeOfg()#

compute the size of constraint function g(x,t,…) for osi

Returns:

unsigned int

virtual void computeg(SP::OneStepIntegrator osi, integer *sizeX, doublereal *time, doublereal *x, integer *sizeG, doublereal *g)#

compute constraint function g(x,t,…) for osi.

Parameters:
  • osi – pointer to OneStepIntegrator.

  • sizeX – integer*, size of vector x

  • time – doublereal*, time

  • x – doublereal*, x:array of double

  • sizeG – integer*, size of vector g (ie number of constraints)

  • g – doublereal*, g (in-out parameter)

void updateImpactState()#

update input for impact case (ie compute p[1])

void updateSmoothState()#

update state for smooth dynamic case (i.e.

compute p[2] and update acceleration)

inline virtual void updateInput(unsigned int level) override#

update input

Parameters:

level – of lambda used to compute input

virtual void updateState(unsigned int level) override#

update state.

Parameters:

level – of lambda used to compute input

virtual void updateOutput(unsigned int level) override#

update output and indexSets.

Parameters:

level – of lambda used to compute input

virtual void advanceToEvent() override#

run simulation from one Event to the next, according to events manager settings.

double computeResiduConstraints()#

Methods for NewMarkAlphaOSI scheme.

compute maximum residu over all gap functions of Index2 contacts

Returns:

double: maximum residu for all gap functions

void prepareNewtonIteration()#

prepare for Newton iterations for all OSIs

Returns:

maximum residu over all DSs

bool newtonCheckConvergence(double)#

Check convergence of Newton iteration.

Returns:

bool: true if convergent, false otherwise

void predictionNewtonIteration()#

Predict the state of all Dynamical Systems before Newton iterations.

void correctionNewtonIteration()#

Correct the state of all Dynamical Systems during Newton iterations.

void newtonSolve(double criterion, unsigned int maxStep)#

Newton iteration to get the state of all Dynamical Systems at the end of step.

Parameters:
  • criterion – tolerance to check convergence

  • maxStep – maximum number of steps

double detectEvents(bool updateIstate = true)#

Detect whether or not events occur during each integration step.

Parameters:

updateIstate – true if we need to update the flag _istate, false otherwise

Returns:

double, maximum of absolute values of constraint fonctions over all activated ot deactivated contacts

void LocalizeFirstEvent()#

Localize time of the first event.