## Constraints: Externally calculated imposed motion |

Externally calculated imposed motion enables the motion of the out-frame, relative to the in-frame, to be calculated programmatically by an external function. Typically the calculation will be based on values of variables which change as the simulation proceeds – if not, it may be preferable to use time history data or a curvilinear constraint to impose an entirely pre-calculated motion.

When using externally calculated imposed motion, the initial value specifies the initial displacement of the out-frame relative to the in-frame. This displacement is used in the static state.

- The $x,y,z$ values define the initial translational displacement of the out-frame relative to and with respect to the in-frame.
- The $R\urm{x},R\urm{y},R\urm{z}$ values define the initial rotational displacement of the out-frame relative to the in-frame. They are the components of a vector, with respect to the in-frame, that define the rotation from the in-frame to the out-frame. The rotation is through an angle, measured in radians, equal to the magnitude of the vector and is about the direction of the vector.

Unlike most standard external functions, the externally calculated imposed motion external function returns multiple values per call: position, orientation, velocity, angular velocity, acceleration and angular acceleration. These values are returned in a TExternallyCalculatedImposedMotionStructValue struct, documented in full in the OrcFxAPI help.

Note: | If the imposed motion consistent with solver option is checked (implicit integration scheme only), then only the position and orientation values are needed. The returned velocity, angular velocity, acceleration and angular acceleration values will be ignored, and instead will be determined by the solver. |