Vulcan
Aerospace Engineering Utilities Built on Janus
Loading...
Searching...
No Matches
vulcan::mass Namespace Reference

Classes

struct  MassProperties

Functions

template<typename Scalar>
MassProperties< Scalar > operator* (const Scalar &factor, const MassProperties< Scalar > &props)
 Left-multiplication: factor * props.
template<typename Scalar>
MassProperties< Scalar > aggregate_mass_properties (const std::vector< MassProperties< Scalar > > &components)
template<typename Scalar>
MassProperties< Scalar > transform_mass_properties (const MassProperties< Scalar > &props, const Mat3< Scalar > &rotation, const Vec3< Scalar > &translation)
template<typename Scalar>
bool is_physically_valid (const MassProperties< Scalar > &props)
template<typename Scalar>
bool is_point_mass (const MassProperties< Scalar > &props)
 Check if effectively a point mass (zero inertia).
template<typename Scalar>
Vec3< Scalar > principal_moments (const MassProperties< Scalar > &props)
 Compute principal moments of inertia (eigenvalues, numeric only).
template<typename Scalar>
Mat3< Scalar > principal_axes (const MassProperties< Scalar > &props)
 Compute principal axes rotation matrix (eigenvectors, numeric only).

Function Documentation

◆ aggregate_mass_properties()

template<typename Scalar>
MassProperties< Scalar > vulcan::mass::aggregate_mass_properties ( const std::vector< MassProperties< Scalar > > & components)

Aggregate a collection of mass properties

Computes combined CG and inertia tensor about combined CG. Equivalent to sum() in Python.

Parameters
componentsVector of component mass properties
Returns
Combined mass properties

◆ is_physically_valid()

template<typename Scalar>
bool vulcan::mass::is_physically_valid ( const MassProperties< Scalar > & props)

Check if mass properties are physically valid (numeric only)

Conditions checked:

  1. mass > 0
  2. Principal moments > 0
  3. Triangle inequality: I1 + I2 >= I3 (for all permutations)
Returns
true if physically possible

◆ is_point_mass()

template<typename Scalar>
bool vulcan::mass::is_point_mass ( const MassProperties< Scalar > & props)

Check if effectively a point mass (zero inertia).

◆ operator*()

template<typename Scalar>
MassProperties< Scalar > vulcan::mass::operator* ( const Scalar & factor,
const MassProperties< Scalar > & props )

Left-multiplication: factor * props.

◆ principal_axes()

template<typename Scalar>
Mat3< Scalar > vulcan::mass::principal_axes ( const MassProperties< Scalar > & props)

Compute principal axes rotation matrix (eigenvectors, numeric only).

◆ principal_moments()

template<typename Scalar>
Vec3< Scalar > vulcan::mass::principal_moments ( const MassProperties< Scalar > & props)

Compute principal moments of inertia (eigenvalues, numeric only).

◆ transform_mass_properties()

template<typename Scalar>
MassProperties< Scalar > vulcan::mass::transform_mass_properties ( const MassProperties< Scalar > & props,
const Mat3< Scalar > & rotation,
const Vec3< Scalar > & translation )

Transform mass properties to a new coordinate frame

Parameters
propsOriginal mass properties
rotationRotation matrix from old frame to new frame
translationTranslation from old origin to new origin (in old frame)
Returns
Mass properties expressed in new frame