Marine systems simulation
CoRiBoDynamics::ConstraintSolver Class Reference

#include <ConstraintSolver.h>

+ Collaboration diagram for CoRiBoDynamics::ConstraintSolver:

Classes

class  ConstraintSetTask
 
class  SubDomainInertiaTask
 
class  SubDomainWriteDynamic
 

Public Member Functions

 ConstraintSolver (double TimeConstant)
 
 ConstraintSolver (double TimeConstant, int numThreads, bool no_hyperthreading=false)
 
 ConstraintSolver (double TimeConstant, CoreBoundThreadPool *ThreadPool)
 
void UpdateElements (const double T, const double *const X)
 
void ComputeDynamic (const double T, const double *const X, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &External_Force)
 
void ComputeDynamic (const double T, const double *const X)
 
void WriteDynamic (const double *const X, double *const XDot)
 
int addRigidElement (RigidElement *element)
 
void SetSymplecticStepSize (double h)
 
double GetSymplecticStepSize ()
 
double ComputeKineticEnergy (const double T, const double *const X)
 
int NumElements ()
 
CoreBoundThreadPoolGetThreadPool ()
 
ConjugateGradientSolverGetCGSolver ()
 
void setConstraintSetPriority (ConstraintSet *constraintSet, int priority)
 
void PrintElement (int index)
 set computation order priority for this constraint set
 
SparseMatrixBuilderGetSparseMatrixBuilder ()
 

Protected Member Functions

void Initialize (double TimeConstant)
 
void ComputeDynamicInternal (const double T, const double *const X, const Vector *External_Force)
 
void addConstraintSet (ConstraintSet *constraintSet)
 
void addForceThreadSafe (int element, const vec6 &Force)
 Computed second derivatives.
 

Protected Attributes

std::vector< RigidElement * > m_element
 adds a constraint set to the global constraint system. Only the constraint sets themselves are allowed to call this method through friend privileges.
 
Vector m_SecondDerivatives
 list of all 6DOF rigid elements in the system
 
std::mutex * m_ForceVectorLocks
 
Vector m_Force
 
SparseMatrixBuilderm_MatrixBuilder
 F_external - M_dot·V + F_constraint.
 
CoreBoundThreadPoolm_ThreadPool
 
std::mutex m_ConstraintPoolLock
 
double m_TimeConstant
 
double m_symplecticH
 
bool m_elements_updated
 
ConjugateGradientSolverm_CG_solver
 
std::map< int, std::vector< ConstraintSetTask > > m_ConstraintSet
 
std::map< ConstraintSet *, int > m_priority_index
 
std::vector< SubDomainInertiaTaskm_InertiaComputers
 
std::vector< SubDomainWriteDynamicm_WriteDynamic
 

Friends

class ConstraintSet
 

Detailed Description

Author
Jorgen Haavind Jensen

Holds a set of rigid 6 dof objects, and a set of corresponding constraints.

Manages multithreading, building and solution of system matrix, and kinematics/dynamics after the Ode have been computed.

Revision history:
Q3 2011 JHJ: Initial version.

The documentation for this class was generated from the following file: