Struct CompoundSubhinge::ATBIMatrices#
Defined in File CompoundSubhinge.h
Nested Relationships#
This struct is a nested type of Class CompoundSubhinge.
Inheritance Relationships#
Base Type#
public Karana::Dynamics::CoordBase::ATBIMatrices(Struct CoordBase::ATBIMatrices)
Struct Documentation#
-
struct ATBIMatrices : public Karana::Dynamics::CoordBase::ATBIMatrices
Overall struct for ATBI dynamics matrix quantities for an articulation subhinge which includes the fixed and subhinge dof size matrices.
Public Functions
-
inline void resize(size_t hge_n_u, size_t n_bodies)
Resize the matrix elements where hge_nU is the overall number of generalized velocities from all the aggregated physical subhinges, and n_bodies is the number of aggregated physical bodies.
Public Members
-
km::Mat P
The (nbodies x nbodies) block diagonal matrix with 6x6 ATBI P matrix element contributions from each of the aggregated physical bodies about their pnodes. Each body’s contribution is expressed in the body’s pnode frame.
This is only true for rigid body matrices. For deformable bodies, each would be a (6+nmodes) matrix.
-
km::Mat Pplus
The (nbodies x nbodies) Pplus block diagonal matrix with 6x6 matrix elements after crossing the compound subhinge. The block matrix entries are about the pnode for each of the aggregated physical bodies. Note that this matrix is NOT block diagonal
-
km::Mat HP
HP = H*P (nU x body_nU)
For a subhinge the lhs is in the pframe, while it in the pnode deformed translational frame for a flex body.
-
km::Mat D
D = H*P*HT (nU x nU)
-
km::Mat Dinv
Dinv = inverse(D) (nU x nU)
-
km::Mat G
G = P*H*Dinv (body_nU x nU)
For a subhinge the lhs is in the pframe, while it in the pnode deformed translational frame for a flex body.
-
km::Mat tauper
tauper = I - GH (body_nU x body_nU)
For a subhinge the lhs is in the pframe, while it in the pnode deformed translational frame for a flex body.
-
km::Mat psi
psi = phi * tauper (body_nU x body_nU)
For a subhinge, the left is in the oframe, right in the pframe. For a flex body, the lefts is in the pnode frame and the right in the body frame.
-
inline void resize(size_t hge_n_u, size_t n_bodies)