Marine systems simulation
CoRiBoDynamics::Structures::SupergridWinchCable Class Reference

#include <SupergridWinchCable.h>

+ Inheritance diagram for CoRiBoDynamics::Structures::SupergridWinchCable:
+ Collaboration diagram for CoRiBoDynamics::Structures::SupergridWinchCable:

Public Member Functions

 SupergridWinchCable (ConstraintSolver *solver, ISimObjectCreator *creator, Environment_Interface *environment, int rigid_element_buffer_size, double beta, std::string name, Winch *winch)
 
WinchGetWinch ()
 
TowingBlockGetTowingBlock ()
 
void GetFirstFreeDiscreteElementIndex (int &super_ix, int &sub_ix)
 
double GetPaidOutLength ()
 
virtual void AllocateElementBuffer (const double T, double *const X)
 
virtual bool InitialConditionSetup (const double T, double *const updatedIC, const vec3 &PB, Winch::InitialStatesLoader winch_init_states)
 
virtual void ComputeConstraints (const double T, const double *const X)
 
SupergridWinchCableCollisionManagerGetCollisionManager ()
 Computes structural connections.
 
void SetTowingBlock (TowingBlock *towing_block)
 
virtual const std::vector< CollisionManager::ExternalObject * > GetTowingBlockGeometry ()
 
virtual void XmlInfo (TiXmlElement &xml_node)
 
- Public Member Functions inherited from CoRiBoDynamics::Structures::SupergridLineStructure
virtual void AddSegment (LineSegment *l)
 
const std::vector< DiscreteElement * > * GetDiscreteElements ()
 
const std::vector< ModifiableRigidElement * > * GetRigidElements ()
 
const std::vector< double > * GetRigidElementTension ()
 
const std::vector< LineSegment * > * GetLineSegments ()
 
double GetLength ()
 
 SupergridLineStructure (ConstraintSolver *solver, ISimObjectCreator *creator, Environment_Interface *environment, int rigid_element_buffer_size, double beta, std::string name)
 
virtual void XmlInfo (TiXmlElement &xml_node)
 
virtual void ComputeConstraints (const double T, const double *const X)
 
double GetBeta ()
 Computes structural connections.
 
Environment_InterfaceGetEnvironment ()
 
- Public Member Functions inherited from CoRiBoDynamics::JointConstraint
 JointConstraint (ConstraintSolver *solver)
 
virtual void ComputeConstraints (const double T, const double *const X)
 
void addBallJointCoupling (int elementA, int elementB, vec3 vectorA, vec3 vectorB, double Beta, double Alpha, double Gamma)
 
void addHingeCoupling (int elementA, int elementB, vec3 vectorA, vec3 vectorB, vec3 axisA, vec3 axisB, double Beta, double Alpha, double Gamma, double AlphaFriction, double GammaFriction)
 
void addRigidCoupling (int elementA, int elementB, vec3 vectorA, vec3 vectorB, double BetaN, double AlphaN, double GammaN, const Quat &nullAngle, const Quat &BetaM, const Quat &AlphaM, const Quat &GammaM)
 
int addExternalBallJointCoupling (int element, vec3 vector, double Beta, double Alpha, double Gamma, const double *Position, const double *Velocity)
 
void updateExternalBallJointCoupling (int ballJointCoupling, const double *Position, const double *Velocity)
 
vec3 getExternalBallJointCouplingForce (int ballJointCoupling)
 
int addExternalRigidCoupling (int element, vec3 vectorExternalObject, vec3 vectorInternalObject, double BetaN, double AlphaN, double GammaN, const Quat &nullAngle, const Quat &BetaM, const Quat &AlphaM, const Quat &GammaM, const double *Position, const double *Velocity, const double *Orientation, const double *AngularVelocity)
 
void updateExternalRigidCoupling (int rigidCoupling, const double *Position, const double *Velocity, const double *Orientation, const double *AngularVelocity)
 
vec6 getExternalRigidCouplingForce (int rigidCoupling)
 
vec3 getExternalBallJointCouplingForce (ExternalBallJointCoupling &Constraint)
 
vec6 getExternalRigidCouplingForce (ExternalRigidCoupling &Constraint)
 
- Public Member Functions inherited from CoRiBoDynamics::ConstraintSet
 ConstraintSet (ConstraintSolver *solver)
 
virtual void ComputeConstraints (const double T, const double *const X)=0
 

Protected Member Functions

void InitializeElementAllocation ()
 
void InitializeFreespanCurve (Utilities::CurveSegment *curve_initializer, double T, double *const updatedIC)
 initial coupling of rigid elements and discrete elements
 
void ComputeDiscreteCableLength (size_t &super_ix, size_t &sub_ix, double &length)
 
