Module for embedded Runge-Kutta time integration methods.
More...
#include "EmbeddedRKModule.h"
|
| | 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.
|
| |
| 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 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 const char * | TYPE_NAME = "EmbeddedRK" |
| | Module type name.
|
| |
| 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.
|
| |
|
| enum | MassMode { LUMPED
, CONSISTENT
} |
| | Mass matrix formulation modes. More...
|
| |
| | 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.
|
| |
| 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.
|
| |
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)
◆ EmbeddedRKModule()
| EmbeddedRKModule::EmbeddedRKModule |
( |
const String & |
name = "EmbeddedRK" | ) |
|
|
explicit |
◆ ~EmbeddedRKModule()
| EmbeddedRKModule::~EmbeddedRKModule |
( |
| ) |
|
|
virtual |
◆ declare()
| void EmbeddedRKModule::declare |
( |
| ) |
|
|
static |
◆ init()
| Module::Status EmbeddedRKModule::init |
( |
const Properties & |
conf, |
|
|
const Properties & |
props, |
|
|
const Properties & |
globdat |
|
) |
| |
|
overridevirtual |
- Parameters
-
| conf | Actually used configuration properties (output) |
| props | User-specified module properties |
| globdat | Global 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
-
| name | Module name |
| conf | Actually used configuration properties (output) |
| props | User-specified module properties |
| globdat | Global data container |
- Returns
- Reference to new EmbeddedRKModule instance
◆ solve()
| void EmbeddedRKModule::solve |
( |
const Properties & |
info, |
|
|
const Properties & |
globdat |
|
) |
| |
|
overridevirtual |
- Parameters
-
| info | Solver information |
| globdat | Global data container |
Implements ExplicitModule.
◆ TYPE_NAME
| const char * EmbeddedRKModule::TYPE_NAME = "EmbeddedRK" |
|
static |