Inertial Characteristics of a Model

To pass inertial characteristics of a model, the InertiaProperties class is used, which is shown in Fig. 1.

../../../../_images/R.3.1.1.png

Fig. 1

The InertiaProperties class is declared in the mip_solid_mass_inertia.h file. The InertiaProperties class contains the following data about the model:

  • double area – surface area,

  • double volume – volume,

  • double mass – mass,

  • double inertia[3] – static moments in the source coordinate system,

  • double initial[3][3] – moments of inertia in the source coordinate system,

  • double moments[3][3] – moments of inertia in the central coordinate system,

  • double general[3] – principal central moments of inertia,

  • MbCartPoint3D center – center of gravity,

  • MbVector3D direction[3] – direction vectors of principal axes of inertia.

When the InertiaProperties class is initialized, all data is set to zero, and the coordinates of the center of gravity are assumed to be NOT_INITIAL_DBL. The initial moments of inertia are calculated in the coordinate system in which the model is defined. The moments moments of inertia are calculated in a coordinate system whose origin is at the center point and whose coordinate axes coincide with the axes of the source coordinate system in which the model is defined. The general moments of inertia are calculated in the principal central coordinate system whose origin is at the center point and whose coordinate axes are obtained by computation and coincide with the principal axes of inertia of the model. Centrifugal moments of inertia are absent in the principal coordinate systems.

The direction vectors define the directions of the principal axes of inertia. If all principal moments of inertia general[i], i = 1, 2, 3, are different, then all vectors direction[i], i = 1, 2, 3, are nonzero. If all principal moments of inertia general[i], i = 1, 2, 3, are equal, then all vectors direction[i], i = 1, 2, 3, are zero, and any three mutually orthogonal vectors can be used as principal directions. If two of the three principal moments of inertia are equal, for example general[j] == general[k], then two of the three vectors are zero, direction[j] = direction[k] = 0, and the nonzero direction[i] vector defines the direction of the principal axis of inertia whose moment differs from the others; any two mutually orthogonal vectors that are also orthogonal to the nonzero direction[i] vector can be used as the other two principal directions.

The possibility of using ready-to-use data for individual elements of the model is provided by the SolidMIAttire and AssemblyMIAttire classes, which are shown in Fig. 2 and Fig. 3. The classes are declared in the mip_solid_mass_inertia.h file.

../../../../_images/R.3.1.2.png

Fig. 2

../../../../_images/R.3.1.3.png

Fig. 3

The SolidMIAttire class contains the following data:

  • const MbSolid & solid – body,

  • double density – density or specific mass per unit area,

  • MbMatrix3D matrix – matrix that transforms the body to the nearest assembly coordinate system,

  • InertiaProperties * properties – assigned inertial characteristics of the body, which may be null or partially specified,

  • bool ready – flag indicating that characteristics do not need to be calculated.

The AssemblyMIAttire class contains the following data:

  • RPArray< AssemblyMIAttire > assemblies – set of next-level assembly units,

  • RPArray< SolidMIAttire > solids – bodies of the assembly unit,

  • MbMatrix3D matrix – matrix that transforms the assembly unit to the nearest assembly coordinate system,

  • InertiaProperties * properties – assigned inertial characteristics of the assembly unit, which may be null or partially specified,

  • bool ready – flag indicating that characteristics do not need to be calculated.

If instances of the SolidMIAttire and AssemblyMIAttire classes contain non-null properties and ready == true, then inertial characteristics of the corresponding object will not be calculated, and the result will contain data from properties.

If instances of the SolidMIAttire and AssemblyMIAttire classes contain non-null properties and ready == false, then the result will contain data from properties that are not equal to NULL_EPSILON or NOT_INITIAL_DBL. Data in properties that are equal to NULL_EPSILON or NOT_INITIAL_DBL will be calculated. These classes allow mixing computed data with assigned data.