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#
-
TimeSteppingDirectProjection(SP::NonSmoothDynamicalSystem nsds, SP::TimeDiscretisation td, SP::OneStepIntegrator osi, SP::OneStepNSProblem osnspb_velo, SP::OneStepNSProblem osnspb_pos, unsigned int _level = 1)