- Protected Member Functions inherited from CoRiBoDynamics::JointConstraint
void ComputeHingeCoupling (HingeCoupling &Constraint)
 
void ComputeBallJointCoupling (BallJointCoupling &Constraint)
 
void ComputeRigidCoupling (RigidCoupling &Constraint)
 
void ComputeExternalBallJointCoupling (ExternalBallJointCoupling &Constraint)
 
void ComputeExternalVaryingBallJointCoupling (ExternalBallJointCoupling &Constraint, double vector_length_changerate)
 
void ComputeExternalRigidCoupling (ExternalRigidCoupling &Constraint)
 
- Protected Member Functions inherited from CoRiBoDynamics::ConstraintSet
const std::vector< RigidElement * > & ElementVector ()
 
void addConstraintResultantForce (int element, const vec6 &Force)
 
const vec3 Acceleration (int element)
 
const vec3 AngularAcceleration (int element)
 
const vec6 SecondDerivatives (int element)
 
void addMatrix (int i, int j, const mat6 &M)
 

Protected Attributes

size_t m_num_retracted_super
 
size_t m_num_retracted_sub
 
size_t m_sub_super_threshold_ix
 
double m_sub_super_threshold_strength
 
size_t m_num_free_rigid_elements
 
Winchm_winch
 current number of inactive rigid elements in the "free tail"
 
TowingBlockm_towing_block
 
SupergridWinchCableCollisionManagerm_collision_manager
 
- Protected Attributes inherited from CoRiBoDynamics::Structures::SupergridLineStructure
double m_length
 
double m_beta
 
Environment_Interfacem_environment
 
std::vector< ModifiableRigidElement * > m_rigid_element_buffer
 
std::vector< LineSegment * > m_segment
 
std::vector< DiscreteElement * > m_super_element
 
std::vector< double > m_rigid_element_tension
 
std::string m_name
 
- Protected Attributes inherited from CoRiBoDynamics::JointConstraint
std::vector< HingeCoupling,Eigen::aligned_allocator< HingeCoupling > > m_HingeCoupling
 
std::vector< BallJointCoupling,Eigen::aligned_allocator< BallJointCoupling > > m_BallJointCoupling
 BallJoint Coupling.
 
std::vector< RigidCoupling,Eigen::aligned_allocator< RigidCoupling > > m_RigidCoupling
 BallJoint Coupling.
 
std::vector< ExternalBallJointCoupling, Eigen::aligned_allocator< ExternalBallJointCoupling > > m_ExternalBallJointCoupling
 Rigid Coupling.
 
std::vector< ExternalRigidCoupling, Eigen::aligned_allocator< ExternalRigidCoupling > > m_ExternalRigidCoupling
 External Ball Joint Coupling.
 

Additional Inherited Members

- Static Protected Member Functions inherited from CoRiBoDynamics::JointConstraint
static mat4 QuaternionConstraint_Jacobian (const Quat &q)
 
static mat43 Quaternion_Kinematics (const Quat &q)
 

Detailed Description

Author
Jorgen Haavind Jensen

Extends a SupergridLineStructure with a collidable winch geometry and towing block.

Member Function Documentation

◆ AllocateElementBuffer()

virtual void CoRiBoDynamics::Structures::SupergridWinchCable::AllocateElementBuffer ( const double  T,
double *const  X 
)
virtual

Reallocates RigidElements to DiscreteElements. Since this method needs to change and move the internal states of objects, it needs access to an non-const state vector X

◆ ComputeConstraints()

virtual void CoRiBoDynamics::Structures::SupergridWinchCable::ComputeConstraints ( const double  T,
const double *const  X 
)
virtual

Computes and returns the constraint system matrix for the current states (T and X). Adds constraint forces.

Reimplemented from CoRiBoDynamics::Structures::SupergridLineStructure.

◆ GetFirstFreeDiscreteElementIndex()

void CoRiBoDynamics::Structures::SupergridWinchCable::GetFirstFreeDiscreteElementIndex ( int &  super_ix,
int &  sub_ix 
)

Returns the index of the first free discrete element i.e. the first DiscreteElement that is not fully retracted on to the winch. {super_ix} refers to the vector from SupergridLineStructure::GetDiscreteElements(). {sub_ix} refers to the first free sub element

◆ GetPaidOutLength()

double CoRiBoDynamics::Structures::SupergridWinchCable::GetPaidOutLength ( )

Total length of cable minus length of all elements that are retracted onto the winch

◆ XmlInfo()

virtual void CoRiBoDynamics::Structures::SupergridWinchCable::XmlInfo ( TiXmlElement &  xml_node)
virtual

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