chrono::ChTimestepperExplicit Class Reference

Description

Base class for explicit integrators.

Such integrators might require solution of a nonlinear problem if constraints are added, otherwise they can use penalty in constraints and lumped masses to avoid the linear system. Diagonal lumping is off by default.

#include <ChTimestepperExplicit.h>

Inheritance diagram for chrono::ChTimestepperExplicit:
Collaboration diagram for chrono::ChTimestepperExplicit:

Public Member Functions

void SetDiagonalLumpingON (double Ck=1000, double Cr=0)
 Turn on the diagonal lumping. More...
 
void SetDiagonalLumpingOFF ()
 Turn off the diagonal lumping (default is off)
 
double GetLumpingError ()
 Gets the diagonal lumping error done last time the integrator has been called.
 
void ResetLumpingError ()
 Resets the diagonal lumping error.
 
virtual void ArchiveOut (ChArchiveOut &archive)
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive)
 Method to allow de-serialization of transient data from archives.
 
- Public Member Functions inherited from chrono::ChTimestepper
virtual Type GetType () const =0
 Return type of the integration method. More...
 
virtual ChIntegrableGetIntegrable () const =0
 Return the associated integrable object.
 
virtual void Advance (double dt)=0
 Performs an integration timestep.
 
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.
 

Protected Attributes

ChLumpingParmslumping_parameters
 
- Protected Attributes inherited from chrono::ChTimestepper
bool verbose
 
double T
 
ChVectorDynamic L
 
bool Qc_do_clamp
 
double Qc_clamping
 

Additional Inherited Members

- 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::ChTimestepper
static std::string GetTypeAsString (Type type)
 Return the integrator type as a string.
 
- Protected Member Functions inherited from chrono::ChTimestepper
 ChTimestepper (ChIntegrable *intgr=nullptr)
 

Member Function Documentation

◆ SetDiagonalLumpingON()

void chrono::ChTimestepperExplicit::SetDiagonalLumpingON ( double  Ck = 1000,
double  Cr = 0 
)

Turn on the diagonal lumping.

This can achieve a large speedup because no linear system is needeed to compute the derivative (i.e. acceleration in II order systems), but not all Chintegrable might support the diagonal lumping.

  • If lumping is not supported because ChIntegrable::LoadLumpedMass_Md() not implemented, throw exception.
  • If lumping introduces some approximation, you'll get nonzero in GetLumpingError(). Optionally parameters: the stiffness penalty for constraints, and damping penalty for constraints.

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