# Cvcv

Model ElementCvcv defines higher pair constraint.

Cvcv

## Description

The constraint consists of a 3D curve fixed on one body rolling and sliding on a 3D curve fixed on a second body. The curves are required to have a unique point of contact and a common tangent at that point of contact. Moreover the curves are required to be co-planar, i.e. they must exist in parallel planes.

## Attribute Summary

Name Property Modifiable by command? Designable?
id Int ()
label Str ()
icurve Reference ("Curve")   Yes
irm Reference ("Marker")   Yes
idisp Double ([0,0,0], count=3)   FD Only
ivel Double ()   FD Only
jcurve Reference ("Curve")   Yes
jrm Reference ("Marker")   Yes
jdisp Double ([0,0,0], count=3)   FD Only
jvel Double ()   FD Only
no_slip Bool ()
active Bool () Yes

## Usage

Cvcv (icurve=objCurve, irm=objMarker, jcurve=objCurve, jrm=objMarker, optional_attributes)

## Attributes

icurve
Reference to an existing Curve object
Specifies the first curve in the CVCV object.
This attribute is mandatory.
irm
Reference to an existing Marker object
Specifies a fixed marker that defines the coordinate system in which the icurve points are defined. It also implicitly defines the body on which the curve is "etched". The curve moves with the body.
This attribute is mandatory.
jcurve
Reference to an existing Marker object
Specifies the second curve in the CVCV object.
This attribute is mandatory.
jrm
Reference to an existing Marker object
Specifies a fixed marker that defines the coordinate system in which the jcurve points are defined. It also implicitly defines the body on which the curve is "etched". The curve moves with the body.
This attribute is mandatory.
Note: irmjrm
id
Integer
Specifies the element identification number. This number must be unique among all the CVCV 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 CVCV object.
This attribute is optional. When not specified, MotionSolve will create a label for you.
idisp
List of 3 doubles
Specifies the coordinates of initial point of contact on the first curve with respect to irm. An initial guess for the point of contact of the two curves is usually helpful even though MotionSolve does an initial search to exactly locate the contact point.
This attribute is optional.
ivel
Double
Specifies the sliding velocity of the contact point. An observer attached to the origin of IRM measures this velocity. The default value for IVEL is 0.0. When omitted, MotionSolve may change this value to satisfy system constraints.
This attribute is optional.
jdisp
List of 3 doubles
Specifies the coordinates of initial point of contact on the second curve with respect to jrm. An initial guess for the point of contact of the two curves is usually helpful even though MotionSolve does an initial search to exactly locate the contact point.
This attribute is optional.
jvel
Double
Specifies the initial sliding velocity of the contact point. An observer attached to the origin of JRM measures this velocity. The default value for JVEL is 0.0. When omitted, MotionSolve may change this value to satisfy system constraints.
This attribute is optional.
no_slip
Indicates if slipping is allowed along the curve
active
Bool
Select one from TRUE or FALSE.
• TRUE indicates that the element is active in the model and it affects the behavior of the system
• FALSE indicates that the element is inactive in the model and it does not affect the behavior of the system. It is almost as if the entity was removed from the model, of course with the exception that can be turned "ON" when desirable.
The attribute active is optional. When not specified, active defaults to TRUE.

## Example

1. A CVCV defined with a minimal amount of input.
m1 = Marker (label="m1", body=p1, qp=[1.414, 3.142, +1.618], zp=[1.327, 3.142, 2.545])
m2 = Marker (label="m2", body=p2, qp=[5.577, 3.142, -8.531], zp=[2.828, 6.284, 3.236])
c1 = Curve (closed=True, curve_points=True, matrix=mat1)
c2 = Curve (closed=True, curve_points=True, matrix=mat2)
cvcv = Cvcv (icurve=c1, irm=m1, jcurve=c2, jrm=m2)
2. A CVCV with an initial contact point defined.
m1  = Marker (label="m1", body=p1, qp=[1.414, 3.142, +1.618], zp=[1.327, 3.142, 2.545],rm=0)
m2  = Marker (label="m2", body=p2, qp=[5.577, 3.142, -8.531], zp=[2.828, 6.284, 3.236],rm=0)
c1  = Curve (closed=True, curve_points=True, matrix=mat1)
c2  = Curve (closed=True, curve_points=True, matrix=mat2)
cp1 = Point (11.13, -8.45, 6.67)
cp2 = Point (7.97, 3.92, -10.80)
cvcv = Cvcv (icurve=c1, irm=m1, idisp=cp1, jcurve=c2, jrm=m2, jdisp=cp2)