dynLattice
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
LeapFrogModule Class Reference

Module for leap-frog time integration. More...

#include "LeapFrogModule.h"

Inheritance diagram for LeapFrogModule:
Inheritance graph
[legend]
Collaboration diagram for LeapFrogModule:
Collaboration graph
[legend]

Public Member Functions

 LeapFrogModule (const String &name="leapFrog")
 Constructor.
 
virtual void solve (const Properties &info, const Properties &globdat) override
 Solve using leap-frog integration scheme.
 
- Public Member Functions inherited from ExplicitModule
virtual Status init (const Properties &conf, const Properties &props, const Properties &globdat) override
 Initialize the module.
 
virtual void shutdown (const Properties &globdat) override
 Shutdown the module.
 
virtual void configure (const Properties &props, const Properties &globdat) override
 Configure the module from properties.
 
virtual void getConfig (const Properties &props, const Properties &globdat) const override
 Get current module configuration.
 
virtual void advance (const Properties &globdat) override
 Advance to next time step.
 
virtual void cancel (const Properties &globdat) override
 Cancel current solution attempt.
 
virtual bool commit (const Properties &globdat) override
 Compute next step size and commit solution.
 
virtual void setPrecision (double eps) override
 Set convergence precision.
 
virtual double getPrecision () const override
 Get current convergence precision.
 

Static Public Member Functions

static Ref< Module > makeNew (const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
 Factory method for creating new LeapFrogModule instances.
 
static void declare ()
 Register LeapFrogModule type with ModuleFactory.
 

Static Public Attributes

Property identifiers
static const char * TYPE_NAME = "LeapFrog"
 Module type name.
 
- Static Public Attributes inherited from ExplicitModule
static const char * TYPE_NAME = "Explicit"
 Module type name.
 
static const char * STEP_COUNT = "stepCount"
 Step count property.
 
static const char * SO3_DOFS = "dofs_SO3"
 SO(3) DOF types property.
 
static const char * LEN_SCALE = "lengthScale"
 Length scale property.
 

Protected Member Functions

virtual ~LeapFrogModule ()
 Protected destructor.
 
- Protected Member Functions inherited from ExplicitModule
 ExplicitModule (const String &name="")
 Protected constructor.
 
virtual ~ExplicitModule ()
 Protected destructor.
 
void updateMass_ (const Properties &globdat)
 Update mass matrix.
 
void invalidate_ ()
 invalidate_ current state
 
void ABupdate (const Vector &delta_y, const Vector &f_cur, const Vector &f_old) const
 Adams-Bashforth 2-step update.
 
void ABupdate (const Vector &delta_y, const Vector &f_cur) const
 Adams-Bashforth 1-step update (explicit Euler)
 
void updateVec (const Vector &y_new, const Vector &y_old, const Vector &delta_y, const bool rot=false)
 Update displacement vectors with optional SO(3) handling.
 
void getAcce (const Vector &a, const Ref< Constraints > &cons, const Vector &fres, const Properties &globdat)
 Get acceleration and return resulting force vector.
 
Vector getForce (const Vector &fint, const Vector &fext, const Properties &globdat)
 Get force vector.
 
double getQuality (const Vector &y_pre, const Vector &y_cor)
 Get solution quality measure.
 

Additional Inherited Members

- Public Types inherited from ExplicitModule
enum  MassMode { LUMPED , CONSISTENT }
 Mass matrix formulation modes. More...
 
- Protected Attributes inherited from ExplicitModule
bool valid_
 State validity flag.
 
double dtime_
 Current time step size.
 
double prec_
 Precision tolerance.
 
double minDtime_
 Minimum time step size.
 
double maxDtime_
 Maximum time step size.
 
double saftey_
 Safety factor for step size control.
 
double incrFact_
 Step size increase factor.
 
double decrFact_
 Step size decrease factor.
 
MassMode mode_
 Mass matrix mode.
 
idx_t order_
 Integration order.
 
double lenScale_
 Characteristic length scale.
 
Ref< Function > updCond_
 Update condition function.
 
Vector massInv_
 Inverse mass matrix.
 
IdxVector dofsSO3_
 SO(3) DOF type indices.
 
IdxMatrix rdofs_
 Rotational DOF mapping.
 
Ref< Model > model_
 Root of the model tree.
 
Ref< DofSpace > dofs_
 Degree of freedom space.
 
Ref< Constraints > cons_
 Constraint manager.
 
Ref< Solver > solver_
 Linear solver.
 

Detailed Description

Implements the leap-frog time integration scheme for explicit dynamic analysis. This method uses a staggered time stepping approach where:

The leap-frog method is symplectic and second-order accurate, making it well-suited for long-time dynamic simulations where energy conservation is important. It inherits basic explicit integration functionality from ExplicitModule.

See also
Leap-frog integration

Constructor & Destructor Documentation

◆ LeapFrogModule()

LeapFrogModule::LeapFrogModule ( const String &  name = "leapFrog")
explicit
Parameters
nameModule name (default: "leapFrog")

◆ ~LeapFrogModule()

LeapFrogModule::~LeapFrogModule ( )
protectedvirtual

Member Function Documentation

◆ declare()

void LeapFrogModule::declare ( )
static

◆ makeNew()

Ref< Module > LeapFrogModule::makeNew ( const String &  name,
const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)
static
Parameters
nameModule name
confActually used configuration properties (output)
propsUser-specified module properties
globdatGlobal data container
Returns
Reference to new LeapFrogModule instance

◆ solve()

void LeapFrogModule::solve ( const Properties &  info,
const Properties &  globdat 
)
overridevirtual
Parameters
infoSolver information (output)
globdatGlobal data container

Performs one time step using the leap-frog algorithm:

  1. Compute forces and accelerations at current time
  2. Update velocities using current and previous accelerations
  3. Update positions using updated velocities

Implements ExplicitModule.

Member Data Documentation

◆ TYPE_NAME

const char * LeapFrogModule::TYPE_NAME = "LeapFrog"
static