Class CECompoundSubhinge#

Inheritance Relationships#

Base Type#

Class Documentation#

class CECompoundSubhinge : public Karana::Dynamics::CompoundSubhinge#

Represents the articulation subhinge class for compound body subhinge with embedded constraints.

Public Functions

virtual ~CECompoundSubhinge()#

Destructor.

inline virtual std::string_view typeString() const noexcept override#

Returns the type string of Base.

Returns:

The type string.

virtual void setQ(const Eigen::Ref<const km::Vec> &val) override#

Set the global (chart) Q coordinates.

Get/set methods for buffers for the generalized coordinates for this coordinate provider.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Parameters:

val – Array of values.

virtual void setU(const Eigen::Ref<const km::Vec> &val) override#

Set the U velocity coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Parameters:

val – Array of values.

virtual const km::Vec &getQ() const override#

Return the global (chart) Q coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

virtual const km::Vec &getU() const override#

Return the U velocity coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

virtual void setT(const Eigen::Ref<const km::Vec> &val) override#

Set the T generalized forces.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Parameters:

val – Array of values.

virtual const km::Vec &getT() const override#

Return the T generalized forces.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

virtual void setUdot(const Eigen::Ref<const km::Vec> &val) override#

Set the Udot acceleration coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Parameters:

val – Array of values.

virtual const km::Vec &getUdot() const override#

Return the Udot acceleration coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

virtual const km::Vec &getQdot() const override#

Return the Qdot rate coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

CECompoundSubhinge(kc::ks_ptr<CompoundHinge> hge, size_t indep_n_u, size_t indep_n_q)#

Constructs a CECompoundSubhinge.

Parameters:
  • hge – the parent compound hinge

  • indep_n_u – the number U velocity coordinates

  • indep_n_q – the number Q generalized coordinates

Protected Functions

virtual void _localChartSetQ(const Eigen::Ref<const km::Vec> &val) override#

Set the local chart Q coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Parameters:

val – Array of values.

virtual const km::Vec &_localChartGetQ() const override#

Return the local chart Q coordinates - without sanitizing coordinates.

See Generalized Q, U etc coordinates section for discussion on Q, U etc coordinates.

Returns:

Array of values.

void _discard(kc::ks_ptr<Base> &base) override#
virtual km::Vec _getHingeXdotU(PhysicalHinge &hge) const override#

Return the XdotU vector for the specific physical hinge. This method returns null for regular compound bodies. Its return value is non-null however for constraint-embedded compound bodies whose X matrix is configuration dependent

virtual const km::Mat atbiCoordMapMatrix() const override#

Callback to compute the (6nbodies + bd_nU) x (bd_nU + sh_nU) coord map matrix for the compound subhinge, where bd_nU denotes the overall deformation dofs for the embedded bodies, and sh_nU the overall subhinge generalized velocities for the embedded subhinges. This is in fact the Jacobian from the aggregated subhinges and modal coords to the pnodes and modal coords of the aggregated bodies. It is referred to as $\underbar H_{G}^* = \phi^* H_G$ as defined in Eq 18.4.

There is one block row per embedded body, with the size of the row being the number of body deformation coords plus 6, with the modal etadot coords coming first followed by the 6 rigid body spatial velocity elements. There is also one block column per embedded body, with the size of the column being the number of body deformation coords + the number of subhinge generalized velocity coords. Again, the deformation coords come first.

Protected Attributes

mutable km::Mat _dependent_coord_map_matrix#

local variable for the intermediate coord map matrix with columns for the dependent coordinates as well. This matrix is post multiplied by X to get the actual coord map matrix for this CE subhinge

size_t _dependents_nU = 0#

keep track of the size of the dependent coords nU

mutable km::Vec _getQ_min_cache#

Vector for storing getQ.

mutable km::Vec _getQdot_min_cache#

Vector for storing getQdot.

mutable km::Vec _getU_min_cache#

Vector for storing getU.

mutable km::Vec _getUdot_min_cache#

Vector for storing getUdot.

mutable km::Vec _getT_min_cache#

Vector for storing getT.