Class HingePnode#

Nested Relationships#

Nested Types#

Inheritance Relationships#

Base Type#

Class Documentation#

class HingePnode : public Karana::Dynamics::HingeNode#

Represents the hinge pnode class.

See Connecting bodies via hinges section for more discussion of hinge, onodes and pnodes.

This class is for the pnodes for physiccal hinges

Public Functions

HingePnode(kc::ks_ptr<PhysicalBody> bd)#

Constructor.

virtual ~HingePnode()#

HingePnode destructor.

inline virtual const std::string &typeString() const noexcept override#

Returns the type string of the HingeNode.

Returns:

The type string.

virtual bool isFinalized() const override#

Checks is the params for the object have been initialized.

Returns:

True if the params have set up.

inline const kc::ks_ptr<kc::DataCache<ATBIMatrices>> atbiMatrixCache() const#

Return the ATBI matrix cache.

Returns:

the ATBI matrix cache

inline const ATBIMatrices &atbiMatrices() const#

Update and return the ATBI matrices.

Returns:

the ATBI matrices

inline const kc::ks_ptr<kc::DataCache<UpsilonMatrices>> upsilonMatrixCache() const#

Return the OSCM Upsilon matrix cache.

Returns:

the OSCM Upsilon matrix cache

inline const UpsilonMatrices &upsilonMatrices() const#

Update and return the OSCM Upsilon matrices.

Returns:

the OSCM Upsilon matrices

inline const kc::ks_ptr<kc::DataCache<ATBIFilterVectors>> atbiFilterCache() const#

Return the cross OSCM Upsilon with another pnode.

Return the ATBI filter cache

Parameters:

other – the other pnode

Returns:

the cross OSCM Upsilon matrix

Returns:

the ATBI filter cache

inline const ATBIFilterVectors &atbiFilterVectors() const#

Update and return the ATBI filter vectors.

Returns:

the ATBI filter vectors

inline const kc::ks_ptr<kc::DataCache<ATBISmootherVectors>> &atbiSmootherCache() const#

Return the ATBI smoother cache.

Returns:

the ATBI smoother cache

inline const ATBISmootherVectors &atbiSmootherVectors() const#

Update and return the ATBI smoother vectors.

Returns:

the ATBI smoother vectors

inline const kc::ks_ptr<kc::DataCache<InvDynVectors>> inverseDynamicsCache() const#

Return the inverse dynamics cache.

Returns:

the inverse dynamics cache

inline const InvDynVectors &inverseDynamicsVectors() const#

Update and return the inverse dynamics vectors.

Returns:

the inverse dynamics vectors

inline const km::Mat &crbInertiaMatrix() const#

Update and return the CRB spatial inertia for the body referenced to the pnode.

This is a (nmodes+6) size square, symmetric, positive semi-definite matrix

Returns:

the CRB inertia matrix.

virtual std::string dumpString(const std::string &prefix, const Karana::Core::Base::dumpOptions *options) const override#

Return information about the object.

Parameters:
  • prefix – A string to use as prefix for each output line

  • options – Struct with options to tailor the output

Returns:

String with the information about the object.

Protected Functions

void _oneTimeSetupDataCaches()#

Return the Psi matrix from this pnode to the outboard subhinge

void _oneTimeTeardownDataCaches()#
void _oneTimeTeardown()#
km::SpatialVector _externalForces() const#
km::SpatialVector _constraintForces() const#
bool _isFloatingFrame() const#

Return true if the pnode is connected to a full 6-dof hinge, false otherwise. This is used in flex body dynamics to define whether or not the pnode is a material point on the body and can thus deform with the body.

void _computeMassMatrix(km::Mat66 &val)#

Data cache callback to update the pnode referenced spatial inertia for the body

virtual void _computeGyroscopicForce(km::SpatialVector&) const#

Data cache callback for updating the body’s gyroscopic spatial force. This gyroscopic term corresponds to rigid body equations of motion where the body frame derivatives are used for generalized accel, i.e. the accel corresonds to pframeDerivRelSpAcell(). The returned spatial force is about and at the pnode frame.

virtual void _computeInvDynForces(InvDynVectors &val)#

data cache callback to update the overall inverse dynamics forces values for this body. The returned spatial force is at the pnode frame.

virtual void _computeATBIMatrices(ATBIMatrices &val)#
void _computeATBIFilterVectors(ATBIFilterVectors &val)#
void _computeATBISmootherVectors(ATBISmootherVectors &val)#
virtual void _computeUpsilonMatrices(UpsilonMatrices &val)#
void _computeCRBInertiaMatrix(km::Mat &val)#

Protected Attributes

kc::ks_ptr<kf::Frame2Frame> _pnode2body_f2f#

The cached oriented f2f from the pnode to the body frame

kc::ks_ptr<kc::DataCache<km::SpatialVector>> _gyroscopic_force_cache#
kc::ks_ptr<kc::DataCache<km::Mat66>> _massmat_cache#

data cache for body spatial inertia transformed to the pnode

ATBIDataCaches _atbi_data_caches#
kc::ks_ptr<kc::DataCache<InvDynVectors>> _invdyn_data_cache = nullptr#
km::Mat66 _apparent_mass_data#
kc::ks_ptr<kc::DataCache<km::Mat>> _crb_inertia_matrix_cache = nullptr#
struct ATBIDataCaches#

Overall set of ATBI data caches for the HingePnode.

Public Members

kc::ks_ptr<kc::DataCache<ATBIMatrices>> matrix_cache = nullptr#
kc::ks_ptr<kc::DataCache<ATBIFilterVectors>> filter_cache = nullptr#
kc::ks_ptr<kc::DataCache<ATBISmootherVectors>> smoother_cache = nullptr#
kc::ks_ptr<kc::DataCache<UpsilonMatrices>> upsilon_matrix_cache = nullptr#
struct ATBIFilterVectors#

Struct for ATBI dynamics filter vector quantities for a HingePnode.

Public Members

km::SpatialVector z#

Rigid 6 vector of z for the body about the pnode location and represented in the pnode frame.

struct ATBIMatrices#

Struct for ATBI dynamics matrix quantities for a HingePnode.

Public Members

km::Mat66 P#

Rigid body 6x6 ATBI P matrix for the body about the pnode location and represented in the pnode frame.

struct ATBISmootherVectors#

Struct for ATBI dynamics smoother vector quantities for a HingePnode.

struct InvDynVectors#

Struct for inverse dynamics vector quantities for a HingePnode.

Public Members

km::SpatialVector f#

the inter-body spatial interaction force for the body about the pnode location and represented in the body frame.

struct UpsilonMatrices#

Struct for onode OSI matrix quantities at the HingePnode.

Public Members

km::Mat66 Upsilon#

OSI Upsilon matrix for the child body about and in the pnode frame