Class ModalNodeDeformationProvider#
Defined in File PhysicalModalBody.h
Nested Relationships#
Nested Types#
Inheritance Relationships#
Base Type#
public Karana::Dynamics::NodeDeformationProvider(Class NodeDeformationProvider)
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 ¶ms) 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:
p – DeformationParams to copy values from.
- Returns:
A reference to the newly assigned DeformationParams.
Public Members
-
km::Mat nodal_matrix#
the nodal matrix for the node
-
DeformationParams() = default#
-
ModalNodeDeformationProvider(std::string_view name, kc::ks_ptr<Node> node)#