Model ElementFlexBody defines a flexible body object in MotionSolve. This entity has mass and inertia properties, like
a rigid body. In addition, it has flexibility properties that allow it to deform under
loads.
Description
The
FlexBody 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 based on Component Mode Synthesis (CMS):
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.
- Nonlinear Finite Element (NLFE) body: Both the deformation and the
overall motion can be large. This is a fully nonlinear finite
element representation of the flexible body.
The Python interface, however, only supports the linearly flexible
body (CMS).
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 |
vm |
Reference ("Marker") |
|
Yes |
vx |
Double (None) |
Yes |
FD Only |
vy |
Double (None) |
Yes |
FD Only |
vz |
Double (None) |
Yes |
FD Only |
wm |
Reference ("Marker") |
|
Yes |
wx |
Double (None) |
Yes |
FD Only |
wy |
Double (None) |
Yes |
FD Only |
wz |
Double (None) |
Yes |
FD Only |
cratio |
Function () |
|
|
routine |
Routine () |
|
|
script |
Script () |
|
|
rigidified |
Bool () |
|
|
mtx_file |
String () |
Yes |
|
h3d_file |
String () |
Yes |
|
lset_file |
String () |
|
|
max_num_cnt_loadset |
Int (Unspecified) |
|
|
Usage
The linear
FlexBody implementation is available in four different
variants.
#1. Linearly flexible body without user defined damping
FlexBody (mtx_file=string, optional_arguments)
#2. Linearly flexible body with damping in a MotionSolve expression
FlexBody (mtx_file=string, cratio=expressionString, optional_arguments)
#3. Linearly flexible body with user defined damping in a compiled user-subroutine
FlexBody (mtx_file=string, cratio=userString, routine=string, optional_arguments)
#4. Linearly flexible body with user defined damping in a Python/Matlab/OML function
FlexBody (mtx_file=string, cratio=userString, routine=functionPointer, optional_arguments)
Attributes
- id
- Integer
- Specifies the element identification number. This number
must be unique among all the FlexBody
objects in the model.
- This attribute is optional. MotionSolve
automatically creates an ID when one is not
specified.
- Range of values: id > 0.
- label
- String
- Specifies the name of the FlexBody
object.
- This attribute is optional. When not specified, MotionSolve creates a label for
you.
- qg
- A Location object or a list of three doubles.
- Specifies the coordinates of a local part reference Marker.
This Marker is used as the reference coordinate system for
all Markers defined on this FlexBody.
It also defines the location of the 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. That is, (0, 0, 0).
- reuler
- A list of three 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
FlexBody. It also defines the
orientation of the 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). That is,
the local part reference Marker has the same orientation
as the global coordinate system.
- mass
- Specifies the mass of the FlexBody
object.
- The attribute mass is optional. If a
FlexBody is fully constrained and
you are not interested in the constraint forces, then
mass does not need to be
specified.
- When not specified, mass is set to
zero.
- Valid range of values: mass ≥ 0.0
- 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
FlexBody is fully constrained and
you are not interested in the constraint forces, then mass
and inertia do not need to be specified. When these are
not specified, you must not specify
cm.
Note: 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.
- ip
- List of three doubles or a list of six doubles.
- Specifies the mass moments of the inertia matrix for the
FlexBody 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
FlexBody is fully constrained and
you are not interested in the constraint forces, then
ip does not need to 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
FlexBody.
- When not specified vm defaults to the
global coordinate system.
- vx
vy
vz
- Double
- Specifies the initial translational velocity of the
FlexBody along the x-, y- and
z-axes of the vm marker.
- The vx, vy, and
vz attributes are optional.
- When not specified, MotionSolve performs an
internal computation to ensure that all Part
velocities are consistent with the first-time
derivative of the constraints.
- When specified, MotionSolve tries to maintain
the value specified as it performs 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
FlexBody.
- When not specified, it defaults to the
FlexBody
cm coordinate system.
- wx
wy
wz
- Double
- Specifies the initial angular velocity of the
FlexBody about the x-, y- and
z-axes of the wm marker.
- The wx, wy, and
wz attributes are optional.
- When not specified, MotionSolve performs an
internal computation to ensure that all Part
velocities are consistent with the first-time
derivative of the constraints.
- When specified, MotionSolve tries 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.
- 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.
- h3d_file
- String
- Specifies the name of the H3D file that contains all 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
FlexBody as a rigid body.
Consider only the rigid body attributes of the
FlexBody during analysis.
- False means treat the
FlexBody as a flexible body
during analysis.
- This flag is optional. The default is
False.
- lset_file
- String
- Instructs MotionSolve to write
loadsets for grid nodes that get into contact, and stores
them in the specified file.
- The lset_file attribute is optional.
- This file can be used to enhance the CMS analysis during
flexbody creation. lset_file requires
h3d_file to be defined.
- max_num_cnt_loadset
- Integer
- Defines the maximum number of loadsets to be written out if
lset_file is set. The number of
loadsets improves the enrichment for
FlexBody, but also decreases
computational efficiency. This attribute is optional. By
default, MotionSolve
automatically calculates an appropriate number of
loadsets.
- max_num_cnt_loadset > 0
Linearly flexible body with user-defined damping as a
MotionSolve
expression:
- 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.
- cratio must evaluate to value ≥ 0
Linearly flexible body with user-defined damping in a compiled subroutine:
- cratio
- String containing a valid MotionSolve user-written
subroutine.
- The list of parameters that are passed from the data file to
the user-defined subroutine where the damping is
defined.
- routine
- String
- Specifies an alternative name for the user-written
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:
- cratio
- String containing a valid MotionSolve user-written
subroutine.
- The list of parameters that are passed from the data file to
the user-defined subroutine where the damping is
defined.
- routine
- Pointer to a callable function in Python.
- For example: 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.
Example
The first example demonstrates the one possible specification of the
FlexBody.
FlexBody (label="Boom", qg=[0,5,0], mtx_file="11", h3d_file="../../flex_h3d/beam.h3d",cratio=0.0)
The second example demonstrates the specification of the
FlexBody, where
damping is specified using an
expression.
FlexBody (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 demonstrates the specification of the
FlexBody, where
damping is specified using a user-defined subroutine
(DMPSUB).
FlexBody (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 demonstrates how to rigidify a
FlexBody.
FlexBody (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 them.
- For a more detailed explanation of FlexBody,
see Body: Flexible.