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

Module for embedded Runge-Kutta time integration methods. More...

#include "EmbeddedRKModule.h"

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

Public Member Functions

 EmbeddedRKModule (const String &name="EmbeddedRK")
 Constructor.
 
virtual Status init (const Properties &conf, const Properties &props, const Properties &globdat) override
 Initialize the module.
 
virtual void solve (const Properties &info, const Properties &globdat) override
 Solve using embedded Runge-Kutta method.
 
virtual ~EmbeddedRKModule ()
 Protected destructor.
 
- Public Member Functions inherited from ExplicitModule
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 EmbeddedRKModule instances.
 
static void declare ()
 Register EmbeddedRKModule type with ModuleFactory.
 

Static Public Attributes

Property identifiers
static const char * TYPE_NAME = "EmbeddedRK"
 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.
 

Additional Inherited Members

- Public Types inherited from ExplicitModule
enum  MassMode { LUMPED , CONSISTENT }
 Mass matrix formulation modes. More...
 
- 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.
 
- 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 embedded Runge-Kutta schemes including Bogacki-Shampine (ODE23) and Dormand-Prince (ODE45) methods with adaptive step size control. Features special handling for rotational DOFs using Runge-Kutta-Munthe-Kaas (RKMK) methods.

See also
ODE23
ODE45
[RKMK 1998] (https://doi.org/10.1007/BF02510919)
[RKMK 1999] (https://doi.org/10.1016/S0168-9274(98)00030-0)

Constructor & Destructor Documentation

◆ EmbeddedRKModule()

EmbeddedRKModule::EmbeddedRKModule ( const String &  name = "EmbeddedRK")
explicit
Parameters
nameModule name

◆ ~EmbeddedRKModule()

EmbeddedRKModule::~EmbeddedRKModule ( )
virtual

Member Function Documentation

◆ declare()

void EmbeddedRKModule::declare ( )
static

◆ init()

Module::Status EmbeddedRKModule::init ( const Properties &  conf,
const Properties &  props,
const Properties &  globdat 
)
overridevirtual
Parameters
confActually used configuration properties (output)
propsUser-specified module properties
globdatGlobal data container
Returns
Module status

Reimplemented from ExplicitModule.

◆ makeNew()

Ref< Module > EmbeddedRKModule::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 EmbeddedRKModule instance

◆ solve()

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

Implements ExplicitModule.

Member Data Documentation

◆ TYPE_NAME

const char * EmbeddedRKModule::TYPE_NAME = "EmbeddedRK"
static