# Motion: Marked Based

Command ElementModifies a marker motion element.

## Format


<Motion_Marker
id                  = "integer"
i_marker_id         = "integer"
j_marker_id         = "integer"
direction           = { "X" | "Y" | "Z" | "B1" | "B2" | "B3" }
{
val_type            = "D"
|
val_type            = "V"
ic_disp             = "real"
|
val_type            = "A"
ic_disp             = "real"
ic_vel              = "real"
}
{
type                = "EXPRESSION"
expr                = "motionsolve_expression" >
|
type                = "USERSUB"
usrsub_dll_name     = "valid_path_name"
usrsub_param_string = "USER( [[par_1[,...][,par_n]])"
usrsub_fnc_name     = "valid_fnc_name"
}
/>

## Attributes

id
Element identification number (integer>0). This number is unique among all Motion_Marker elements.
type
Select from "EXPRESSION" and "USERSUB". Specifies how the motion expression is defined. The "EXPRESSION" option specifies that the motion value is a MotionSolve expression that can be evaluated at run-time. The "USERSUB" option indicates that the value of the motion is specified in a user defined subroutine. The parameters usrsub_param_string, usrsub_dll_name and usrsub_fnc_name are used to provide more information about the user defined subroutine.
val_type
Modifies whether the motion applies a displacement input (D), a velocity input (V), or an acceleration input (A). You must select one option from "D", "V" or "A".
expr
Modifies the expression that defines the motion value. Use this parameter only when type = "EXPRESSION". Any valid run-time MotionSolve expression can be provided as input.
usrsub_param_string
Modifies the list of parameters that are passed from the data file to the user defined subroutine. Use this keyword only when type = "USERSUB" is selected.
usrsub_dll_name
Modifies the path and name of the DLL or shared library containing the user subroutine. MotionSolve uses this information to load the user subroutine in the DLL at run time.
usrsub_fnc_name
Modifies an alternative name for the user subroutine MOTSUB.
i_marker_id
Modifies the Reference_Marker ID at which the motion input is applied.
j_marker_id
Modifies the Reference_Marker ID from which the motion input is applied.
direction
Modifies the direction of the input. Select one from "X", "Y", "Z", "B1", "B2", and "B3".
"X", "Y", and "Z" specify the direction for the translational motion.
"B1", "B2", "B3" specify the direction for the rotational motion.
ic_disp
Modifies the displacement initial condition that is required when val_type = "V" or val_type = "A".
ic_vel
Modifies the velocity initial condition that is required when val_type = "A".

## Example

<Motion_Marker
id                  = "301001"
type                = "EXPRESSION"
val_type            = "D"
expr                = "0.1*SIN(3*TIME)"
i_marker_id         = "30105071"
j_marker_id         = "30101070"
direction           = "Y"
/>
<Motion_Marker
id                  = "301001"
type                = "USERSUB"
val_type            = "D"
usrsub_param_string = "USER(5,2)"
usrsub_dll_name     = "NULL"
i_marker_id         = "30105071"
j_marker_id         = "30101070"
direction           = "Y"
/>