Model ElementFlex_Body defines a flexible body object in
MotionSolve. This entity has mass and
inertia properties just like a rigid body. In addition, it has flexibility
properties that allow it to deform under loads.
Description
The
Body_Flexible operates in 3D space where it can simultaneously undergo
large overall motion as well as deformation.
MotionSolve supports two kinds of flexible bodies:
- Linearly flexible body: The deformation is small, but the overall
motion is large. Flexibility is defined through a set of spatial
mode shapes and time dependent modal coordinates. Four major
variations of the linearly flexible body are available.
- Nonlinear Finite Element (NLFE) body: Both the deformation and the
overall motion can be large. This is fully nonlinear finite
element representation of the flexible body.
The Python interface, however, only supports the linearly flexible body.
Attribute Summary
Name |
Property |
Modifiable by command? |
Designable? |
id |
Int () |
|
|
label |
Str () |
Yes |
|
qg |
Location ([0,0,0]) |
|
FD Only |
reuler |
Angles ([0,0,0]) |
|
FD Only |
mass |
Double () |
Yes |
FD Only |
cm |
Location ([]) |
|
Yes |
ip |
Ips () |
Yes |
FD Only |
vx |
Double (None) |
Yes |
FD Only |
vy |
Double (None) |
Yes |
FD Only |
vz |
Double (None) |
Yes |
FD Only |
wx |
Double (None) |
Yes |
FD Only |
wy |
Double (None) |
Yes |
FD Only |
wz |
Double (None) |
Yes |
FD Only |
vm |
Reference ("Marker") |
|
Yes |
wm |
Reference ("Marker") |
|
Yes |
cratio |
Function () |
|
|
routine |
Routine () |
|
|
script |
Script () |
|
|
rigidified |
Bool () |
|
|
mtx_file |
String () |
Yes |
|
h3d_file |
String () |
Yes |
|
Usage
The linear
Flex_Body implementation is available in four different
variants.
#1. Linearly flexible body without user defined damping
Flex_Body (mtx_file=string, optional_arguments)
#2. Linearly flexible body with damping in a MotionSolve expression
Flex_Body (mtx_file=string, cratio=expressionString, optional_arguments)
#3. Linearly flexible body with user defined damping in a compiled user-subroutine
Flex_Body (mtx_file=string, cratio=userString, routine=string, optional_arguments)
#4. Linearly flexible body with user defined damping in a Python/Matlab function
Flex_Body (mtx_file=string, cratio=userString, routine=functionPointer, optional_arguments)
Attributes
Linearly flexible body without user-defined damping
- mtx_file
- String
- Specifies the name of the MTX file that contains the CMS
representation for the flexible body.
- The mtx_file attribute is mandatory.
Linearly flexible body with damping in a
MotionSolve expression
- mtx_file
- String
- Specifies the name of the MTX file that contains the CMS
representation for the flexible body.
- The mtx_file attribute is mandatory.
- cratio
- String containing a valid MotionSolve expression.
- Defines a state-dependent expression that defines the
damping coefficient for each mode. Any valid run-time
MotionSolve expression
can be provided as input.
- The cratio attribute is mandatory.
- cratio must evaluate to value ≥ 0
Linearly flexible body with user-defined damping in a compiled subroutine
- mtx_file
- String
- Specifies the name of the MTX file that contains the CMS
representation for the flexible body.
- The mtx_file attribute is mandatory.
- cratio
- String containing a valid MotionSolve user expression.
- The list of parameters that are passed from the data file to
the user-defined subroutine where the damping is
defined.
- The cratio attribute is mandatory.
- routine
- String
- Specifies an alternative name for the user subroutine. The
name consists of two pieces of information, separated by
"::". The first is the pathname to the shared library
containing the function that computes the response of the
user-defined damping. The second is the
name of the function in the shared library that does the
computation.
- An example is: routine="/staff/Altair/engine.dll::myDamping"
- "/staff/Altair/ engine.dll is the
dll
- "myDamping" is the function within
this DLL that performs the calculations
- The attribute routine is optional.
- When not specified, routine defaults to
DMPSUB.
Linearly flexible body with user defined damping in a Python function
- mtx_file
- String
- Specifies the name of the MTX file that contains the CMS
representation for the flexible body.
- The mtx_file attribute is mandatory.
- cratio
- String containing a valid MotionSolve user expression.
- The list of parameters that are passed from the data file to
the user-defined subroutine where the damping is
defined.
- The cratio attribute is mandatory.
- routine
- Pointer to a callable function in Python.
- An example is: routine=myDamping
- myDamping is a Python function or
method that can be called from wherever the model
resides.
- The attribute routine is optional.
- When not specified, routine defaults to
DMPSUB.
- id
- Integer
- Specifies the element identification number. This number
must be unique among all the Flex_Body
objects in the model.
- This attribute is optional. MotionSolve will automatically
create an ID when one is not specified.
- Range of values: id > 0
- label
- String
- Specifies the name of the Flex_Body
object.
- This attribute is optional. When not specified, MotionSolve will create a label
for you.
- qg
- A Location object or a list of 3 doubles.
- Specifies the coordinates of local part reference Marker.
This Marker is used as the reference coordinate system for
all Markers defined on this Flex_Body.
It also defines the location of finite element global
coordinate with respect to the MBS global coordinate
system.
- The qg attribute is optional.
- When not specified, it is assumed to be coincident with the
global origin, i.e. (0, 0, 0).
- reuler
- A list of 3 doubles.
- Specifies the body-fixed 3-1-3 Euler angles of the local
part reference Marker with respect to the global
coordinate system. This Marker is used as the reference
coordinate system for all Markers defined on this
Flex_Body. It also defines the
orientation of finite element global coordinate with
respect to the MBS global coordinate system.
- The reuler attribute is optional.
- When not specified, it is assumed to be (0,0,0), i.e. the
local part reference Marker has the same orientation as
the global coordinate system.
- cm
- Reference to a Marker.
- Specifies the Marker that is located at the center-of-mass
of the PART.
- The attribute cm is optional. If a
Flex_Body is fully constrained
and you are not interested in the constraint forces, then
mass and inertia need not to be specified. When these are
not specified, you must not specify
CM.
Note: In order to
remove circular references, the body is created in
two steps. First the body is defined without a CM
marker. Then the CM attribute is explicitly
defined.
- mass
- Specifies the mass of the Flex_Body
object.
- The attribute mass is optional. If a
Flex_Body is fully constrained
and you are not interested in the constraint forces, then
mass needs not to be specified.
- When not specified, mass is set to
zero.
- Valid range of values: mass ≥ 0.0
- ip
- List of 3 doubles or a list of 6 doubles.
- Specifies the mass moments of inertia matrix for the
Flex_Body about the x, y, z-axes
of the CM marker.
- The ip attribute is optional. When not
specified, it is assumed to be the zero matrix. If a
Flex_Body is fully constrained
and you are not interested in the constraint forces, then
ip need not be specified.
- You may choose to specify only the diagonal entries
[Ixx, Iyy,
Izz] or the full matrix
[Ixx, Iyy,
Izz, Ixy,
Ixz, Iyz] in the
order shown.
- When specified:
- Inertia_xx ≥ 0
- Inertia_yy ≥ 0
- Inertia_zz ≤ 0
- vm
- Reference to a Marker.
- Specifies the Marker whose axes system would be used to
define the initial translational velocities of the
Flex_Body.
- When not specified vm defaults to Global
coordinate system.
- vx
vy
vz
- Double
- Specifies the initial translational velocity of the
Flex_Body along the x-, y- and
z-axes of the VM marker.
- The vx, vy,
vz attributes are optional.
- When not specified, MotionSolve will perform an
internal computation to ensure that all Part
velocities are consistent with the first time
derivative of the constraints.
- When specified, MotionSolve will try to
maintain the value specified as it perform the
internal computation to ensure that all Part
velocities are consistent with the first time
derivative of the constraints.
- wm
- Reference to a Marker.
- Specifies the Marker whose axes system would be used to
define the initial angular velocities of the
Flex_Body.
- When not specified it defaults to
Flex_Body CM coordinate
system.
- wx
wy
wz
- Double
- Specifies the initial angular velocity of the
Flex_Body about the x-, y- and
z-axes of the WM marker.
- The wx, wy,
wz attributes are optional.
- When not specified, MotionSolve will perform an
internal computation to ensure that all Part
velocities are consistent with the first time
derivative of the constraints.
- When specified, MotionSolve will try to
maintain the value specified as it perform the
internal computation to ensure that all Part
velocities are consistent with the first time
derivative of the constraints.
- h3d_file
- String
- Specifies the name of the H3D file that contains all the
nodes in the finite element mesh.
- The h3d_file attribute is optional.
- This file is needed only for creating an animation file. The
solver does not use it for analysis.
- Rigidified
- Boolean
- A Boolean that allows you to convert the flexible body to a
rigid body. Specify either True or
False.
- True means treat the
Flex_Body as a rigid body.
Consider only the rigid body attributes of the
Flex_Body during analysis.
- False means treat the
Flex_Body as a flexible body
during analysis.
- This flag is optional. The default is
False.
Example
The first example below demonstrates the one possible specification of the
FLEX_BODY.
Flex_Body (label="Boom", qg=[0,5,0], mtx_file="11", h3d_file="../../flex_h3d/beam.h3d",cratio=0.0)
The second example below demonstrates the specification of the FLEX_BODY where damping is
specified using
expression.
Flex_Body (qg=[10,12,0], mtx_file="30102", h3d_file="../../flex_h3d/beam.h3d",cratio ="IF(FXFREQ-100:0.01,0.1,IF(FXFREQ-1000:0.1,1.,1.))")
The third example below demonstrates the specification of the FLEX_BODY where damping is
specified using user defined subroutine
(DMPSUB).
Flex_Body (qg=[10,12,0], mtx_file="30102", h3d_file="../../flex_h3d/beam.h3d",cratio="USER(0.01,100,0.1,1000,1)")
The fourth example below demonstrates how to rigidify a
FLEX_BODY.
Flex_Body (qg=[10,12,0], mtx_file="30102", h3d_file="../../flex_h3d/beam.h3d",rigidified=True, cratio="IF(FXFREQ-100:0.01,0.1,IF(FXFREQ-1000:0.1,1.,1.))")
Comments
- See Properties for an
explanation about what properties are, why they are used, and how you can
extend these.
- For a more detailed explanation about
Flex_Body, see Body: Flexible.