chrono::ChTimestepperNewmark Class Reference

Description

Newmark constrained implicit for II order DAE systems.

#include <ChTimestepperImplicit.h>

Inheritance diagram for chrono::ChTimestepperNewmark:
Collaboration diagram for chrono::ChTimestepperNewmark:

Public Member Functions

 ChTimestepperNewmark (ChIntegrableIIorder *intgr=nullptr)
 
virtual Type GetType () const override
 Return type of the integration method. More...
 
virtual ChIntegrableGetIntegrable () const override
 Return the associated integrable object.
 
void SetGammaBeta (double gamma_val, double beta_val)
 Set the numerical damping parameter gamma and the beta parameter. More...
 
double GetGamma () const
 
double GetBeta () const
 
virtual void OnAdvance (double dt) override
 Perform an integration step.
 
virtual void ArchiveOut (ChArchiveOut &archive) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive) override
 Method to allow de-serialization of transient data from archives.
 
- Public Member Functions inherited from chrono::ChTimestepperIIorder
virtual ChStateGetStatePos ()
 Access the state, position part, at current time.
 
virtual ChStateDeltaGetStateVel ()
 Access the state, speed part, at current time.
 
virtual ChStateDeltaGetStateAcc ()
 Access the acceleration, at current time.
 
virtual void SetIntegrable (ChIntegrableIIorder *intgr)
 Set the integrable object.
 
ChIntegrableIIorderGetIntegrableIIorder () const
 Get the integrable object.
 
- Public Member Functions inherited from chrono::ChTimestepperImplicit
void SetMaxIters (int iters)
 Set the max number of Newton iterations.
 
void SetRelTolerance (double rel_tol)
 Set the relative tolerance. More...
 
void SetAbsTolerances (double abs_tolS, double abs_tolL)
 Set the absolute tolerances. More...
 
void SetAbsTolerances (double abs_tol)
 Set the absolute tolerances. More...
 
void SetJacobianUpdateMethod (JacobianUpdate method)
 Set the strategy for Jacobian update (default: EVERY_STEP).
 
double GetMaxIters () const
 Get the max number of iterations using the Newton Raphson procedure.
 
JacobianUpdate GetJacobianUpdateMethod () const
 Get the current Jacobian update startegy.
 
unsigned int GetNumStepIterations () const
 Return the number of Newton iterations over the last step.
 
unsigned int GetNumStepSetupCalls () const
 Return the number of calls to the solver's Setup function made during the last step.
 
unsigned int GetNumStepSolveCalls () const
 Return the number of calls to the solver's Solve function made over the last step.
 
double GetEstimatedConvergenceRate () const
 Get the last estimated convergence rate for the internal Newton solver. More...
 
unsigned int GetNumIterations () const
 Return the cumulative number of Newton iterations.
 
unsigned int GetNumSetupCalls () const
 Return the cummulative number of calls to the solver's Setup function.
 
unsigned int GetNumSolveCalls () const
 Return the cumulative number of calls to the solver's Solve function.
 
void AcceptTerminatedStep (bool accept)
 Accept step after a non-converged Newton solve (default: true). More...
 
unsigned int GetNumTerminated () const
 Return the number of terminated Newton solves. More...
 
void SetStepControl (bool enable)
 Turn on/off the internal step size control. More...
 
void SetMinStepSize (double step)
 Set the minimum step size. More...
 
void SetMaxItersSuccess (int iters)
 Set the maximum allowable number of iterations for counting a step towards a stepsize increase. More...
 
void SetRequiredSuccessfulSteps (int num_steps)
 Set the minimum number of (internal) steps that use at most maxiters_success before considering a stepsize increase. More...
 
void SetStepIncreaseFactor (double factor)
 Set the multiplicative factor for a stepsize increase (must be larger than 1). More...
 
void SetStepDecreaseFactor (double factor)
 Set the multiplicative factor for a stepsize decrease (must be smaller than 1). More...
 
virtual void Advance (double dt) override final
 Perform an integration step. More...
 
- Public Member Functions inherited from chrono::ChTimestepper
virtual ChVectorDynamicGetLagrangeMultipliers ()
 Access the Lagrange multipliers, if any.
 
virtual double GetTime () const
 Get the current time.
 
virtual void SetTime (double mt)
 Set the current time.
 
void SetVerbose (bool verb)
 Turn on/off logging of messages.
 

Additional Inherited Members

- Public Types inherited from chrono::ChTimestepperImplicit
enum  JacobianUpdate { JacobianUpdate::EVERY_ITERATION, JacobianUpdate::EVERY_STEP, JacobianUpdate::NEVER, JacobianUpdate::AUTOMATIC }
 Newton Jacobian update strategies. More...
 
- Public Types inherited from chrono::ChTimestepper
enum  Type {
  EULER_EXPLICIT_I, EULER_EXPLICIT_II, EULER_SEMI_IMPLICIT, RUNGE_KUTTA,
  HEUN, LEAPFROG, EULER_IMPLICIT, EULER_IMPLICIT_LINEARIZED,
  EULER_IMPLICIT_PROJECTED, TRAPEZOIDAL, TRAPEZOIDAL_LINEARIZED, NEWMARK,
  HHT, CUSTOM
}
 Methods for time integration.
 
