This manual provides a detailed list and usage information regarding command statements, model statements, functions and
the Subroutine Interface available in MotionSolve.
Model ElementCoupler defines an algebraic relationship between the degrees of freedom of two or three joints. This constraint element
may be used to model idealized spur gears, rack and pinion gears, and differentials as simple constraints that relate
the displacements in a set of joints.
Model ElementThe DeformCurve element allows you to represent a curve defined in the model as a DeformableCurve element. The graphic is defined by a number of straight line segments connecting vertices on the curve defined by
DeformableCurve reference.
Model ElementThe DeformSurface element allows you to represent a deformable surface defined in the model as a DeformSurface element. The graphic is defined by a number of straight line segments connecting vertices on the surface defined
by DeformSurface reference.
Model ElementDv defines a special type of solver state variable. It is used in the evaluation and computation of design sensitivity
as a design parameter. Its value is modified during the simulation in case of Design Sensitivity Analysis.
Model ElementEquilibrium defines the solution control parameters for Static and Quasi-static analysis. These parameters control the accuracy
the solution and the method to be used for solution.
Model ElementField defines a force and torque acting between two markers, I and J. The force and torque can only be a function of time
and the relative displacement between the I and J markers. The six components (three forces and three moments) are defined
in the coordinate system of the J marker.
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.
Model ElementThe Friction element is used to specify joint friction in a specific joint in your model. Friction is supported only in the following
types of joints: revolute, spherical, translational, cylindrical and universal. MotionSolve uses the LuGre (Lundt-Grenoble) model for friction.
Model ElementThe Frustumelement allows you to represent the portion of a cone that remains after its upper part has been cut off by a plane
parallel to its base, or that is intercepted between two such planes.
Model ElementThe GCON element is used to specify a user defined general constraint. Your constraint equations may involve position as well
as velocity measures of the system. Although MotionSolve provides a large set of constraints to choose from (see JOINT), there are situations that require non-standard constraints.
Model ElementGse is an abstract modeling element that defines a generic dynamic system. The dynamic system is characterized by a vector
of inputs u, a vector of dynamic states x, and a vector of outputs y. The state vector x is defined through a set of differential equations.
Model ElementJprim is used to remove degrees of freedom between two bodies by specifying
conditions in which the relative translational or rotational motion can occur. Jprim differs from JOINT in that the former specifies mathematical constraints, which may not have
concrete physical realizations like the latter.
Model ElementThe LineMesh element connects a number of vertices in space with straight lines. It is similar to the Outline element except it does not require markers. You can pass coordinates to the LineMesh geometry.
Model ElementMarker defines an orthonormal, right-handed coordinate system and reference frame in MotionSolve. A Marker must belong to a part. The body can be any type: rigid, flexible, or point.
Model ElementMate is used to specify general mating constraints between geometric
primitives. Mate differs from JOINT and JPRIM in that it specifies more general constraints based on distance, tangency,
and coincidence relations between mating
geometries.
Model ElementNforce defines a force and torque acting between many markers. The force and the torque can only be linear functions of
the relative displacement and velocity of the various markers.
Model ElementThe ParamCurve element allows you to represent a curve defined in the model as a Curve element. The graphic is defined by a number of straight line segments connecting vertices on the curve defined by
Curve reference.
Model ElementPtcv defines a higher pair constraint. A fixed point on one body slides on a curve that is fixed on a second body. The
point is not allowed to lift off the curve.
Model ElementPTSF defines a higher pair constraint. A fixed point on one body slides on a surface that is fixed on a second body. The
point is not allowed to lift off the surface.
Model ElementRv defines a special type of solver state variable. It is used in the evaluation and computation of design sensitivity
as a response variable.
Model ElementSfsf defines a higher pair constraint. The constraint consists of a surface on one body rolling and sliding on a surface
on a second body. The surfaces are required to have a unique contact point.
Model ElementThe UserMsg element allows you to control the output of MotionSolve messages. Any message that MotionSolve prints to standard output goes through the
This manual provides a detailed list and usage information regarding command statements, model statements, functions and
the Subroutine Interface available in MotionSolve.
Model ElementMarker defines an orthonormal, right-handed coordinate system and reference frame in MotionSolve. A Marker must belong to a part. The body can be any type: rigid, flexible, or point.
Model ElementMarker defines an orthonormal, right-handed coordinate
system and reference frame in MotionSolve. A
Marker must belong to a part. The body can be any type:
rigid, flexible, or point.
Class Name
Marker
Description
The Newtonian reference frame (Ground) is considered to be a special case of a rigid
PART.
Attribute Summary
Name
Property
Modifiable by
command?
Designable?
id
Int ()
label
Str ()
part
Reference
(Part)
Yes
point_mass
Reference
(PointMass)
Yes
flex_body
Reference
(FlexBody)
Yes
body
Reference (Body) #
Alias
Yes
Yes
qp
Location (Point(),
required=True)
Yes
Yes
zp
Location
()
Yes
Yes
xp
Location
()
Yes
Yes
xv
Location()
Yes
zv
Location()
Yes
reuler
Angles ()
Yes
Yes
floating
Bool ()
rm
Reference
("Marker")
node
Int ()
usexp
Bool ()
usexv
Bool ()
function
Function
("MARKER_READ()")
routine
Routine ()
Usage
#1: Defined completely in the input fileMarker (body=objBody, optional_attributes)#2: Defined in a compiled user-written subroutineMarker (body=objBody, function=userString, routine=string, optional_attributes)#3: Defined in a Python scriptMarker (body=objBody, function=userString, routine=functionPointer, optional_attributes)
Attributes
Attributes Defined Completely in the Input File
body
Reference to an existing Part, PointMass or FlexBody object
Specifies an already existing PART, POINT_MASS
or FLEX_BODY object to which the Marker
belongs.
The body attribute is mandatory
qp
A Location object or a list of 3 doubles
Specifies the coordinates of the origin of the Marker in the RM
Marker coordinate system.
The qp attribute is optional. When not specified, it is assumed
to be coincident with the global origin, i.e. (0, 0, 0).
zp
A Location object or a list of 3 doubles
Specifies the coordinates of a point on the z-axis of the Marker
in the RM Marker coordinate system.
The zp attribute is optional. When not specified, the point is
assumed to be on the z-axis of the RM Marker.
The zp/xp attribute is exclusive to
zv, xv, reuler, and
function. Only one of them may be specified.
xp
A Location object or a list of 3 doubles.
Specifies the coordinates of a point on the x-axis of the Marker
in the RM Marker coordinate system.
The xp attribute is optional. When not specified, the point is
assumed to be on the x-axis of the RM Marker.
The zp/xp attribute is exclusive to
zv, xv, reuler, and
function. Only one of them may be specified.
usexp
Boolean
The usexp attribute is optional.
When usexp is set to "TRUE", the x-axis of the Marker is calculated first using the QP
and XP values. Then the z-axis is computed using
QP and ZP such that it is orthonormal to
the x-axis. Lastly, the y-axis is computed using the right-hand rule.
When usexp is set to "FALSE" or it is not defined, the z-axis of the Marker is calculated first using the
QP and ZP values. Then the x-axis is
computed using QP and XP such that it is
orthonormal to the z-axis. Lastly, the y-axis is computed using the right-hand
rule.
zv
A Location object or a list of 3doubles.
Specifies the z axis direction of the Marker in the RM Marker
coordinate system.
The zv attribute is optional. When not specified, the z-axis of
the RM Marker will be used.
The zv/xv attributes are exclusive to
zp, xp, reuler and
function. Only one of them may be specified.
xv
A Location object or a list of 3doubles.
Specifies the x-axis direction of the Marker in the RM Marker
coordinate system.
The xv attribute is optional. When not specified, the x-axis of
the RM Marker will be used.
The zv/xv attribute is exclusive to
zp, xp, reuler, and
function. Only one of them may be specified.
usexv
Boolean.
The usexv attribute is optional.
When usexv is set to "TRUE", the x-axis of
the Marker is calculated first using xv.
Then, the z-axis is computed using zv such that it is
orthonormal to the x-axis. Lastly, the y-axis is computed using the right-hand
rule.
When usexv is set to "FALSE" or it is not
defined, the z-axis of the Marker is calculated first using
zv. Then, the x-axis is computed using xv
such that it is orthonormal to the z-axis. Lastly, the y-axis is computed using
the right-hand rule.
reuler
A list of 3 doubles
Specifies the body-fixed 3-1-3 Euler angles, in radians, of the
Marker with respect to the RM Marker.
The reuler attribute is optional. When not specified, it is
assumed to be (0,0,0). In other words, the Marker has the same
orientation as the RM Marker.
The reuler attribute is exclusive to
zv/xv,
zp/xp, and function. Only
one of them may be specified.
Attributes Defined in a Compiled User-written Subroutine
body
Reference to an existing Part, PointMass or FlexBody object
Specifies an already existing PART, POINT_MASS or
FLEX_BODY object to which the Marker
belongs.
The body attribute is mandatory
function
String
The list of parameters that are passed from the data file to the user-defined
subroutine.
The function 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
Surface. The second is the name of the function in the shared
library that does the computation.
An example is: routine="/staff/Altair/engine.dll::myMarker"
"/staff/Altair/ engine.dll is
the dll
myMarker" is the function within this
DLL that performs the calculations
The attribute routine is optional.
When not specified, routine defaults to
MARKER_READ.
When function is specified, but routine is
not, routine defaults to MARKER_READ.
Attributes Defined in a Python Script
body
Reference to an existing Part, PointMass or FlexBody object
Specifies an already existing PART, POINT_MASS
or FLEX_BODY object to which the Marker
belongs.
The body attribute is mandatory
function
String
The list of parameters that are passed from the data file to the user-defined
subroutine.
The function attribute is mandatory
routine
Pointer to a callable function in Python
An example is: routine=myMarker
myMarker 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
MARKER_READ.
Optional Attributes Available to all Methods
id
Integer
Specifies the element identification number. This number must be unique among all
the Marker 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 Marker object.
This attribute is optional. When not specified, MotionSolve will create a label for you.
rm
Reference to an existing Marker
Defines the reference coordinate system in which the MARKER
location and orientation are described.
If you want to specify the position and orientation of the MARKER
in the global reference frame, use RM=0.
The rm attribute is optional. When not specified, the position
and orientation of the MARKER is assumed to be with respect to the
LPRF of the hosting body.
floating
Boolean
Specifies whether the MARKER is a floating marker or not.
The attribute floating is optional. When not specified it is set
to "FALSE".
node
Integer
Specifies the node on the flexible body to which the MARKER is
attached.
The node attribute is required only when a Marker is to be placed
oat a node on a flexible body. It is not to be used for rigid bodies or point mass
bodies.
Define a Marker whose location is dependent on design
variables.
# DVs_
qpx = Dv (label="X coordinate of Point B", b=40)
qpy = Dv (label="Y coordinate of Point B", b=200)
qpz = Dv (label="Z coordinate of Point B", b=350)
# QP
qp = [qpx, qpy, qpz]
# ZP is along x-axis
zp = [qpx+10, qpy, qpz]
# XP is along z-axis
xp = [qpx, qpy, qpz+10]
# Now define the Marker and hold it in the Python variable markerB
markerB = Marker (body=p1, qp=qp, zp=zp, xp=xp, label="markerB")
Define a Marker, m2, whose location and orientation is the same as another,
m1.