Constraints#
Defines constraint components for multibody dynamics modeling.
In multibody simulation, constraints are mathematical rules that define the allowable motion between bodies. They restrict or limit the relative movement between bodies, typically through joints or other connection elements. Understanding and applying constraints is crucial for accurately modeling and simulating the behavior of multibody systems.
This module provides the infrastructure to define, configure, and validate constraint elements, supporting both built-in and user-defined formulations.
For a complete overview of all the modeling entities and how components integrate,
refer back to the msolve.Model module.
msolve.Forcesfor forcesmsolve.Controlfor control modeling entitiesmsolve.ReferenceDatafor data elementsmsolve.Graphicsfor graphic entities
- class Constraint#
Base class for constraint objects.
The objects derived from
Constraintare:- out_proc#
Type=Bool, Default=False
- virtual#
Defines whether the constraint is virtual or regular.
Type=Bool, Default=False
- class Coupler(**kwds)#
- 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
Joint.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Function
idInt
Auto
Reference -
Joint[3]\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
Routine
Double [3]
[1.0, 0.0, 0.0]
\(\checkmark\)
\(\checkmark\)
Script
EnumStr [3]
\(\checkmark\)
virtualBool
False
See also
For more details, see also Constraint: Coupler.
User Subroutine
The following user subroutine template expects the function signature and return value(s) as shown. Note that this is a placeholder implementation for reference purposes only.
def COUSUB(id, time, par, npar, disp, ndisp, iflag): phi = 0.0 # calculate the scalar output value of the coupler `phi` return phi def COUXX(id, time, par, npar, disp, ndisp, iflag): dfda = 2 * [0.0] # calculate the partial derivative of `phi` with respect to the displacement `disp` return dfda def COUXX2(id, time, par, npar, disp, ndisp, iflag): d2fda2 = 2 * [0.0] # calculate the second partial derivative of `phi` with respect to the displacement `disp` return d2fda2
For more information, see MotionSolve Subroutines.
- function#
Parameters passed to user defined subroutine.
Info
This attribute is mutually exclusive with
scales.Type=Function
- joints#
List of joints used to define constraint relationship.
Type=Reference (Joint) [3], Required, Modifiable
- routine#
The value can be a callable Python function, a Matlab/OML script, or a string that includes the name of a DLL/SO file and the corresponding function name, separated by ‘::’. The order of the user subroutines is fixed and must be ‘cousub’, ‘couxx’ and ‘couxx2’
Type=Routine
- scales#
Scale factors defining the constraint associated with a coupler.
Info
This attribute is mutually exclusive with
function.Type=Double [3], Default=[1.0, 0.0, 0.0], Modifiable, Designable
- script#
Path and name of the script that contains the routine.
Type=Script
- type#
Freedom type used for the respective joints.
Type=EnumStr [3], Modifiable
Permitted values are:
R
T
- class Cvcv(**kwds)#
- Defines a (Curve to Curve) higher pair constraint.
The constraint consists of a 3D
Curvefixed on one body rolling and sliding on a 3DCurvefixed on a second body. The curves are required to have a unique point of contact and a common tangent at that point of contact.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Curve\(\checkmark\)
idInt
Auto
Reference -
Marker\(\checkmark\)
Reference -
Curve\(\checkmark\)
Reference -
Marker\(\checkmark\)
labelStr
nameStr
Bool
False
virtualBool
False
Example
Create a Curve to Curve constraint.#from msolve import * model = Model(output="cvcv") ground = Part(ground=True) global_ref = Marker(body=ground) Units(length="MILLIMETER") Accgrav(kgrav=-9810) body0 = Part(mass=10,ip=[1e3,700,500,0,0,0]) body0.cm = Marker(qp=[229.61,0.0,554.328],zv=[0,0,1], xv=[1,0,0]) body1 = Part(mass=50,ip=[5e3,10e3,5e3]) body1.cm = Marker(qp=[0,0,0],zv=[0,0,1], xv=[1,0,0]) jrev1 = Joint(type="REVOLUTE") jrev1.i = Marker(label="joint 1-marker i",body=ground,qp=[0,0,-300],zv=[0,1,0]) jrev1.j = Marker(label="joint 1-marker j",body=body1,qp=[0,0,-300],zv=[0,1,0]) curve_1 = Curve(closed=True,minpar=-1,maxpar=1, function="user(100)", routine = "ms_csubdll::CURSUB") curve_2 = Curve(closed=True,minpar=-1,maxpar=1, function="user(500)", routine = "ms_csubdll::CURSUB") cvcv = Cvcv(icurve=curve_1, irm=body0.cm, jcurve=curve_2, jrm=body1.cm)
See also
For more details, see also Constraint: CVCV.
- icurve#
Curve that contains the first curve definition.
Type=Reference (Curve), Required
- irm#
Coordinate system in which the icurve points are defined.
Type=Reference (Marker), Required
- jcurve#
Curve that contains the second curve definition.
Type=Reference (Curve), Required
- jrm#
Coordinate system in which the jcurve points are defined.
Type=Reference (Marker), Required
- no_slip#
Specifies if slip or slide is allowed between the two curves.
Type=Bool, Default=False
- class Cvsf(**kwds)#
- Defines a (Curve to Surface) higher pair constraint.
A
Curveon one body slides on aSurfacethat is fixed to a second body. The curve is not allowed to lift off the surface.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Curve\(\checkmark\)
\(\checkmark\)
idInt
Auto
Double [3]
[0, 0, 0]
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
Double [3]
[0, 0, 0]
\(\checkmark\)
Reference -
Marker\(\checkmark\)
labelStr
nameStr
Bool
False
Reference -
Surface\(\checkmark\)
\(\checkmark\)
virtualBool
False
Example
Create a Curve to Surface constraint.#from msolve import * model = Model(output="cvsf") ground = Part(ground=True) global_frame = Marker(part=ground) Units(length="MILLIMETER") Accgrav(kgrav=-9810) part1 = Part (mass=1, ip=[1e3,1e3,1e3], cm=Marker(qp=[100,0,200], zv=[0,0,1])) part2 = Part (mass=1, ip=[1e3,1e3,1e3], cm=Marker()) cv = Curve(closed = True, minpar = -1, maxpar = 1, function = "USER(100)", routine = "ms_csubdll::CURSUB") sf = Surface(uclosed = True, vclosed = True, minpar = [-1,-1], maxpar = [1,1], function = "USER(2,500)", routine = "ms_csubdll::SURSUB") cvsf = Cvsf(curve=cv,irm=part2.cm,surface=sf,jrm=part1.cm)
See also
For more details, see also Constraint: CVSF.
- curve#
Reference to an existing Curve in the model.
Type=Reference (Curve), Required, Modifiable
- idisp#
A guess for the initial contact point on the curve.
Type=Double [3], Default=[0, 0, 0], Designable
- irm#
Coordinate system for the definition of the curve.
Type=Reference (Marker), Required, Modifiable
- jdisp#
A guess for the initial contact point on the surface.
Type=Double [3], Default=[0, 0, 0], Designable
- jrm#
Coordinate system for the definition of the surface.
Type=Reference (Marker), Required
- no_slip#
Specifies if slip or slide is allowed between the curve and the surface.
Type=Bool, Default=False
- surface#
Reference to an existing Surface in the model.
Type=Reference (Surface), Required, Modifiable
- class Gcon(**kwds)#
- Specifies 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. For example, the constraint that a wheel rolls without slipping is a non-holonomic constraint that can be modeled using the GCON element.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Function
\(\checkmark\)
idInt
Auto
labelStr
nameStr
Routine
Script
virtualBool
False
Example
Create a general constraint.#from msolve import * model = Model(output="gcon") Units(length="MILLIMETER") ground = Part(ground=True) global_ref = Marker(body=ground) wheel = Part(mass=1.5, ip=[2.5e3, 2.5e3, 5e3]) wheel.radius = 80 wheel.cm = Marker(qp=[0, wheel.radius, 0], zv=[0,0,1], xv=[1,0,0]) gcon = Gcon(function=f"VX({wheel.cm.id})+{wheel.radius}*WZ({wheel.cm.id})")
See also
For more details, see also Constraint: General.
User Subroutine
The following user subroutine template expects the function signature and return value(s) as shown. Note that this is a placeholder implementation for reference purposes only.
def GCOSUB(id, time, par, npar, dflag, iflag): # calculate the value of the constraint value = 0.0 return value
For more information, see MotionSolve Subroutines.
- function#
Parameters passed to user defined subroutine or a legal MotionSolve expression that defines the general constraint.
Type=Function, Required
- routine#
The value can be a callable Python function, a Matlab/OML script, or a string that includes the name of a DLL/SO file and the corresponding function name, separated by ‘::’.
Type=Routine
- script#
Path and name of the script that contains the routine.
Type=Script
- class Gear(**kwds)#
- Defines a gear constraint between two bodies.
The gear is modeled as an algebraic relationship between input and output displacements between
Joint. The inputs and outputs may be either rotational or translational. This allows spur, helical, bevel, and rack-and-pinion gear sets to be modeled.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
Reference -
Joint[2]\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
virtualBool
False
See also
For more details, see also Constraint: Gear.
- cv#
Marker whose origin defines the contact point.
Type=Reference (Marker), Required, Modifiable
- joints#
Two joints coupled by the gear constraint.
Type=Reference (Joint) [2], Required, Modifiable
- class Joint(**kwds)#
- Creates an idealized connector between two bodies.
Joint defines a set of lower pair constraints. Physically, the joint consists of two mating surfaces that allow relative translational and/or rotational movement in certain specific directions only. The surfaces are abstracted away, and the relationships are always expressed as a set of algebraic constraint equations between points and directions on two bodies.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
Double [2]
\(\checkmark\)
Double [2]
\(\checkmark\)
Double [2]
\(\checkmark\)
idInt
Auto
Reference -
Marker\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
Double
0.0
\(\checkmark\)
\(\checkmark\)
Double
0.0
\(\checkmark\)
\(\checkmark\)
Enum
\(\checkmark\)
SPHERICAL
virtualBool
False
Example
Create a Joint.#from msolve import * model = Model(output="joint") Units(system="MKS") ground = Part(ground=True) global_ref = Marker(body=ground) body = Part(mass=5.0, ip=[1]*3, cm=Marker(qp=[0,0,0])) sph_joint = Joint(type="SPHERICAL", i=body.cm, j=global_ref)
See also
For more details, see also Constraint: Joint.
- i#
Reference
Markerthat defines the connection on the first body.Type=Reference (Marker), Required, Modifiable
- ic#
Initial velocity and displacement.
Info
This attribute can only be used when type = TRANSLATIONAL, REVOLUTE.
Type=Double [2], Designable
- icrot#
Initial rotational velocity and displacement.
Info
This attribute can only be used when type = CYLINDRICAL.
Type=Double [2], Designable
- ictran#
Initial translational velocity and displacement.
Info
This attribute can only be used when type = CYLINDRICAL.
Type=Double [2], Designable
- j#
Reference
Markerthat defines the connection on the second body.Type=Reference (Marker), Required, Modifiable
- pd#
Pitch diameter of the pinion gear of a rack and pinion gear Joint.
Info
This attribute can only be used when type = RACKPIN.
Type=Double, Default=0.0, Modifiable, Designable
- pitch#
Pitch of a screw Joint.
Info
This attribute can only be used when type = SCREW.
Type=Double, Default=0.0, Modifiable, Designable
- class Jprim(**kwds)#
- Removes 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.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
Reference -
Marker\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
Enum
\(\checkmark\)
ATPOINT
virtualBool
False
Example
Create a primitive Joint.#from msolve import * model = Model(output="jprim") Units(system="MKS") ground = Part(ground=True) global_ref = Marker(body=ground) body = Part(mass=5.0, ip=[1]*3, cm=Marker(qp=[0,0,0])) jprim = Jprim(type="ATPOINT", i=body.cm, j=global_ref)
See also
For more details, see also Constraint: Primitive.
- i#
Reference
Markerthat defines the connection on the first body.Type=Reference (Marker), Required, Modifiable
- class Mate(**kwds)#
- Specifies general mating constraints between geometric primitives based on
distance, tangency, and coincidence relations. The geometric primitives can be point, line, plane, sphere, cylinder or cone.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Double
0.0
\(\checkmark\)
\(\checkmark\)
Double
0.0
\(\checkmark\)
\(\checkmark\)
Reference -
Marker\(\checkmark\)
idInt
Auto
Double
0.0
\(\checkmark\)
\(\checkmark\)
Reference -
Marker\(\checkmark\)
Double
0.0
\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
Double
0.0
\(\checkmark\)
\(\checkmark\)
Enum
virtualBool
False
See also
For more details, see also Constraint: Mate.
- dist#
Distance between the two parts constrained.
Type=Double, Default=0.0, Modifiable, Designable
- height#
Height of the geometric primitive.
Type=Double, Default=0.0, Modifiable, Designable
- i#
Marker that defines the connection on the first body.
Type=Reference (Marker), Modifiable
- iradius#
Radius of the i geometric primitive.
Type=Double, Default=0.0, Modifiable, Designable
- j#
Marker that defines the connection on the second body.
Type=Reference (Marker), Modifiable
- jradius#
Radius of the j geometric primitive.
Type=Double, Default=0.0, Modifiable, Designable
- radius#
Radius of the circle/sphere/cone.
Type=Double, Default=0.0, Modifiable, Designable
- type#
Type of mate between
iandjmarkers.Type=Enum
Permitted values are:
COI_LIN_CYL
COI_LIN_LIN
COI_LIN_PLA
COI_POI_CON
COI_POI_CYL
COI_POI_LIN
COI_POI_POI
COI_POI_SPH
DIS_CYL_CYL
DIS_LIN_CYL
DIS_LIN_LIN
DIS_LIN_PLA
DIS_PLA_CON
DIS_PLA_CYL
DIS_POI_CYL
DIS_POI_LIN
DIS_POI_POI
DIS_POI_SPH
DIS_SPH_CON
DIS_SPH_CYL
DIS_SPH_LIN
DIS_SPH_PLA
DIS_SPH_SPH
TAN_CYL_CYL
TAN_LIN_CYL
TAN_PLA_CON
TAN_PLA_CYL
TAN_SPH_CON
TAN_SPH_CYL
TAN_SPH_LIN
TAN_SPH_PLA
TAN_SPH_SPH
- class Motion(**kwds)#
- Specifies a system degree of freedom as an explicit function of time.
The degree of freedom is specified as either:
A
Jointand a type of motion (translational or rotational)A relative translation or rotation component between two markers
When the input is specified on a joint, only three types of joints are valid:
Revolute joints (rotational motion only)
Translational joints (translational motion only)
Cylindrical joints (either rotational or translational motion)
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Enum
\(\checkmark\)
Enum
DISPLACEMENT
\(\checkmark\)
Function
\(\checkmark\)
Reference -
Marker\(\checkmark\)
Double
\(\checkmark\)
\(\checkmark\)
Double
\(\checkmark\)
\(\checkmark\)
idInt
Auto
Int
3
Reference -
Marker\(\checkmark\)
Reference -
Joint\(\checkmark\)
Enum
TRANSLATION
\(\checkmark\)
labelStr
nameStr
Reference -
PinputReference -
PtcvAlias
Routine
Script
virtualBool
False
Example
Impose Motion on a Joint and between Markers.#from msolve import * model = Model(output="motion") Units(system="MKS") ground = Part(ground=True) global_ref = Marker(part=ground) part_1 = Part(mass=1, ip=[1]*3, cm=Marker()) part_2 = Part(mass=1, ip=[1]*3, cm=Marker()) cyl_joint = Joint(type="CYLINDRICAL", i=part_1.cm, j=global_ref) joint_motion = Motion(label = "Joint Motion", jtype = "TRANSLATION", joint = cyl_joint, dtype = "VELOCITY", icdisp = 0.0, function = "10*SIN(20*TIME)" ) marker_motion = Motion(label = "Marker Motion", i = part_2.cm, j = global_ref, direction = "X", function = "10*SIN(20*TIME)" )
See also
For more details, see also Motion: Joint Based, Motion: Marker Based.
User Subroutine
The following user subroutine template expects the function signature and return value(s) as shown. Note that this is a placeholder implementation for reference purposes only.
def MOTSUB(id, time, par, npar, iord, iflag): # calcualate the value of the motion value = 0.0 return value
For more information, see MotionSolve Subroutines.
- direction#
Direction of marker-marker motion.
Type=Enum, Modifiable
Permitted values are:
B1
B2
B3
X
Y
Z
- dtype#
Motion function type.
Type=Enum, Default=DISPLACEMENT, Modifiable
Permitted values are:
ACCELERATION
DISPLACEMENT
PLANT_INPUT
VELOCITY
- function#
Parameters passed to user defined subroutine or a legal MotionSolve expression that defines the motion value.
Info
This attribute is mutually exclusive with
pinput.Type=Function, Modifiable
- i#
Marker at which motion is applied, required for marker motion.
Type=Reference (Marker), Modifiable
- icdisp#
Displacement initial condition.
Type=Double, Modifiable, Designable
- icvel#
Velocity initial condition for ACCELERATION motion.
Type=Double, Modifiable, Designable
- index#
Index that defines the simultaneous enforcement of constraints at the position, velocity, and acceleration levels when
pinputis specified.Type=Int, Default=3
- j#
Marker at which motion is applied, required for marker motion.
Type=Reference (Marker), Modifiable
- joint#
Joint at which motion is applied.
Type=Reference (Joint), Modifiable
- jtype#
Select the motion type for cylindrical joint.
Type=Enum, Default=TRANSLATION, Modifiable
Permitted values are:
ROTATION
TRANSLATION
- pinput#
Plant Input at which motion is applied.
Info
This attribute is mutually exclusive with
function.Type=Reference (Pinput)
- ptcv#
Ptcv joint at which motion is applied.
Type=Reference (Ptcv)
- ptcv_joint#
Alias to ptcv.
Type=Alias
- routine#
The value can be a callable Python function, a Matlab/OML script, or a string that includes the name of a DLL/SO file and the corresponding function name, separated by ‘::’.
Type=Routine
- script#
Path and name of the script that contains the routine.
Type=Script
- class Ptcv(**kwds)#
- Defines a (Point to Curve) higher pair constraint.
A fixed point on one body slides on a
Curvethat is fixed on a second body. The point is not allowed to lift off the curve.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
Curve\(\checkmark\)
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
labelStr
nameStr
Reference -
Marker\(\checkmark\)
\(\checkmark\)
virtualBool
False
Enum
UNCONSTRAINED
See also
For more details, see also Constraint: PTCV.
- curve#
Curve that is fixed to the second body.
Type=Reference (Curve), Required, Modifiable
- i#
Fixed marker that defines the connection on the first body.
Type=Reference (Marker), Required, Modifiable
- rm#
Coordinate system in which the curve points are defined.
Type=Reference (Marker), Required, Modifiable
- zaxis#
Directional constraint imposed on the Z axis of the i marker.
Type=Enum, Default=UNCONSTRAINED
Permitted values are:
PARALLEL
PERPENDICULAR
UNCONSTRAINED
- class Ptdcv(**kwds)#
- Defines a (Point to Deformable Curve) higher pair constraint.
A point is constrained to only move by sliding along a
DeformableCurve. The curve can deform. As the markers move in space, the curve is calculated at every time step using CUBIC spline interpolation through the marker origins. This constraint is useful for simulating connection between a point on a body and a slender, flexible element such as a cable.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
DeformableCurve\(\checkmark\)
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
labelStr
nameStr
virtualBool
False
See also
For more details, see also Constraint: PTdCV.
- dcurve#
Reference to a
DeformableCurvethat defines the constraint.Type=Reference (DeformableCurve), Required, Modifiable
- class Ptdsf(**kwds)#
- Defines a (Point to Deformable Surface) higher pair constraint.
This element constrains a fixed point on a body to slide along a
DeformableSurfacethat passes through the origins of a specified set of markers. These markers may belong to different bodies. As the markers move in space, the surface is calculated at every time step using CUBIC spline interpolation through the marker origins. Hence, the surface deforms as the markers move about.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Reference -
DeformableSurface\(\checkmark\)
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
labelStr
nameStr
virtualBool
False
See also
For more details, see also Constraint: PTdSF.
- dsurface#
Reference to a
DeformableSurfacethat defines the constraint.Type=Reference (DeformableSurface), Required, Modifiable
- class Ptsf(**kwds)#
- Defines a (Point to Surface) higher pair constraint.
A fixed point on one body slides on a
Surfacethat is fixed on a second body. The point is not allowed to lift off the surface.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
Double [3]
[0, 0, 0]
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
idInt
Auto
labelStr
nameStr
Reference -
Marker\(\checkmark\)
\(\checkmark\)
Reference -
Surface\(\checkmark\)
\(\checkmark\)
virtualBool
False
Bool
False
See also
For more details, see also Constraint: PTSF.
- disp#
A guess for the initial contact point on the surface.
Type=Double [3], Default=[0, 0, 0], Designable
- i#
Fixed marker that defines the connection on the first body.
Type=Reference (Marker), Required, Modifiable
- rm#
Coordinate system in which the surface points are defined.
Type=Reference (Marker), Required, Modifiable
- surface#
Surface that is fixed to the second body.
Type=Reference (Surface), Required, Modifiable
- zaxis_perpendicular#
Imposes perpendicularity between marker I zaxis and tangent plane.
Type=Bool, Default=False
- class Sfsf(**kwds)#
- Defines a (Surface to Surface) higher pair constraint.
The constraint consists of a
Surfaceon one body rolling and sliding on a surface on a second body. The surfaces are required to have a unique contact point.
Name
Type
Required
Default
Modifiable
Designable
activeBool
True
\(\checkmark\)
idInt
Auto
Double [3]
[0, 0, 0]
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
Reference -
Surface\(\checkmark\)
\(\checkmark\)
Double [3]
[0, 0, 0]
\(\checkmark\)
Reference -
Marker\(\checkmark\)
\(\checkmark\)
Reference -
Surface\(\checkmark\)
\(\checkmark\)
labelStr
nameStr
Bool
False
virtualBool
False
See also
For more details, see also Constraint: SFSF.
- idisp#
Location of the contact point on i Surface.
Type=Double [3], Default=[0, 0, 0], Designable
- irm#
Coordinate system in which the i Surface is defined.
Type=Reference (Marker), Required, Modifiable
- isurface#
Reference to an existing Surface in the model.
Type=Reference (Surface), Required, Modifiable
- jdisp#
Location of the contact point on j Surface.
Type=Double [3], Default=[0, 0, 0], Designable
- jrm#
Coordinate system in which the j Surface is defined.
Type=Reference (Marker), Required, Modifiable
- jsurface#
Reference to an existing Surface in the model.
Type=Reference (Surface), Required, Modifiable
- no_slip#
Specifies if slip or slide is allowed between the two surfaces.
Type=Bool, Default=False