- Static Public Member Functions inherited from chrono::ChTimestepperImplicit
static std::string GetJacobianUpdateMethodAsString (JacobianUpdate jacobian_update)
 Return Jacobian update method as a string.
 
- Static Public Member Functions inherited from chrono::ChTimestepper
static std::string GetTypeAsString (Type type)
 Return the integrator type as a string.
 
- Protected Member Functions inherited from chrono::ChTimestepperIIorder
 ChTimestepperIIorder (ChIntegrableIIorder *intgr=nullptr)
 
- Protected Member Functions inherited from chrono::ChTimestepperImplicit
virtual void InitializeStep ()
 Initialize integrator at beginning of a new step. More...
 
virtual void PrepareStep ()
 Prepare integrator for attempting a new step. More...
 
virtual void Increment ()
 Calculate new state increment for a Newton iteration. More...
 
virtual void ResetStep ()
 Reset step data for re-attempting step (with new Jacobian or reduced step size). More...
 
virtual void AcceptStep ()
 Accept attempted step (if Newton converged or was terminated). More...
 
virtual void FinalizeStep ()
 Finalize step and update solution at end of step. More...
 
bool CheckConvergence (int iteration)
 Check convergence of Newton process.
 
void CalcErrorWeights (const ChVectorDynamic<> &x, double rtol, double atol, ChVectorDynamic<> &ewt)
 Calculate error weights based on the given state and tolerances.
 
- Protected Member Functions inherited from chrono::ChTimestepper
 ChTimestepper (ChIntegrable *intgr=nullptr)
 
- Protected Attributes inherited from chrono::ChTimestepperIIorder
ChIntegrableIIorderintegrable
 
ChState X
 
ChStateDelta V
 
ChStateDelta A
 
- Protected Attributes inherited from chrono::ChTimestepperImplicit
JacobianUpdate jacobian_update_method
 Jacobian update strategy.
 
bool call_setup
 should the solver's Setup function be called?
 
bool call_analyze
 should the solver's Setup analyze phase be called?
 
bool jacobian_is_current
 was the Jacobian evaluated at current Newton iteration?
 
unsigned int max_iters
 maximum number of iterations
 
double reltol
 relative tolerance
 
double abstolS
 absolute tolerance (states)
 
double abstolL
 absolute tolerance (Lagrange multipliers)
 
unsigned int num_step_iters
 number of iterations during last step
 
unsigned int num_step_setups
 number of calls to the solver Setup() function during last step
 
unsigned int num_step_solves
 number of calls to the solver Solve() function during last step
 
unsigned int num_iters
 current cumulative number of Newton iterations
 
unsigned int num_setups
 current cumulative number of Setup() calls
 
unsigned int num_solves
 current cummulative number of Solve() calls
 
unsigned int num_terminated
 number of terminated NEwton iterations
 
double convergence_rate
 estimated Newton rate of convergence
 
ChStateDelta Ds
 state update
 
ChVectorDynamic Dl
 Lagrange multiplier update.
 
ChVectorDynamic R
 residual of nonlinear system (dynamics portion)
 
ChVectorDynamic Qc
 residual of nonlinear system (constraints portion)
 
std::array< double, 3 > Ds_nrm_hist
 last 3 update norms
 
std::array< double, 3 > Dl_nrm_hist
 last 3 update norms
 
ChVectorDynamic ewtS
 vector of error weights (states)
 
ChVectorDynamic ewtL
 vector of error weights (Lagrange multipliers)
 
bool accept_terminated
 accept or reject steps after a non-converged Newton solve
 
bool step_control
 step size control enabled?
 
unsigned int maxiters_success
 maximum number of NR iterations to declare a step successful
 
unsigned int req_successful_steps
 required number of successive successful steps for a stepsize increase
 
double step_increase_factor
 factor used in increasing stepsize (>1)
 
double step_decrease_factor
 factor used in decreasing stepsize (<1)
 
double h_min
 minimum allowable stepsize
 
double h
 internal stepsize
 
unsigned int num_successful_steps
 number of successful steps
 
- Protected Attributes inherited from chrono::ChTimestepper
bool verbose
 
double T
 
ChVectorDynamic L
 
bool Qc_do_clamp
 
double Qc_clamping
 

Member Function Documentation

◆ GetType()

virtual Type chrono::ChTimestepperNewmark::GetType ( ) const
inlineoverridevirtual

Return type of the integration method.

Default is CUSTOM. Derived classes should override this function.

Implements chrono::ChTimestepper.

◆ SetGammaBeta()

void chrono::ChTimestepperNewmark::SetGammaBeta ( double  gamma_val,
double  beta_val 
)

Set the numerical damping parameter gamma and the beta parameter.

  • gamma: in the [1/2, 1] interval. gamma = 1/2, no numerical damping gamma > 1/2, more damping
  • beta: in the [0, 1] interval. beta = 1/4, gamma = 1/2 -> constant acceleration method beta = 1/6, gamma = 1/2 -> linear acceleration method Method is second order accurate only for gamma = 1/2.

The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/timestepper/ChTimestepperImplicit.h
  • /builds/uwsbel/chrono/src/chrono/timestepper/ChTimestepperImplicit.cpp