CogniPilot

MODELICA LIBRARY · ENGINEERING REFERENCE

RigidBody/validParameters.mo

Download original .moGitHub source

Documentation: RigidBody.validParameters

within RigidBody;
function validParameters
  "Physical-domain predicate for mass, gravity, and symmetric positive-definite inertia"
  input RigidBody.Parameters parameters;
  output Boolean valid;
protected
  Real J[3, 3];
  Real determinant;
algorithm
  J := parameters.inertia;
  determinant := J[1, 1] * J[2, 2] * J[3, 3]
    + 2.0 * J[1, 2] * J[1, 3] * J[2, 3]
    - J[1, 1] * J[2, 3]^2 - J[2, 2] * J[1, 3]^2
    - J[3, 3] * J[1, 2]^2;
  valid := parameters.mass > 0.0 and parameters.gravity >= 0.0
    and abs(J[1, 2] - J[2, 1]) < 1.0e-12
    and abs(J[1, 3] - J[3, 1]) < 1.0e-12
    and abs(J[2, 3] - J[3, 2]) < 1.0e-12
    and J[1, 1] > 0.0
    and J[1, 1] * J[2, 2] - J[1, 2]^2 > 0.0
    and determinant > 0.0;
end validParameters;