dynLattice
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | List of all members
ExplicitModule Class Referenceabstract

Base class for explicit time integration schemes. More...

#include "ExplicitModule.h"

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

Public Types

enum  MassMode { LUMPED , CONSISTENT }
 Mass matrix formulation modes. More...
 

Public Member Functions

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 solve (const Properties &info, const Properties &globdat) override=0
 Solve current time step (pure virtual)
 
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 Attributes

Property identifiers
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

 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

Module state
bool valid_
 State validity flag.
 
Time stepping parameters
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.
 
Integration parameters
MassMode mode_
 Mass matrix mode.
 
idx_t order_
 Integration order.
 
double lenScale_
 Characteristic length scale.
 
DOF management
Ref< Function > updCond_
 Update condition function.
 
Vector massInv_
 Inverse mass matrix.
 
IdxVector dofsSO3_
 SO(3) DOF type indices.
 
IdxMatrix rdofs_
 Rotational DOF mapping.
 
System components
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

Provides foundation for explicit solvers with support for rotational DOFs, adaptive time stepping, and both lumped and consistent mass matrices. Handles special integration of SO(3) rotational degrees of freedom using exponential maps.

Member Enumeration Documentation

◆ MassMode

Enumerator
LUMPED 

Lumped mass matrix.

CONSISTENT 

Consistent mass matrix.

Constructor & Destructor Documentation

◆ ExplicitModule()

ExplicitModule::ExplicitModule ( const String &  name = "")
explicitprotected
Parameters
nameModule name

◆ ~ExplicitModule()

ExplicitModule::~ExplicitModule ( )
protectedvirtual

Member Function Documentation

◆ ABupdate() [1/2]

void ExplicitModule::ABupdate ( const Vector &  delta_y,
const Vector &  f_cur 
) const
inlineprotected
Parameters
delta_yDisplacement increment
f_curCurrent force vector

◆ ABupdate() [2/2]

void ExplicitModule::ABupdate ( const Vector &  delta_y,
const Vector &  f_cur,
const Vector &  f_old 
) const
inlineprotected
Parameters
delta_yDisplacement increment
f_curCurrent force vector
f_oldPrevious force vector

◆ advance()

void ExplicitModule::advance ( const Properties &  globdat)
overridevirtual
Parameters
globdatGlobal data container

◆ cancel()

void ExplicitModule::cancel ( const Properties &  globdat)
overridevirtual
Parameters
globdatGlobal data container

◆ commit()

bool ExplicitModule::commit ( const Properties &  globdat)
overridevirtual
Parameters
globdatGlobal data container
Returns
true if step can be accepted

◆ configure()

void ExplicitModule::configure ( const Properties &  props,
const Properties &  globdat 
)
overridevirtual
Parameters
propsUser-specified module properties
globdatGlobal data container

◆ getAcce()

void ExplicitModule::getAcce ( const Vector &  a,
const Ref< Constraints > &  cons,
const Vector &  fres,
const Properties &  globdat 
)
protected
Parameters
aAcceleration vector (output)
consConstraint manager
fresResulting force vector
globdatGlobal data container

◆ getConfig()

void ExplicitModule::getConfig ( const Properties &  props,
const Properties &  globdat 
) const
overridevirtual
Parameters
propsActually used configuration properties (output)
globdatGlobal data container

◆ getForce()

Vector ExplicitModule::getForce ( const Vector &  fint,
const Vector &  fext,
const Properties &  globdat 
)
protected
Parameters
fintInternal force vector
fextExternal force vector
globdatGlobal data container
Returns
Resulting force vector (external - internal)

◆ getPrecision()

double ExplicitModule::getPrecision ( ) const
overridevirtual
Returns
Current convergence tolerance

◆ getQuality()

double ExplicitModule::getQuality ( const Vector &  y_pre,
const Vector &  y_cor 
)
protected
Parameters
y_prePredicted solution
y_corCorrected solution
Returns
Quality measure

◆ init()

Module::Status ExplicitModule::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 in EmbeddedRKModule.

◆ invalidate_()

void ExplicitModule::invalidate_ ( )
protected

◆ setPrecision()

void ExplicitModule::setPrecision ( double  eps)
overridevirtual
Parameters
epsConvergence tolerance

◆ shutdown()

void ExplicitModule::shutdown ( const Properties &  globdat)
overridevirtual
Parameters
globdatGlobal data container

◆ solve()

virtual void ExplicitModule::solve ( const Properties &  info,
const Properties &  globdat 
)
overridepure virtual
Parameters
infoSolver information
globdatGlobal data container

Implemented in EmbeddedRKModule, LeapFrogModule, and MilneDeviceModule.

◆ updateMass_()

void ExplicitModule::updateMass_ ( const Properties &  globdat)
protected
Parameters
globdatGlobal data container

◆ updateVec()

void ExplicitModule::updateVec ( const Vector &  y_new,
const Vector &  y_old,
const Vector &  delta_y,
const bool  rot = false 
)
protected
Parameters
y_newNew displacement vector
y_oldOld displacement vector
delta_yDisplacement increment
rotFlag for rotational DOFs

Member Data Documentation

◆ cons_

Ref<Constraints> ExplicitModule::cons_
protected

◆ decrFact_

double ExplicitModule::decrFact_
protected

◆ dofs_

Ref<DofSpace> ExplicitModule::dofs_
protected

◆ dofsSO3_

IdxVector ExplicitModule::dofsSO3_
protected

◆ dtime_

double ExplicitModule::dtime_
protected

◆ incrFact_

double ExplicitModule::incrFact_
protected

◆ LEN_SCALE

const char * ExplicitModule::LEN_SCALE = "lengthScale"
static

◆ lenScale_

double ExplicitModule::lenScale_
protected

◆ massInv_

Vector ExplicitModule::massInv_
protected

◆ maxDtime_

double ExplicitModule::maxDtime_
protected

◆ minDtime_

double ExplicitModule::minDtime_
protected

◆ mode_

MassMode ExplicitModule::mode_
protected

◆ model_

Ref<Model> ExplicitModule::model_
protected

◆ order_

idx_t ExplicitModule::order_
protected

◆ prec_

double ExplicitModule::prec_
protected

◆ rdofs_

IdxMatrix ExplicitModule::rdofs_
protected

◆ saftey_

double ExplicitModule::saftey_
protected

◆ SO3_DOFS

const char * ExplicitModule::SO3_DOFS = "dofs_SO3"
static

◆ solver_

Ref<Solver> ExplicitModule::solver_
protected

◆ STEP_COUNT

const char * ExplicitModule::STEP_COUNT = "stepCount"
static

◆ TYPE_NAME

const char * ExplicitModule::TYPE_NAME = "Explicit"
static

◆ updCond_

Ref<Function> ExplicitModule::updCond_
protected

◆ valid_

bool ExplicitModule::valid_
protected