File kernel/src/simulationTools/TimeSteppingDirectProjection.hpp

File kernel/src/simulationTools/TimeSteppingDirectProjection.hpp#

Go to the source code of this file

Time-Stepping simulation with projections on constraints

class TimeSteppingDirectProjection : public TimeStepping
#include <TimeSteppingDirectProjection.hpp>

Time-Stepping scheme with a direct projection onto the constraint thanks to the GGL augmentation of the system.

For details, have a look on Projected event-capturing time-stepping schemes for nonsmooth mechanical systems with unilateral contact and Coulomb’s friction Vincent Acary Computer Methods in Applied Mechanics and Engineering, Elsevier, 2013, 256, pp. 224-250

Public Functions

TimeSteppingDirectProjection(SP::NonSmoothDynamicalSystem nsds, SP::TimeDiscretisation td, SP::OneStepIntegrator osi, SP::OneStepNSProblem osnspb_velo, SP::OneStepNSProblem osnspb_pos, unsigned int _level = 1)

Constructor with the time-discretisation.

Parameters:
  • nsds – the nsds that we want to simulate

  • td – a pointer to a timeDiscretisation (linked to the model that owns this simulation)

  • osi – a one step integrator

  • osnspb_velo – a one step non smooth problem for the velocity formulation

  • osnspb_pos – a one step non smooth problem for the position formulation

  • _level

virtual void initializeOneStepNSProblem() override

initialisation specific to TimeStepping for OneStepNSProblem.

inline TimeSteppingDirectProjection()

default constructor

virtual ~TimeSteppingDirectProjection() noexcept = default#
inline virtual void updateWorldFromDS() override#
inline unsigned int nbProjectionIteration()
Returns:

the Number of iteration of projection

inline void setConstraintTol(double v)#
inline void setConstraintTolUnilateral(double v)#
inline double maxViolationUnilateral()#
inline double maxViolationEquality()#
inline void setProjectionMaxIteration(unsigned int v)#
inline void setDoProj(unsigned int v)#
inline void setDoOnlyProj(unsigned int v)#
virtual void advanceToEvent() override

step from current event to next event of EventsManager

virtual void nextStep() override

increment model current time according to User TimeDiscretisation and call SaveInMemory.

void computeCriteria(bool *runningProjection)#
virtual void newtonSolve(double criterion, unsigned int maxStep) override

newton algorithm

Parameters:
  • criterion – convergence criterion

  • maxStep – maximum number of Newton steps

ACCEPT_STD_VISITORS()#

Protected Functions

ACCEPT_SERIALIZATION(TimeSteppingDirectProjection)#

Protected Attributes

unsigned int _indexSetLevelForProjection#

level of IndexSet on which we project (default =1 (activated contact))

unsigned int _nbProjectionIteration#

Number of iteration of projection.

double _constraintTol#

tolerance for the violation of the equality constraints at the position level.

double _constraintTolUnilateral#

tolerance for the violation of the unilateral constraints at the position level.

double _maxViolationUnilateral#

maximum violation for the violation of the unilateral constraints at the position level.

double _maxViolationEquality#

maximum violation for the violation of the equality constraints at the position level.

unsigned int _projectionMaxIteration#

Default maximum number of projection iteration.

unsigned int _doProj#

disabled or enabled projection (Debug Projection)

unsigned int _doOnlyProj#