Class ModalNodeDeformationProvider#

Nested Relationships#

Nested Types#

Inheritance Relationships#

Base Type#

Class Documentation#

class ModalNodeDeformationProvider : public Karana::Dynamics::NodeDeformationProvider#

Node deformation provider class for modeling small deformation via modal representation.

See Flexible body systems section for more information of deformation provider classes.

Public Functions

ModalNodeDeformationProvider(std::string_view name, kc::ks_ptr<Node> node)#

Constructor.

Parameters:
  • name – the assigned name

  • node – the associated node

~ModalNodeDeformationProvider()#

Destructor.

void setNodalMatrix(const km::Mat &nodal_matrix)#

Set the nodal deformation matrix.

Parameters:

nodal_matrix – the nodal matrix

inline const km::Mat6n &getNodalMatrix() const#

Return the nodal deformation matrix.

Returns:

the nodal matrix

inline kc::ks_ptr<kf::Frame> undeformedFrame() const#

Return the undeformed frame.

Returns:

the undeformed Frame instance

inline kc::ks_ptr<kf::Frame> deformedTransFrame() const#

Return the deformed translational frame.

Returns:

the deformed translational Frame instance

inline kc::ks_ptr<kf::Frame> deformedRotFrame() const#

Return the deformed rotational frame.

Returns:

the deformed rotational Frame instance

virtual bool isReady() const override#

Checks is the params for the object have been initialized.

Returns:

True if the params have set up.

virtual std::string dumpString(std::string_view 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

virtual kc::ks_ptr<NodeDeformationProvider::DeformationParams> _getParams() const override#

Return the node deformation parameters.

Returns:

the deformation parameters

virtual void _setParams(const NodeDeformationProvider::DeformationParams &params) override#

Set the node deformation parameters.

Parameters:

params – the deformation parameters

void _discard(kc::ks_ptr<Base> &base) override#

Discard the provided ModalNodeDeformationProvider.

Parameters:

base – - Base pointer to the ModalNodeDeformationProvider to discard.

km::HomTran _transFrameRelTransformHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative transform

km::SpatialVector _transFrameRelSpVelHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative spatial velocity

km::SpatialVector _transFrameRelSpAccelHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative spatial acceleration

km::HomTran _rotFrameRelTransformHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative transform

km::SpatialVector _rotFrameRelSpVelHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative spatial velocity

km::SpatialVector _rotFrameRelSpAccelHelper() const#

Helper methods to compute the deformation quantities in the body frame for the node.

For regular body nodes and onodes, these will essentially be the callbacks for the node’s f2f edge. For a pnode, the undeformed frame is a child of the node, and the body a child of the undeformed frame. These helper methods will be used within the _undeformed frame’s f2f edge’s callbacks to compute the quantities.

Returns:

the relative spatial acceleration

km::HomTran _transFrameRelTransformReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative transform

km::SpatialVector _transFrameRelSpVelReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative spatial velocity

km::SpatialVector _transFrameRelSpAccelReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative spatial acceleration

km::HomTran _rotFrameRelTransformReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative transform

km::SpatialVector _rotFrameRelSpVelReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative spatial velocity

km::SpatialVector _rotFrameRelSpAccelReversedHelper() const#

the following helper methods are the pnode’s deformation f2f callbacks. Because of the reversed connection for pnodes, we need to use the pframe versions of the regular node deformation callbacks

Returns:

the relative spatial acceleration

Protected Attributes

km::Mat6n _nodal_matrix#

the modal matrix for this node

kc::ks_ptr<kf::Frame> _undeformed_frame = nullptr#

Normally we have the following intermediate frames between the body’s floating frame and a nodes frame to accommodate the deformations.

Body -> undeformed -> deformed_trans -> deformed_rot -> node

The Body->undeformed frame transform is fixed and defines the location of the node in the undeformed configuration. The undeformed->deformed_trans transform consists of the translational deformation. Note that the body frame, the undeformed frame and the deformed_trans frame are all parallel. The deformed_trans->deformed_rot transform contains consists of the rotational deformation. The deformed_rot->node transform consists of the fixed rotational for the node mount.

While this is the normal attachment sequence from the body frame to a node on the body, one exception is pnode for which the attachment sequence is reversed. However, the transforms for each of the edge have the same definition as for the other nodes.

One of the reasons for separating out the trans/rot parts across two frames is that nodal equations of motion use node accelerations that are differentiated in the node’s local deformed frame, while the mode shapes are defined in the body frame and independent of body deformation. the undeformed frame for this node.

kc::ks_ptr<kf::Frame> _deformed_trans_frame = nullptr#

the “trans” deformed frame for this node.

kc::ks_ptr<kf::Frame> _deformed_rot_frame = nullptr#

the “rot” deformed frame for this node.

struct DeformationParams : public Karana::Dynamics::NodeDeformationProvider::DeformationParams#

Struct with modal deformation parameters for a node

Public Functions

DeformationParams() = default#
inline DeformationParams &operator=(const NodeDeformationProvider::DeformationParams *p)#

Assignment operator.

Parameters:

pDeformationParams to copy values from.

Returns:

A reference to the newly assigned DeformationParams.

Public Members

km::Mat nodal_matrix#

the nodal matrix for the node