function
RigidBody.validParameters
Physical-domain predicate for mass, gravity, and symmetric positive-definite inertia
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| input | parameters | RigidBody.Parameters | | |
| output | valid | Boolean | |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
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;