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 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.
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 ElementCurve defines a parametric curve in 3D space.
Class Name
Curve
Description
A parametric curve has one free parameter, u, and three associated functions f(u), g(u) and h(u).
For every value, u=u*, f(u*), g(u*), and h(u*) represent the coordinates of
a point in space. As u is swept from its minimum to maximum value, a curve
in 3D space is generated. For additional information on the definition of
Curve, please see the Description and the Comments
section of Reference_ParamCurve.
Attribute Summary
Name
Property
Modifiable by command?
Designable?
id
Int ()
label
Str ()
matrix
Reference ("Matrix")
Yes
FD Only
curve_points
Bool ()
Yes
closed
Bool ()
Yes
minpar
Double (-1.0)
maxpar
Double (1.0)
routine
Routine ()
FD Only
script
Script ()
function
Function ("CURSUB")
FD Only
Usage
Curves are available in three different forms.
#1: Curve data provided in a MatrixCurve (matrix=objMatrix, type=string, curve_points=Boolean,optional_attributes)#2. Curve specified in a compiled user-written subroutineCurve (function=userString, routine=string, type=string,optional_attributes)#3. Curve specified in a Python functionCurve (function=userString, routine=functionPointer, type=string, curve_points=boolean,optional_attributes)
Attributes
Curve data provided in a Matrix
matrix
Reference to an existing matrix object.
Specifies the Matrix that contains the
curve data. The matrix should contain only the x-, y-, and
z- data for the individual curve points.
Note: For a closed curve, the first and last data points
must be the same.
The matrix attribute is mandatory.
type
String
Select from "OPEN" or
"CLOSED".
Note: For a
closed curve, the first and last data points must be
the same.
The type attribute is mandatory.
curve_points
Boolean
Select from TRUE or FALSE.
TRUE means that the curve passes through the
points.
FALSE means that the curve (B-spline) stays close to
the points, but does not pass through them in
general.
The curve_points attribute is
mandatory.
Curve specified in a compiled user-written subroutine
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::myCurve"
"/staff/Altair/ engine.dll is the
dll
"myCurve" is the function within this
DLL that performs the calculations
The attribute routine is optional.
When not specified, routine defaults to
CURSUB.
The attribute routine is optional.
type
String
Select from "OPEN" or
"CLOSED".
Note: For a
closed curve, the first and last data points must be
the same.
The type attribute is mandatory.
minpar
Double
Specifies the minimum value of the curve parameter.
The minpar attribute is optional. When
not specified, it defaults to -1.
Note: When
specified, minpar <
maxpar.
maxpar
Double
Specifies the maximum value of the curve parameter.
The maxpar attribute is optional. When
not specified, it defaults +1.
Note: When
specified, minpar <
maxpar.
Curve specified in a Python function
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=myCurve"
myCurve 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
CURSUB.
type
String
Select from "OPEN" or
"CLOSED".
Note: For a
closed curve, the first and last data points must be
the same.
The type attribute is mandatory.
minpar
Double
Specifies the minimum value of the curve parameter.
The minpar attribute is optional. When
not specified, it defaults to -1.
Note: When specified,
minpar <
maxpar.
maxpar
Double
Specifies the maximum value of the curve parameter.
The maxpar attribute is optional. When
not specified, it defaults +1.
Note: When specified,
minpar <
maxpar.
Optional Attributes - Available to all description methods
id
Integer
Specifies the element identification number. This number
must be unique among all the Surface
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 Surface
object.
This attribute is optional. When not specified, MotionSolve will create a label
for you.
Example
A cycloid is defined in parametric space
as:
x = a * (t - sin(t))
y = a * (1-cos(t))
"t" is the independent parameter. The cycloid is shown in the image below.
Define a parametric curve using a matrix.
The statement defining the cycloid described above
has the following curve attributes:
The Curve is open
The independent parameter t starts
at zero
The independent parameter t ends at
5
The curve points are specified in the
Matrix object
mat23
The corresponding MotionSolve Python specification
is:
# Note, since curve_points=True, MINPAR=-1 and MAXPAR=+1.
# This range in u will accommodate all the data provided in the matrix.
curve1 = Curve (type="OPEN", curve_points=True, matrix=mat23)
Define a parametric curve in a python function.
This example shows how
to specify exactly the same for implementation in a user-defined
subroutine written in
Python:
# The cycloid function saved in file: cycloid.pyfrom msolve import sin, cos
def cycloid (id, par, npar, t, iord, iflag):
a = par[0]
if iord == 0:
x = a * (t - sin(t))
y = a * (1 - cos(t))
z = 0.0elif iord == 1:
x = a * (1 - cos(t))
y = a * sin(t)
z = 0.0else:
x = a * sin(t)
y = a * cos(t)
z = 0.0return [x, y, z]
The
corresponding MotionSolve Python
specification
is: