
ICURVE=id | Specifies the identifier of a CURVE statement from which Adams Solver constructs the first curve. The IRM marker specifies the coordinate system in which the x, y, z coordinates of ICURVE are specified. The curve is attached rigidly to the part containing the IRM marker. The z component of the curve must be zero. As a result, the curve lies in the x-y plane of the IRM marker. |
IDISP=x,y,z | Specifies the initial point of contact on the first curve. Adams Solver (C++) uses a point on the curve nearest to that specified if the point specified is not exactly on the curve. By default, the contact point is specified in the IRM marker coordinate system. You may supply the IICM argument and enter IDISP in IICM marker coordinates if another coordinate system is more convenient. Adams Solver (C++) assembles the system with the contact at the specified point on the curve if you supply IDISP. Adams Solver (C++) assumes the initial contact is at the point on the first curve closest to the second curve at the input configuration if you do not supply IDISP. In this case, Adams Solver (C++) may adjust that contact point to maintain other part or constraint initial conditions. |
IFLOAT=id | Specifies the identifier of a floating marker. Adams Solver (C++) positions the origin of the IFLOAT marker to be at the instantaneous point of contact on the first curve, which is also the global position of the JFLOAT marker on the second curve. Adams Solver (C++) orients the IFLOAT marker so that its x-axis is along the tangent at the instantaneous contact point, its y-axis is along the instantaneous normal, and its z-axis along the resultant binormal. For a CVCV constraint, the binormal of ICURVE is always parallel to the z-axis of the IRM marker. The IFLOAT and IRM markers must lie on the same part. |
IICM=id | Specifies the identifier of a fixed marker defining the coordinate system in which the values for IDISP are defined. The IICM marker must be on the same part as the IRM marker. Default: IRM marker |
IRM=id | Specifies the identifier of a fixed marker on the part containing ICURVE. The IRM marker identifies not only the part that the ICURVE is attached to, but also identifies the coordinate system in which the coordinates of ICURVE are specified. Adams Solver (C++) constructs the ICURVE in the x-y plane of the IRM marker coordinate system. The IFLOAT and IRM markers must lie on the same part. |
IVEL=r | Specifies the magnitude of the initial velocity of the contact point relative to the part containing ICURVE. This is the speed at which the contact point is initially moving tangent to the curve. IVEL is negative if the contact point is moving towards the start of the curve, positive if the contact point is moving toward the end of the curve, or zero if the contact point is stationary on the curve. Adams Solver (C++) gives the contact point the specified initial speed along the first curve if you supply IVEL. Adams Solver (C++) assumes the initial velocity is zero if you do not supply IVEL, but may adjust the velocity to maintain other part or constraint initial conditions. Default: 0 |
JCURVE=id | Specifies the identifier of a CURVE statement from which Adams Solver (C++) constructs the second curve. The JRM marker specifies the coordinate system in which the x, y, z coordinates of JCURVE are specified. The curve is attached rigidly to the part containing the JRM marker. The z component of the CURVE must be zero. As a result, the curve lies in the x-y plane of the JRM marker. |
JDISP=x,y,z | Specifies the initial point of contact on the second curve. Adams Solver (C++) uses a point on the curve nearest to that specified if the point specified is not exactly on the curve. By default, the contact point is specified in the JRM marker coordinate system. You may supply the JICM argument and enter JDISP in JICM marker coordinates if another coordinate system is more convenient. Adams Solver (C++) assembles the system with the contact at the specified point on the curve if you supply JDISP. Adams Solver (C++) assumes the initial contact is at a point on the second curve closest to ICURVE in the input configuration if you do not supply JDISP. In this case, Adams Solver (C++) may adjust that contact point to maintain other part or constraint initial conditions. Default: Closest point to ICURVE in the input configuration |
JFLOAT=id | Specifies the identifier of a floating marker. Adams Solver (C++) positions the origin of the JFLOAT marker at the instantaneous point of contact on the second curve, which is also the position of the IFLOAT marker on the first curve. Adams Solver (C++) orients the JFLOAT marker so that its x-axis is along the tangent at the instantaneous contact point, its y-axis is along the instantaneous normal, and its z-axis along the resultant bi-normal. For a CVCV constraint, the bi-normal of JCURVE is always parallel to the z-axis of the JRM marker. The JFLOAT and JRM markers must lie on the same part. |
JICM=id | Specifies the identifier of a fixed marker defining the coordinate system in which the values for JDISP are defined. The JICM marker must be on the same part as the JRM marker. Default: JRM marker |
JRM=id | Specifies the identifier of a fixed marker on the part containing JCURVE. The JRM marker identifies not only the part the JCURVE is attached to, but also the coordinate system in which the coordinates of JCURVE are specified. Adams Solver (C++) constructs JCURVE in the x-y plane of the JRM marker coordinate system. The JFLOAT and JRM markers must lie on the same part. |
JVEL=r | Specifies the magnitude of the initial velocity of the contact point relative to the part containing JCURVE. This is the speed at which the contact point is initially moving tangent to the curve. JVEL is negative if the contact point is moving towards the start of the curve, positive if the contact point is moving toward the end of the curve, and zero if the contact point is stationary on the curve. Adams Solver (C++) gives the contact point the specified initial speed along the second curve if you supply JVEL. Adams Solver (C++) assumes the initial velocity is zero if you do not supply JVEL, but may adjust that velocity to maintain other part or constraint initial conditions. Default: 0 |

Tip: | More than one CVCV statement can reference the same CURVE statement. You can enter one CURVE statement if the mechanism contains several similar contacts and use it with several CVCV constraints, each with a different IRM and JRM marker. |
Caution: | ■Adams Solver (C++) requires that the curves lie in the same plane, however, this is not enforced by the CVCV statement. The CVCV statement simply enforces that the two curves remain in contact. You must build the model so that the curves are held in the same plane. ■IVEL and JVEL are specified relative to the reference frame of the part containing the IRM or JRM marker, respectively. In other words, IVEL is the speed of the contact point relative to the part containing the first curve. This means if the contact point is not moving relative to part, but the first curve is moving relative to the ground, then IVEL is still nonzero. ■Adams Solver (C++) applies a force to prevent the contact point from moving off the end of an open curve. For this reason, you may want to specify an open curve that extends beyond the range of actual curve travel on both ends of the curve. ■The initial conditions arguments, IDISP, JDISP, IVEL, and JVEL, impose constraints that are active only during an initial conditions analysis. Adams Solver (C++) does not impose these initial conditions during subsequent analyses. ■For a kinematic analysis, the initial conditions are redundant. Do not use the IDISP, JDISP, IVEL, or JVEL arguments on the CVCV statements for systems with zero degrees of freedom. Adams Solver (C++) requires that there be a unique contact point in the vicinity of the IFLOAT and JFLOAT markers during simulation. If there is more than one contact point, Adams Solver may be unable to find the correct contact point or may even jump from one contact point to the next. One way to ensure that contact points are unique is to specify curve shapes that are convex. Figure 8 below depicts two curves, the first is convex and the second nonconvex. Note that for a convex curve, any line segment connecting two arbitrary points on the curve lies in the domain of the curve (that is, it does not intersect the curve). The same is not true for the nonconvex curve. ■It is easy to accidently over-constrain a system using the CVCV constraint. For instance, in a cam-follower configuration, the cam should usually be rotating on a cylindrical joint, not a revolute joint. If the follower is held by a translational joint and the cam by a cylindrical joint, the CVCV constraint between the follower and cam prevents the cam from translating along the axis of rotation (that is, the axis of the cylindrical joint). A revolute joint would add a redundant constraint in that direction. |

