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#
-
enumerator TWO_DT_SIGMA_STAR#
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
-
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
-
enum MoreauJeanBilbaoOSI_ds_workVector_id#