Loading...
Searching...
No Matches
symplectic Class Reference

Symplectic 2nd-order explicit time-integrator for rigid-body motion. More...

#include <symplectic.H>

Inheritance diagram for symplectic:
Collaboration diagram for symplectic:

Public Member Functions

 TypeName ("symplectic")
 Runtime type information.
 symplectic (rigidBodyMotion &body, const dictionary &dict)
 Construct for the given body from dictionary.
virtual ~symplectic ()
 Destructor.
virtual void solve (const scalarField &tau, const Field< spatialVector > &fx)
 Integrate the rigid-body motion for one time-step.
Public Member Functions inherited from rigidBodySolver
 TypeName ("rigidBodySolver")
 Runtime type information.
 declareRunTimeSelectionTable (autoPtr, rigidBodySolver, dictionary,(rigidBodyMotion &body, const dictionary &dict),(body, dict))
 rigidBodySolver (rigidBodyMotion &body)
virtual ~rigidBodySolver ()
 Destructor.

Additional Inherited Members

Static Public Member Functions inherited from rigidBodySolver
static autoPtr< rigidBodySolverNew (rigidBodyMotion &body, const dictionary &dict)
Protected Member Functions inherited from rigidBodySolver
rigidBodyModelStatestate ()
 Return the motion state.
scalarFieldq ()
 Return the current joint position and orientation.
scalarFieldqDot ()
 Return the current joint quaternion.
scalarFieldqDdot ()
 Return the current joint acceleration.
scalar deltaT () const
 Return the current time-step.
const rigidBodyModelStatestate0 () const
 Return the previous motion state.
const scalarFieldq0 () const
 Return the current joint position and orientation.
const scalarFieldqDot0 () const
 Return the current joint quaternion.
const scalarFieldqDdot0 () const
 Return the current joint acceleration.
scalar deltaT0 () const
 Return the previous time-step.
void correctQuaternionJoints ()
 Correct the quaternion joints based on the current change in q.
Protected Attributes inherited from rigidBodySolver
rigidBodyMotionmodel_
 The rigid-body model.

Detailed Description

Symplectic 2nd-order explicit time-integrator for rigid-body motion.

Reference:

    Dullweber, A., Leimkuhler, B., & McLachlan, R. (1997).
    Symplectic splitting methods for rigid body molecular dynamics.
    The Journal of chemical physics, 107(15), 5840-5851.

Can only be used for explicit integration of the motion of the body, i.e. may only be called once per time-step, no outer-correctors may be applied. For implicit integration with outer-correctors choose either CrankNicolson or Newmark schemes.

Example specification in dynamicMeshDict:

solver
{
    type    symplectic;
}
See also
Foam::RBD::rigidBodySolvers::CrankNicolson Foam::RBD::rigidBodySolvers::Newmark
Source files

Definition at line 74 of file symplectic.H.

Constructor & Destructor Documentation

◆ symplectic()

symplectic ( rigidBodyMotion & body,
const dictionary & dict )

Construct for the given body from dictionary.

Definition at line 41 of file symplectic.C.

References dict, and rigidBodySolver::rigidBodySolver().

Here is the call graph for this function:

◆ ~symplectic()

~symplectic ( )
virtual

Destructor.

Definition at line 53 of file symplectic.C.

Member Function Documentation

◆ TypeName()

TypeName ( "symplectic" )

Runtime type information.

References dict.

◆ solve()

void solve ( const scalarField & tau,
const Field< spatialVector > & fx )
virtual

The documentation for this class was generated from the following files:
  • src/rigidBodyDynamics/rigidBodySolvers/symplectic/symplectic.H
  • src/rigidBodyDynamics/rigidBodySolvers/symplectic/symplectic.C