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.
"FORCEONLY" uses a VFOSUB.
"TORQUEEONLY" uses a VTOSUB.
"FORCEANDTORQUE" uses a GFOSUB.
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

  1. marker_id is designated as the point of application of the Force_Vector_TwoBody.
  2. 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.
  3. 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.
  4. Force_Vector_OneBody can act on all types of bodies: Body_Rigid, Body_Flexible, and Body_Point.