Force: One Body Vector
Model ElementForce_Vector_OneBody defines a general force and/or torque acting one a Reference_Marker.
Description
It can be used to model a force, a torque, or both. The force and/or torque vectors are defined by their three components with respect to another Reference_Marker. The components may be defined using MotionSolve expressions or a user defined subroutine. They may be a function of any system state and time.
Format
<Force_Vector_OneBody
id = "integer"
[ label = "string" ]
marker_id = "integer"
ref_marker_id = "integer"
{
type = "FORCEONLY"
{
fx_expression = "motionsolve_expression"
fy_expression = "motionsolve_expression"
fz_expression = "motionsolve_expression" >
| usrsub_dll_name = "valid_path_name"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custom_fnc_name" >
| script_name = valid_path_name
interpreter = "PYTHON" | "MATLAB"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custom_fnc_name" >
}
| type = "TORQUEONLY"
{
tx_expression = "motionsolve_expression"
ty_expression = "motionsolve_expression"
tz_expression = "motionsolve_expression" >
| usrsub_dll_name = "valid_path_name"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custom_fnc_name" >
| script_name = valid_path_name
interpreter = "PYTHON" | "MATLAB"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custom_fnc_name" >
}
| type = "FORCEANDTORQUE"
{
fx_expression = "motionsolve_expression"
fy_expression = "motionsolve_expression"
fz_expression = "motionsolve_expression"
tx_expression = "motionsolve_expression"
ty_expression = "motionsolve_expression"
tz_expression = "motionsolve_expression" >
| usrsub_dll_name = "valid_path_name"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custom_fnc_name" >
| script_name = valid_path_name
interpreter = "PYTHON" | "MATLAB"
usrsub_param_string = "USER( [[par_1 [, ...][,par_n]] )"
usrsub_fnc_name = "custome_fnc_name" >
}
}
</Force_Vector_OneBody>
Attributes
- id
- Element identification number (integer>0). This number is unique among all Force_Vector_TwoBody elements.
- label
- The name of the Force_Vector_OneBody element.
- marker_id
- Specifies the Reference_Marker at which the force is applied. This is designated as the point of application of the force.
- ref_marker_id
- Specifies the Reference_Marker whose coordinate system is used as the basis for defining the components of the force vector.
- type
- Select from "FORCEONLY", "TORQUEONLY", and
"FORCEANDTORQUE".
- "FORCEONLY"
- Implies that the element applies a force between the two Reference_Markers. No torque is applied.
- "TORQUEONLY"
- Implies that the element applies a torque between the two Reference_Markers. No force is applied.
- "FORCEANDTORQUE"
- Implies that the element applies a force and a torque between the two Reference_Markers.
- fx_expression, fy_expression, fz_expression
- Specifies the three components of the force vector as function expressions.
- tx_expression, ty_expression tz_expression
- Specifies the three components of the torque vector as function expressions.
- usrsub_param_string
- 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. This attribute is common to all types of user subroutines and scripts. The name of the user subroutine depends on the type of the element.
- usrsub_dll_name
- Specifies 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
- Specifies an alternative name for the user subroutine VFOSUB/VTOSUB/GFOSUB.
- script_name
- Specifies the path and name of the user written script that contains the routine specified by usrsub_fnc_name.
- interpreter
- Specifies the interpreted language that the user script is written in. Valid choices are MATLAB or PYTHON.
Example
The following examples shows the use of a Force_Vector_OneBody element to model a force of constant magnitude 100 units, acting along the negative Z direction of the Reference_Marker with id 1:
<Force_Vector_OneBody
id = "18"
type = "FORCEONLY"
marker_id = "1801"
ref_marker_id = "1"
fx_expression = "0"
fy_expression = "0"
fz_expression = "-100" >
</Force_Vector_OneBody>
Comments
- marker_id is designated as the point of application of the Force_Vector_TwoBody.
- The force and torque expressions (or user subroutines) must be smooth and preferably differentiable. This enables the numerical methods to deal with the force effectively.
- If you are using velocity measures like VX(), VY(), and VZ() to calculate a damping force, make sure that the time derivative is taken in the correct reference frame. See the example for more information.
- Force_Vector_OneBody can act on all types of bodies: Body_Rigid, Body_Flexible, and Body_Point.