Overview of Mechanism Design The Mechanism Design task lets you simulate and analyze the mechanical behavior of an assembly. Understanding Mechanisms A mechanism is two or more rigid bodies arranged so that one rigid body is constrained to move relative to another. You can create constraints, such as joints, gears, and couplers, to control the motion between the rigid bodies. Once you've defined constraints, you can apply motion definitions to them. You can also define other applied loads on the entire mechanism, such as forces or gravity. You can further define the relationships in your mechanism with external loads, gears, couplers, and spring-dampers to create a robust simulation of an actual mechanism. Solving Mechanisms Mechanism Design includes an internal solver that lets you perform kinematic analyses on your mechanism. A kinematic analysis simulates the motion of a mechanical system as a function of time and determines the range of values for displacement, velocity, and acceleration of rigid bodies. It also determines the reaction forces on constraints. However, it does not solve for mechanisms that have any degrees of freedom, and won't generate motions that result from initiating forces. Such mechanisms require dynamic analyses. With a special license (the product is called Motion Simulation), you can also perform dynamic analyses within I-DEAS, using the internal ADAMS/Solver. Or, you can define the mechanism within Mechanism Design and then export the data to an external ADAMS/Solver. Once you've solved a mechanism (either kinematically or dynamically), you can post process the results of the solve. For example, you can animate the mechanism or graph results data. See Also Solving a Mechanism Exporting and Importing Mechanism Data General Process for Creating a Mechanism Follow this basic approach for creating a mechanism. Pre-Processing Define and constrain the mechanism geometry. (A) create assembly hierarchy; (B) define rigid bodies if necessary; (C) create constraints; (D) create the ground; (E) verify the degrees of freedom Create loads, such as forces and motions. (F) create motions; (G) create additional loads - optional; (H) create spring dampers - optional Processing Define parameters for the solve and solve the mechanism. (A) create ADAMS requests if you want additional results; (B) define the solve parameters; (C) solve the mechanism Post-Processing You can perform any of the post-processing functions at any time after solving the mechanism. (A) graph the functions; (B) animate the mechanism; (C) initiate a motion analysis; (D) display configurations; (E) interference check For more information about specific icons, use Help, On Context. Understanding Rigid Bodies A rigid body is a part (or subassembly) whose shape (or the orientation of its instances) is fixed and remains unaltered when forces are applied to it. A mechanism consists of two or more rigid bodies, with one rigid body constrained to move relative to another. Joints, gears, and couplers control the motion between rigid bodies. The behavior of a mechanism results from the constraints and loads that you apply to rigid bodies. In this figure: A = input motion B = output motion C = grounded rigid body. Each rigid body has six degrees of freedom (DOF): translation in each of the x, y, and z directions rotations about the x, y, and z axes Every constraint, such as a joint, that you create on a rigid body removes between one and six DOF, depending upon the type of constraint. Creating Rigid Bodies Implicitly or Explicitly Whenever you create a constraint (joint, marker, gear, coupler, or spring-damper), the software implicitly creates rigid bodies for you. For example, if you define a joint, the software creates rigid bodies on the two instances constrained by that joint. Though you usually don't create a rigid body explicitly, you can use Create Rigid Body to define an instance of a part or subassembly as a rigid body. Locate the icon. Explicitly created rigid bodies can be useful. For example, you can isolate a subassembly of your mechanism by making it a rigid body. This essentially locks the subassembly's parts together so that you can focus your attention elsewhere in the mechanism. Note: You can't define an instance as a rigid body if a parent or child of that instance is already defined as a rigid body. Creating Joints The icons on the Constraints subpanel let you define joints and other types of constraints. Locate the icon. Mechanism Design lets you create different kinds of joints, including translational, planar, and universal joints. General Joints lets you define special rackpin and screw joints. Mechanism Design also lets you define multi-joints, such as gears and couplers, as well as cam constraints. A joint connects two mechanical components. All joints require two rigid bodies and a marker attached to each one. Markers are coordinate systems that represent the location and axes of the joints in your mechanism. Note: Unless you're creating a mechanism that requires gears, couplers, or complex constraints, you'll probably never have to explicitly define rigid bodies or their markers. When you create a joint by picking two instances, the software automatically creates them for you. General Process for Creating Joints These steps describe the general process for creating most types of joints: 1. Before you create a joint, orient the two instances with which you want to create the joint. 1. Pick the joint creation icon, such as Revolute, from the Constraints subpanel. 3. Pick the two instances you want to use to create the joint. You can also use these MB3 options: Hierarchy opens the Hierarchy form where you can pick assembly instances. Marker picks markers you've already created on an instance. 4. Pick a point to locate the joint origin. 5. Pick vectors to define the joint's axes (when necessary). See Also Creating Markers Understanding Degrees of Freedom Understanding Degrees of Freedom A degree of freedom is an unconstrained displacement function. Degrees of freedom (DOF) indicate how an entity can move relative to another entity. Every rigid body in a mechanism has six DOF: translations in the X, Y, or Z direction rotations about the X, Y, or Z axis In a mechanical system simulation, connecting two rigid bodies by a joint limits the bodies' motion to the DOF allowed by the joint. Each kind of joint constrains different degrees of freedom to allow different types of motion. Each freedom is mathematically represented as a joint variable. Thus, when you define all of the joint variables in a mechanism, the position of every rigid body is also defined. You can plot these joint variables after you solve for the motion of the mechanism. Degrees of Freedom for Different Joint Types Joints remove between one and six DOF. This table summarizes the degrees of freedom for each joint type. Joint Translational Degrees of Rotational Degrees of Freedom Total Degrees of Freedom Type Freedom Constrained Constrained Constrained Revolute 3 2 5 Translatio 2 3 5 nal Cylindric 2 2 4 al Spherical 3 0 3 Universal 3 1 4 Planar 1 2 3 Fixed 3 3 6 Determining the DOF for a Mechanism Use Verify Mechanism to have the software automatically calculate the DOF for a mechanism. Locate the icon. You can also use the Gruebler Count to manually determine the DOF in a mechanism: DOF=[6*(number of rigid bodies -1)] - (number of active constraints) Note: Because the grounded rigid body doesn't contribute any degrees of freedom to the model, one rigid body is subtracted from the total number of rigid bodies. Creating Markers Markers are coordinate systems that represent the location and axes of the joints in your mechanism. You can also use markers to: apply forces identify points for measuring displacement, velocity, and acceleration create a convenient center of rotation or a translational axis when you have irregularly shaped geometry identify connection points for spring-dampers or contact points for gears Each marker has an origin and an XYZ orientation with respect to its rigid body. You'll never see the markers for a joint, unless you turn off joint visibility. Instead, you'll see a joint symbol, which displays the action vector for the joint. The software creates markers automatically when you create joints. However, you can also use Create Marker to define markers. Locate the icon. Note: If you create a marker on an instance that isn't already defined as a rigid body, the software rigidifies that instance. Defining the I and J Markers For each marker pair at a joint, the software always defines one as the "J" marker and the other as the "I" marker. If you pick markers to define the joint, the first marker that you define becomes J and the second becomes I. If you pick instances in an assembly to define the joint, the J marker is placed on the first instance and the I marker is placed on the second instance. In solution results for motions, the body identified by the I marker moves with respect to the corresponding J marker. Understanding Revolute Joints Use Revolute Joint on the Constraints subpanel to define a revolute joint. Locate the icon. A revolute joint allows one DOF: the angle of rotation (in degrees) about the Z axes of the two rigid body markers associated with the joint. Thus, its joint variable is the angle between the X axes of the two markers. You can create this joint by selecting two (previously created) markers instead of two rigid bodies. However, you must ensure that the Z axes of both markers are aligned and that the origins of both markers are coincident. If you create a joint by picking two instances, the software creates and aligns the markers automatically. Note: If the axes of the markers aren't all collinear, the initial value of the joint variable will be the angle between the X axes. Understanding Translational Joints Translational Joint on the Constraints subpanel lets you define translational joints. Locate the icon. A translational joint allows one DOF: the translation along Z axes of the two rigid body markers associated with the joint. Its joint variable is the distance between the origin of the marker on the first rigid body and the origin of the marker on the second rigid body, If the markers aren't coincident, the initial value of the joint variable is equal to the distance between the origins (i.e., the position of the I rigid body with respect to the J rigid body). You can create this joint by selecting two previously created markers instead of two rigid bodies. However, you must ensure that the X and Y axes of both markers are aligned, and that the Z axes are collinear. If you create a joint by picking two instances, the markers will be created and aligned automatically. Understanding Cylindrical Joints Cylindrical Joint on the Constraints subpanel lets you define cylindrical joints. Locate the icon. A cylindrical joint allows two DOF: one translational and one rotational about the Z axes of the markers associated with the joint. Thus, the joint variables represent: the distance between the origin of the two markers along their z-axes the angle between the x-axes of the markers If the axes of the marker aren't coincident, the initial values of the joint variables are equal to the distance between the origins and the angle between the X axes. You can create this joint by selecting two (previously created) markers instead of two rigid bodies. However, you must align the Z axes of the markers and make them collinear. If you create a joint by picking two instances, the software creates and aligns the markers automatically. Understanding Spherical Joints Spherical Joint on the Constraints subpanel lets you create spherical joints. Locate the icon. A spherical joint allows three rotational DOF: the rotations about the X, Y, and Z axes of the markers associated with the joint. Thus, the variables are the rotations between each pair of marker axes: X 1 X2, Y1 Y2 and Z1 Z2. You can't apply a motion to this joint, but it accurately transfers the motion of one rigid body to another. The initial values of the joint variables are equal to the angles between each pair of axes. Avoid configurations that allow the joint variable Z to approach 0° or 180°. This causes the spin-axes of joint variables X and Y to become collinear, which may cause mathematical problems. You can create this joint by selecting two (previously created) markers instead of two rigid bodies. However, you must ensure that their origins are coincident and that their Z axes aren't aligned. If you create a joint by picking two instances, the software automatically creates markers which have coincident origins with the second marker rotated 90 degrees about its own Y axis to the first marker. Understanding Planar Joints Planar Joint on the Constraints subpanel lets you define planar joints. Locate the icon. A planar joint allows three DOF: two translations (one along the X axes and one along the Y axes) and one rotation about the Z axes of the markers associated with a joint. The joint variables represent: (X), the distance between the origin of the two markers along their X axes (Y), the distance between the origin of the two markers along their Y axes () the angle about Z axes of the markers You can't apply a motion to this joint, but it accurately transfers the motion of one rigid body to another. When you create a planar joint, the first part marker's Z axis is constrained so that it remains parallel to and co-directed with the second part marker's Z axis. Planar joints don't allow linear displacement along the Z axis. Think of a planar joint as a magnet on an iron plate. The magnet can move along the X and Y axes and can rotate about the Z axis. However, it can't move off the plate or rotate into the plate. Thus, this joint allows the XY plane of one part to slide along the XY plane of another part. To create this joint, you can select two (previously created) markers instead of two rigid bodies. However, you must create the markers so the XY planes of the two markers are coplanar. If you pick two instances to create a joint, the markers are created and aligned automatically. Understanding General Joints General Joint on the Constraints subpanel lets you create rackpin or screw type joints in your model. Locate the icon. A general joint defines a connection between the markers of two rigid bodies. The DOF constraints are determined by the user-suppplied keyword. Currently, only "SCREW" and "RACKPIN" are acceptable keywords. You can't apply a motion to this joint, but it accurately transfers the motion of one rigid body to another. A general joint has no joint variable and isn't verifiable. Use UPPERCASE KEYWORDS, or the translator may not recognize the keyword as the intended joint. Using the General Joint to Create a Rackpin Joint A rackpin joint allows one DOF: the translation of one rigid body's marker relative to the rotation of another rigid body's marker. Thus, the pinion's rotation is related to the translation of the rack. 1. 2. 2. 4. Orient the two instances you want to use to create the joint. Orient the two instances you want to use to create the joint. Create a revolute joint between the rod and the pinion. Pick the rod first, then the pinion. Create a translational joint between the rod and the rack. Pick the rod first, then the rack. 5. Create a marker on the rack, with its origin at the pitch-tangency point between the rack and the pinion. Ensure that the z-axis of the marker is aligned with the direction of the rack's motion and that the x-axis of the marker is aligned with the rotational axis of the pinion. 6. Create a second marker on the pinion, with its origin at the center of pinion rotation. Align the zaxis of this marker with the pinion's rotational axis. Ensure that the z-axis of this marker and xaxis of the rack's marker are aligned and point in the same direction. Note: The joint variable is based on the right-hand rule. Thus, flipping the pinion's z-axis (and corresponding x-axis of the rack's marker) reverses the sense of this joint variable. 6. Pick General Joint 7. Pick the markers that you created on the rack and pinion by selecting Markers (MB3). Pick the marker that you created at pitch-tangency on the rack first. Pick the marker that you created at the rotational axis on the pinion second. Note: Don't select instances to define the joint. 8. Enter the keyword "RACKPIN." 9. Press Return for the integer information. 10. Enter the pinion diameter for the real information. The sign of the pitch diameter (positive or negative) will cause the pinion to rotate clockwise or counterclockwise, depending upon the marker's orientation. Using the General Joint to Create a Screw Joint A screw joint allows two DOF: the translation of one rigid body's marker relative to the rotation of another rigid body's marker. Thus, the nut translates as the screw rotates. In this picture, the rigid body markers are shown only for clarity. They're not normally visible. 1. Orient the two instances you want to use to create the joint. 2. Create a marker and position it at the center of the nut with its z-axis along the rotational axis of the screw. 3. Create and position a second marker at a convenient point along the screw's axis. The z-axes of both markers must be parallel. 4. Enter the keyword "SCREW." 5. Press Return for the integer information. 6. Enter the screw pitch (the Z translation for each revolution) for the real information. Enter a positive pitch to create a right-hand thread and a negative pitch to create a left-hand thread. For this kind of joint to work properly, you also need to create a rotational joint between the screw and a rigid body (the base, for example), and a translational joint between the nut and the base. Understanding Universal Joints Universal Joint on the Constraints subpanel lets you create universal joints between entities in your model. Locate the icon. A universal joint allows two DOF: the two angles of rotation with respect to the two collinear X axes of the markers associated with the joint. Thus, the joint variables represent: the angle between the X axes of the markers the angle between the Y axes of the markers. In this figure, (A) is the pivot axis, and (B) is the spin axis. You can't apply a motion to this joint, but it accurately transfers the motion of one rigid body to another. You can create this joint by selecting two (previously created) markers instead of two rigid bodies. However, you must ensure that the markers' Z axes are coincident, perpendicular to each other, and normal to the rigid body's axis of rotation or centerlines. If you create a joint by picking two instances, the software automatically creates and aligns the markers. Creating Couplers Use Coupler to create coupler constraints between revolute, translational, or cylindrical joints. Locate the icon. Couplers are useful if your mechanism uses belts and pulleys or chains and sprockets to transfer motion and energy. Couplers are simple representations of mathematical belts and chains in your mechanism. (High-fidelity models of belts and chains require the definition of many rigid bodies and joints, along with the use of the dynamics solver.) Couplers relate the motion of joints by the following equation: J1S1 + J2S2 = 0.0 where J1 and J2 are the joint variables and S1 and S2 are the scale factors. One coupler can relate the motion of only two joints. However, more than one coupler can emanate from the same joint (pulley or sprocket). Use Manage Multi-Joints to rename, delete or get information on couplers. Creating Gears Gear on the Constraints subpanel lets you create gear constraints between translational, revolute, or cylindrical joints. Locate the icon. A gear defines a constraint relationship between two joints at a contact point represented by a marker that you create. The contact point is the point of common velocity between the two rigid bodies. A gear simply relates the motion of one joint to the motion of another joint. In this figure: A = carrier part B = joint 1 C = joint 2 To create a gear: 3. Create a marker and attach it to the carrier part (the rigid body common to both joints). The position of the marker must be located at the contact point of the gears or at the point of common velocity. The distances between the origin of the marker and the origins of the joints determine the gear ratio. Note: The marker's Z axis determines the line of action of the gears. Thus, the gear won't solve correctly if the marker's Z axis is parallel to the action vector of a revolute joint. You must rotate the marker by 0,90,0 to put its Z axis in the global XY plane, then rotate it about the X axis to give the correct line of action of the gear. 3. Pick the first joint by picking its visible marker. For a gear to work properly, both joints must be associated with the carrier part. Note: The common carrier must serve as the first member of each joint. 5. Pick the second joint. 6. Pick the marker that you created in step one. This marker will relate the first joint's motion to the second joint's motion. Understanding How the Software Determines Gear Ratio The software bases the gear ratio on the distance between the origin of the marker (placed at the contact point) and the origins of the two joints. Thus, one joint is an inverse multiple of the other. In this figure: A = joint on gear 1 B= joint on gear 2 C =marker gear ratio = a/b Overview of Creating Cam Constraints Cam-Follower and Cam-Cam on the Constraints subpanel let you create cam constraints. Cam-followers restrict a point on one instance in a mechanism to lie on a curve (or cam profile) of another instance in that same mechanism. Cam-cams restrict a planar curve on one instance in a mechanism to be in contact with, and tangent to, a planar curve on a second instance in that same mechanism. Locate the icon. Hint: If the contact point in a cam constraint jumps from point to point in an unnatural fashion, rerun the simulation with a larger number of output steps. Tips for Creating Cam Profiles To create a curve for a cam profile, you can: Create a spline, possibly in conjunction with other curves, and extrude it. Create a profile from a series of curves, each of which must share common endpoints. You can then use Merge Curves in the Modeling task to join the curves. Note: If you merge curves, the Modeling task replaces them with a spline. The spline serves as an abstraction of the geometry that helped to describe the product's design intent. You should use Merge Curves with caution because you'll lose most, if not all, of your wireframe constraints when the software creates the spline. When you use an open curve for a cam profile, be sure to extend the curve well past the expected length of contact (about 20% extra on each side). The solver stops with an error if the contact point moves off an open curve, even while it's iterating to the next position. Creating Cam-Cam Constraints Use Cam-Cam on the Constraints subpanel to create cam-cam constraints. Locate the icon. The cam-cam constraint allows four DOF: rotations about two axes (the curves are constrained to be tangent at the contact point) and two translations (one translation along the tangent of each curve). You can use a cam-cam constraint to model: a rounded follower that rides on a cam the profiles of two parts that roll on each other at a single point of contact. In a cam-cam constraint: The cam profiles on the two instances must share a common point. The two curves must be tangent at the contact point. The curves may be open or closed, but they must be planar. The two curves must lie in the same plane throughout the simulation. A cam-cam constraint isn't like a gear joint because the two cam profile curves are free to slide with respect to each other. The cam-cam constraint doesn't prevent a circular cam follower from spinning about its axis. Hint: For cam-cam constraints, you should define convex cam profiles to ensure that the two curves always have a single contact point. A convex curve is defined as a curve where any line segment that connects two points on the curve will lie within the area of the curve. Here, (A) shows a convex curve with a single contact point, while (B) shows a non convex curve with multiple possible contact points. Creating a Cam-Cam Constraint 1. Pick the edge on the first part instance that defines the first cam profile. You can pick any open or closed curve, but it must be associated with one of the part instances in the mechanism, and it can't be a line. 2. Pick the edge on the second part instance (B) that defines the second cam profile. Note: The software doesn't display a marker in a cam-cam constraint because the location of contact moves along both curves. Creating Cam-Follower Constraints Cam-Follower on the Constraints subpanel lets you create cam-follower constraints. Locate the icon. You can create a cam-follower to model: a point follower that rides on a cam a pin that slides within a curved slot. A cam-follower constraint allows four DOF: rotations about all three axes and translation along the curve (cam profile). To create a cam-follower constraint: 1. Pick the edge on the first part instance in the mechanism that defines the cam profile. You can pick an open or closed curve, but it must be associated with one of the parts in the mechanism, and it can't be a line. 2. Pick the point on the second part instance that defines the location of the follower point. You can't pick a point associated with the first part instance. Understanding and Creating Spring Dampers Spring Damper, Bushing, and Field Matrix let you create different types of spring dampers. You can define spring dampers on translational, revolute, and cylindrical joints. Locate the icon. Spring dampers define the pre-load force (F), stiffness (K), and damping characteristics (C) of translational and rotational joints. You can use them to produce a force in response to the displacement and velocity of two rigid bodies, much like a shock absorber. You can define a spring damper on an existing joint or on two markers associated with two rigid bodies. If you explicitly create markers for a spring damper, you must ensure that the Z axes of the triads are collinear. Understanding Types of Spring Dampers The most commonly used spring dampers are linear (spring damper) or orthogonal (bushing). Linear spring dampers mathematically emulate (translational or rotational) shock absorbers, pistons, or wound springs. They allow motion in one DOF. Bushings emulate (transational or rotational) spring dampers. They allow motion in six DOF, with no coupling between DOF. Field Matrix spring dampers are similar to bushings, but allow coupling between the DOF. General Process for Creating a Spring Damper or Bushing Note: If you use this process to create a bushing, you must enter six values for stiffness, damping, and pre-load force values. 3. Pick the joint where you want to define the spring damper. If you don't have a joint defined, pick Location (MB3) to select geometry on the screen. The software automatically creates two coincident markers which you'll need to orient with respect to two rigid bodies. 4. If you pick a marker, define the motion of the damper as either translational or rotational. 6. For each matrix element, enter values for stiffness, damping, and pre-load force. For Field Matrix spring dampers, you must also enter force, stiffness, and damping values to define coupling among the DOF. The stiffness coefficient (K) is the linear stiffness value in each spring DOF. The damping coefficient (C) is the viscous damping value in each damper DOF. The pre-load force (F) is a known force (tension or compression) exerted by a spring at a known reference length. 7. Enter a value for the spring's reference length (length of the spring for a known spring pre-load). You must define either the pre-load force and/or the reference length if you're modeling a spring in an initially loaded state. Defining the Units for Spring Dampers For each DOF, enter the matrix element values for force, stiffness, and damping. Spring damper variable Translation units Rotation units stiffness force/length torque/degree damping force second/length torque second/length pre-load force torque reference length length degree Matrix Values for Bushings This table shows matrix values for bushings. Matrix Values for Field Matrix Spring Dampers This table shows matrix values for Field Matrix spring dampers. Creating and Managing Loads After you've created the joints, gears, couplers, and spring dampers for your mechanism, you can create loads. Loads are the burdens or mechanical forces that bear on a rigid body or mechanism. You can create four kinds of loads: gravity, motion, force, and initial conditions. Understanding Motions Use Motions to define motions for your mechanism. Locate the icon. Motions are function expressions that define how a part must move in one particular direction. Mechanism Design supports one type of motion: displacement as a function of time, expressed as (t). You can apply motions to revolute, translational, or cylindrical joints. The software uses the joint's orientation to define the direction in which the relative motion should occur. You can define translational or rotational motions. Each motion removes one DOF from a mechanism. Motions are based on functions, which actually drive the kinematic motion. Consequently, the function defined for a motion dictates the relative behavior of the rigid bodies associated with the joint. For example, you can: Use a constant value function to define a constant displacement or rotation over the specified time interval. Use an expression to define a displacement or rotation dictated by mathematical expressions related to time, such as 180*sin(360*t). Use a direct entry function with ADAMS variables to drive the motion. See Also Overview of Defining Functions Overview of Creating Forces and Torques Use Create Force or Create Torque to apply a simple force or torque to joints, markers, and rigid bodies. Use Create Vector Force, Create Vector Torque, or Create General Force to apply a complex force to a marker or rigid body. You can specify the individual X, Y, and Z components of a complex force or torque. Locate the icon. A force is an effect that has magnitude and direction. Forces have six components: three translational, and three rotational (torque). A translational force produces a positive value force that pushes markers apart, such as in the case of a compressed coil spring. A negative force value brings the markers together, as in the case of a spring in tension. A rotational force (torque) produces a positive value which tends to rotate the first marker in a positive direction with respect to the second marker (clockwise motion if the Z axis of the marker faces you, using the right hand rule). Creating Simple Forces and Torques Use Create Force and Create Torque to define simple, one-directional forces and torques on joints, markers, or rigid bodies. Locate the icon. You can define a simple force or torque as either an Action Only or Action Reaction force. The software applies an Action Only force only to the recipient rigid body. It doesn't consider the reaction on the associated rigid body. Gravity is an example of an action-only type of force. The software applies an Action Reaction force to both rigid bodies. The software applies a force to the recipient rigid body and applies an equal and opposite reaction force to the associated rigid body. The resulting force is similar to a spring. An Action Reaction force with a positive value tends to repel the bodies, while a negative value tends to pull them together. Applying a Force to a Joint or a Rigid Body When you apply a force/torque to a joint, the software applies the force along the Z axis defined for the joint. When you apply a force/torque to a rigid body, you must first define a new marker on that rigid body. The marker as the point of application for the force or torque. The marker's Z axis determines the direction of the force. Applying a Force to a Marker When you apply a force/torque to a marker, the direction vector of the applied force depends on whether you're creating an Action Only or Action Reaction force. For Action Only forces, the first marker you select determines the point of application for the force. The Z axis of the second marker you select determines the direction of the force. For example, a positive force acts along the positive direction of the Z axis of the second marker. A positive torque acts according to the right hand rule (in a clockwise manner about the Z axis of the second marker). For Action Reaction forces, the force acts along a vector connecting the two markers. Note: If you create a marker on a rigid body that moves, then the marker also moves. When you define a force, if the second marker you select moves, then the direction of the force changes at each solution step, as the rigid body moves. Creating Complex Forces and Torques You can use Create Vector Force, Create Vector Torque, and Create General Force to define complex, multiple-component forces and torques for a mechanism. Locate the icon. You can define a complex force or torque on a rigid body or between two markers. You can't define complex forces or torques on joints. When you define complex forces, the first marker or rigid body you select defines the point of application of the force or torque. The second marker or rigid body you select defines the point at which the software applies an equal and opposite reaction force/torque. Note: If the second marker you select is on a grounded part, the solver won't calculate reaction forces/torques. Defining Reference Markers for Vector Forces or Torques When you create vector forces or torques, you can also define a reference marker to control the direction vectors along or about which the software applies the X, Y, and Z force/torque components. If you define a reference marker, the software applies the X, Y, and Z components of the force/torque according to the reference marker's orientation. If you don't define a reference marker, the software uses the X, Y and Z axes of the global coordinate system to define the direction vectors for the components of the force/torque. Creating Simple Contacts You can model simple contact forces between two rigid bodies, either two spheres, or a sphere and an unbounded plane. To derive useful information from these contact models, however, you need to use a dynamic solver (either Motion Simulation, available with an optional license, or an external ADAMS/Solver). Locate the icon. These tools let you model collisions between objects. At their simplest, they let you model impacts between spheres or between a sphere and a plane. The type of contact you model will mimic sphere to sphere or sphere to plane contact, but you can use these contacts on general topology, and model more complex contacts between two parts of a mechanism. For example, you could model the contact forces between a 100 pound block weight and its base in a piece of universal gym equipment. To do this, you would first create a sphere (with a very small radius) and place it on the flat surface of the weight (on the side that comes in contact with the base), then create a plane contact on the base. Note: You must create markers before you create the contact. The sphere's marker represents the center of the sphere. The orientation of the sphere's marker isn't signficant (so you can accept the default). Similarly, in sphere/plane contact, you must also create a marker to represent the plane. The plane's marker must be oriented so that the X and Y axes define the plane, and the Z axis defines the direction of the contact force. Sphere/Sphere Contact To model sphere/sphere contact: 2. Pick Sphere/Sphere Contact. 2. Give a name to the contact force (default is 1-CONTACT1 for the first contact). 7. Pick the marker on the first sphere, and supply the radius of the sphere. Repeat for the second sphere. 8. When prompted, supply values for: -stiffness (spring component, which resists penetration) -damping (viscous component, which opposes the direction of relative motion) -force exponent (>1 stiffens, <1 dampens) -penetration (how much one body penetrates into another before the contact applies maximum force) For more information about these values, consult the ADAMS/Solver Reference Manual, (Impact Function). Sphere/Plane Contact To model sphere/plane contact: 1. Pick Sphere/Plane Contact. 2. Pick the marker on the sphere, and supply the radius of the sphere. 3. Pick the marker on the plane. 4. Give a name to the contact force (default is 1-CONTACT1 for the first contact). 5. When prompted, supply values for: -stiffness (spring component, which resists penetration) -damping (viscous component, which opposes the direction of relative motion) -force exponent (>1 stiffens, <1 dampens) -penetration (how much one body penetrates into another before the contact applies maximum force) For more information about these values, consult the ADAMS/Solver Reference Manual, (IMPACT Function). In the following example of sphere to plane contact, we limit the movement of the pin in the slot by creating a sphere marker on the end of the pin, a plane marker at the end of the slot and modeling the contact between them. This figure shows the locations of the markers at contact. Specifying Initial Conditions Pick Create Initial Conditions to specify initial conditions (variables) for joints, rigid bodies, or markers in a fully dynamic solve. Locate the icon. The initial conditions prescribe the starting state of the mechanism, specifically the initial displacements and velocities for joints and rigid bodies. The solver won't consider initial conditions when it solves kinematic or static force problems. You may define any number of initial conditions for a selected joint, marker, or rigid body. Defining the Initial Condition for a Joint 5. 6. 8. 9. 2. Enter a name or number for the initial condition. Specify joint as the type of condition. Pick a joint. Enter an initial value for each joint variable. Enter an initial value for the velocity of the joint. Defining the Initial Condition for a Rigid Body 1. Enter a name or number for the initial condition. 2. Specify rigid body as the type of condition. 3. Pick a rigid body. 4. Enter an initial value for the translation of the rigid body. 5. Enter an initial value for the translational velocity of the rigid body. Specify the velocity in each direction (X, Y, and Z). Translational velocities are expressed with respect to ground. 6. Enter an initial value for the rotation of the rigid body. The rotation is expressed with respect to the center of mass of the part. 7. Enter an initial value for the rotational velocity of the rigid body. Specify the velocity in each direction (X, Y, and Z). Overview of Defining Functions In Mechanism Design, you can work with user-defined and result functions. You can use user-defined functions to define forces and motions to apply to a mechanism. These functions define a relationship between an independent and a dependent variable, such as a time and velocity. The software generates result functions during a solve. You can't create result functions, but you can plot and manage them. You can use the Functions, Create menu commands to create several types of user-defined functions: Expression functions define a selected ordinate variable as a function of time. Cubic splines are defined by a curve-fitting through data points. Direct entry functions define non-standard functions that pass directly to the solver. See Also Creating Groups of Functions Post Processing Mechanism Results Creating Expression Functions An expression function uses a mathematical equation to specify how an input force or motion varies over time. For example, this graph shows a function that defines velocity as sin (2*t). A = velocity B = time 1. 2. 9. 10. Pick the Functions, Create menu command. Enter a name for the function. Pick the function group in which to store the function. Pick Expression as the type of function to create. 3. Pick a variable for the ordinate (Y axis) units, such as Torque or Position 2. Enter the expression you want the software to evaluate. Operators for Expression Functions You can use these operators when you create an expression function: Expression + * / ** sin () cos () tan () asin () acos () atan () degrees () radians () log () alog () In () exp () sqrt () abs () int () frac () sign () ent () Description Addition Subtraction Multiplication Division Exponentiation Sine (degrees) Cosine (degrees) Tangent (degrees) Arc sine (degrees) Arc cosine (degrees) Arc tangent (degrees) Radians to degrees Degrees to radians Common log, base 10 Natural log, base e Antilog, base 10 Exponentiation e to power Square root Absolute value Integer part Fractional part Sign of value Round down to integer Creating Cubic Spline Functions If you know the value for a variable, such as force, at specific points in time, the software can create a continuous function by fitting a cubic spline through those known points. In this graph: A = velocity B = time The order of the cubic spline is set by the Spline End Conditions command in the Functions, Defaults menu. 1. Pick the Functions, Create menu command. 2. Enter a name for the function. 10. Pick the function group in which to store the function. 11. Pick Cubic Spline as the type of function to create. 4. Pick the ordinate (Y axis) units. 3. Locate the function points on the graph. You can pick locations on the screen or pick Keyin (MB3) to enter ordinate time and values for each point. Creating Direct Entry Functions You can create direct entry functions to define complicated forces and motions. These direct entry functions use ADAMS syntax and variables and pass directly to the solver. For example, to model a contact force between two instances, you can create a direct entry function of the ADAMS IMPACT function, such as follows: IMPACT(DX(3,4,4), VX(3,4,4),.25,1.5,1.5,0,.1) You would then create a force that references this function. You can also use direct entry functions to define the explicit dependence of a joint displacement, velocity, or acceleration, on time. The function expression is therefore limited and dependent on system constants and simulation time only. Creating a Direct Entry Function 3. 4. 11. 12. 5. Pick the Functions, Create menu command. Enter a name for the function. Pick the function group in which to store the function. Pick Direct Entry as the type of function to create. On the Direct Entry form, pick File to read in a direct entry function from a file or pick Key In to create a direct entry function. Your expression must use the ADAMS terminology for functions. Direct entry functions are useful for defining complicated forces and motions. Direct Entry Function Syntax and Notation You can create a direct entry from any valid combination of simple constants, operators, parameters, and available standard ADAMS/Solver functions. Simple Constants Direct entry functions can include integers and real numbers only. Complex numbers aren't currently supported. Any legal number is accepted by the function expression. The definition of a legal integer and a legal real number is quite machine dependent, and may therefore change from system to system. Typically in ADAMS/Solver, an integer is limited to having an absolute value less than 2 31 - 1. A real number in ADAMS/Solver, is typically limited to having an absolute value less than 10^26. This will also depend upon the type of hardware you are using. Operators ADAMS/Solver allows the standard FORTRAN-77 set of operators. The operators and their sequence of evaluation are shown in the following table: Symbol Operation Precedence ** Exponentiation 1 / Division 2 * Multiplication 2 + Addition 3 Subtraction 3 ADAMS/Solver executes exponentiation (**) before all other operators and executes multiplication (*) and division (/) before addition (+) and subtraction (-). When a statement has operators of the same priority, ADAMS/Solver executes them from left to right unless it is in an explicit violation of ANSI standards. You can use parentheses to alter the precedence of operators. For example, in the equation: FUNCTION = (1 - TIME) * 30 / PI ADAMS/Solver subtracts "TIME" from "1" before it performs multiplication of the result with "30" and division by "PI" (3.1415...). The precedence rules in ADAMS/Solver are consistent with the precedence rules in FORTRAN. For more information, refer to an ANSI FORTRAN reference manual. Functions A direct entry function may contain built-in ADAMS/Solver constants and "standard" functions such as TIME and STEP(...). Some functions require input parameters. You may specify these parameters as function subexpressions themselves or as constants. Some functions have optional parameters (i.e., these parameters need not be defined for complete specification of a function). If an optional parameter occurs in the middle of a parameter sequence, you must use zero as a place holder for that particular optional parameter. If the optional parameter occurs at the end of a parameter sequence, you may ignore it entirely. ADAMS/Solver will give unspecified optional parameters default values prior to evaluating the function. These default values will be explained in the context of the individual functions. Note: Mechanism Design limits function expressions to a maximum of 20 lines or 500 characters. When you use the Direct Entry form to create your function, you don't need to begin each line with a comma. Blanks A direct entry function can contain any number of blank spaces. They are often used to improve the readability of the function expression. Direct Entry Function Limitations You can only nest functions, subexpressions or operations ten levels deep. For example, FUNCTION = f1 (f2 (f3 (f4 ) ) ), where f1, f2, f3, f4 are function subexpressions, is a syntactically legal function definition. However, FUNCTION = f1 (f2 (... (f11 ) ... ), isn't a legal definition, since subexpressions have been nested eleven levels deep. You can't use more than 1,000 symbols, including operators, brackets, functions, or numbers, in a single function expression. A function can be dependent on a maximum of 25 elements of each type. For example, each expression may be a function of a maximum of 25 PARTS, or 25 FORCES. Overview of Direct Entry Functions Available in ADAMS/Solver Function Types FORTRAN-77 Intrinsic Functions Pre-defined Parameters Brief Explanation Function Names AINT, ANINT, NINT, ABS, MOD, SIGN, DIM, MAX, MIN, Emulate FORTRAN SQRT, EXP, LOG, LOG10, SIN, COS, TAN, ASIN, ACOS, math run-time libraries ATAN, ATAN2, SINH, COSH, TANH Commonly used TIME, PI, DTOR, RTOD, MODE constants or variables Return current DM,DX, DY, DZ, AX, AY, AZ, PSI, THETA, PHI, YAW, Kinematic kinematic state of the PITCH, ROLL, VM, VX, VY, VZ, VR, WM, WX, WY, WZ, Functions model ACCX, ACCY, ACCZ, WDTM, WDTX, WDTY, WDTZ Generic Force Return the net force FM, FX, FY, FZ, TM, TX, TY, TZ Functions acting at a marker Element Return force at an BEAM, BUSH, FIELD, SPDP, SFORCE, GFORCE, VFORCE, Specific Force attachment point of the VTORQ, PTCV, CVCV, JOINT, JPRIM, MOTION Functions element System Return current state of Element system modeling PINVAL, POUVAL, VARVAL, ARYVAL, DIF, DIF1 Functions element Orthogonal Allow approximating POLY, CHEBY, FORCOS, FORSIN Functions functions Piecewise Interpolates data points AKIMA, CUBSPL, CURVE Interpolation Special Commonly used "nonADAMS BISTOP, HAVSIN, IMPACT, SHF, STEP standard" functions Functions Arithmetic IF Allows branching IF in IF Function expression You should also see the ADAMS/Solver Reference Manual for more information on all available functions. Understanding General Utility Functions The general utility functions in the ADAMS/Solver are a collection of common mathematical functions that may be convenient when you write function expressions. Function Name Description BISTOP Models a gap element CHEBY Evaluates a Chebyshev polynomial FORCOS Evaluates a Fourier Cosine series FORSIN Evaluates a Fourier Sine series HAVSIN Models a Haversine function IMPACT Models an impact phenomenon POLY Evaluates a standard polynomial SHF Models a simple harmonic function X=A sin X=A sin (t-to) STEP Approximates the Haversine step utility function Arithmetic IF Lets you conditionally define a function expression BISTOP Format: The BISTOP function models a "gap element." The gap element consists of a slot which defines the domain of motion of a part located in the slot. As long as the part is located in the slot and has no interference with the ends of the slot, it's free to move without forces acting on the part. When the part tries to move beyond the physical definition of the slot, impact forces representing contact are created by the BISTOP function. The created force tends to move the floating part back into the slot. This figure shows an example of a BISTOP function: To prevent a discontinuity in the damping force at zero penetration, the damping coefficient is defined as a cubic step function of the penetration. Thus at zero penetration, the damping coefficient is always zero. The damping coefficient achieves a maximum, cmax, at a user-defined penetration, d. Even though the points of contact between the floating part and the restricting part may change as the system moves, ADAMS/Solver always exerts the force between the I and the J markers. BISTOP Arguments x = A real variable that specifies the distance variable the user wants to use to compute the force. For example, if the user wants to use the x displacement of Marker 21 with respect to 31, then x is DX (21,31). x1 = A real variable that specifies the lower bound of x. If x is less than x1, ADAMS/Solver calculates a positive value for the force. The value of x1 must be less than the value of x2. x2 = A real variable that specifies the upper bound of x. If x is greater than x2 ADAMS/Solver calculates a negative value for the force. The value of x2 must be greater than the value of x1. k = A non-negative real variable that specifies the stiffness of boundary surface interaction. e = A positive real variable that specifies the exponent of the force deformation characteristic. For a stiffening spring characteristic, e > 1.0. For a softening spring characteristic, 0 < e < 1.0. cmax = A non-negative real variable that specifies the maximum damping coefficient. d = A positive real variable that specifies the boundary penetration at which ADAMS/Solver applies full damping. BISTOP Examples The user may model a system with the BISTOP function with a slider in a slot as depicted in the above figure. Assume a translational joint constrains the slider to move in a slot. The line of translation is along the collinear z-axes of the I and the J markers, I belonging to the slider and J to the part containing the slot. The user can use an SFORCE statement together with the BISTOP function to restrict the movement of the slider in the slot and model the gap. In the figure above, x is the instantaneous distance between the I and the J markers, N is the distance between the J marker and the left end of the slot, M1 is the distance between the I marker and the left edge of the floating part, L is the length of the slot, M2 is the distance between the I marker and the right edge of the floating part, x1 is the instantaneous distance between the I and the J markers when the floating part first comes into contact with the left end of the slot, and x2 is the instantaneous distance between the I and the J markers when the floating part first comes into contact with the right end of the slot. Hence, the parameters for the BISTOP function for this example are: x = N + M1 for the left end of the slot and x = N + L - M2 for the right end of the slot or x1 = N + M1, and x2 = N + L - M2 Note that when x1 x x2 there is no penetration and the force is zero (penetration p = 0); when x < x 1 penetration occurs at the end closer to the J marker and the force is > 0 (penetration p = x1 - x); and when x > x1 penetration occurs at the end farther away from the J marker, and the force is < 0 (penetration p = x x2). Also note than when p < d the instantaneous damping coefficient is a cubic step function of the penetration, p; p > d the instantaneous damping coefficient is c max. The BISTOP function for this example is: BISTOP(DZ(I,J,J), VZ(I,J,J), x1, x2, k, e, cmax, d) The values of k, e, cmax, and d depend on the materials used in the two parts and on the shapes of the parts, and are used to define the contact force. The BISTOP force can be mathematically expressed as follows: CHEBY Format: CHEBY (x, x0, a0, a1,..., a30) The CHEBY function evaluates a Chebyshev polynomial at a user specified value x. x 0, a0, a1,..., a30 are parameters used to define the constants for the Chebyshev polynomial. The Chebyshev polynomial is defined as: C(x) = aj Tj (x-x0) where the functions Tj are recursively defined as: Tj (x-x0) = 2 * (x-x0) * Tj-1 (x-x0) - Tj-2 (x-x0) where To (x-x0) = 1, and T1 (x-x0) = x-x0. The index "j" has a range from zero to "n", where "n" is the number of terms in the series. Note that: T2 (x-x0) = 2 * (x- x0)2 - 1 T3 (x-x0) = 4 * (x- x0)3 - 3 * (x- x0) CHEBY Arguments x = A real variable that specifies the independent variable. For example, if the independent variable in the function is time, x is the system variable TIME. x0 = A real variable that specifies a shift in the Chebyshev polynomial. a0,a1,...,a30 = The real variables that define as many as 31 coefficients for the Chebyshev polynomial. CHEBY Examples MOTION/1, JOINT=21, TRANSLATION, ,FUNCTION = IF ( TIME-2:CHEBY(TIME, 1, 1, 0, -1), 0, 0) This MOTION statement defines a motion using a quadratic Chebyshev polynomial and the system variable TIME. The arithmetic IF ensures that the function remains zero after 2 time units. When time is less than 2 time units, ADAMS/Solver evaluates a Chebyshev polynomial to determine the motion. The polynomial defined in the above example is: Cheby = 1+0 * (time-1) -1 * [2 (time-1)2-1] = 2 *time2 -4 * time FORCOS Format: FORCOS (x, x0,w, a0, a1,..., a30) The FORCOS function evaluates a Fourier Cosine series at a user specified value x. x 0 a0,a1,..., a30 are parameters used to define the constants for the Fourier Cosine series. The Fourier Cosine series is defined: F(x) = aj * Tj (x - xo) where the functions Tj are defined as: Tj (x - x0) = cos{j * * (x-x0)} The index j has a range from 0 to n, where n is the number of terms in the series. FORCOS Arguments x = A real variable that specifies the independent variable. For example, if the independent variable in the function is time, x is the system variable TIME. x0 = A real variable that specifies a shift in the Fourier Cosine series. A real variable that specifies the fundamental frequency of the series. ADAMS/Solver assumes is in radians per unit of the independent variable unless the user uses a D after the value. a0,a1,...,a30 = The real variables that define as many as 31 coefficients for the Fourier Cosine series. FORCOS Examples MOTION/1, JOINT=21, TRANSLATION, , FUNCTION=FORCOS(TIME, 0, 360D, 0, 1) This MOTION statement defines a harmonic motion as a function of time. The motion has no shift, has a fundamental frequency of 1 cycle (360D) per time unit, has no constant value, and has an amplitude of 1. The function defined is: FORCOS = cos(360D*time) This figure shows the curve of the harmonic motion defined by FORCOS. FORSIN Format: FORSIN (x, x0, w, a0, a1,..., a30) The FORSIN function evaluates a Fourier Sine series with a constant bias at a user specified value x. x0,a0,a1,..., a30 are parameters used to define the constants for the Fourier Sine series. The Fourier Sine series is defined: F(x) = aj * Tj (x - xo) where the functions Tj are defined as: Tj (x-x0) = sin{j * * (x-x0)} The index j has a range from 0 to n, where n is the number of terms in the series. FORSIN Arguments x = A real variable that specifies the independent variable. For example, if the independent variable in the function is time, x is the system variable TIME. x0 = A real variable that specifies a shift in the Fourier Sine series. = A real variable that specifies the fundamental frequency of the series. ADAMS/Solver assumes is in radians per unit of the independent variable unless the user uses a D after the value. a0 = A real variable that defines the constant bias term for the function. a1,...,a30 = The real variables that define as many as thirty-one coefficients for the Fourier Sine series. FORSIN Examples MOTION/1, JOINT=21, TRANSLATION, , FUNCTION=FORSIN(TIME, -0.25, 360D, 0, 1) This MOTION statement defines a harmonic motion as a function of time. The motion has a -0.25 second shift, has a fundamental frequency of 1 cycle (360D) per time unit, has no constant value, and has an amplitude of 1. The function defined is: FORSIN = sin (360D* (time+0.25)). This figure shows the curve of the harmonic motion defined by FORSIN. IMPACT Format: The IMPACT function models collisions. It evaluates a function that turns on when the distance between the I and the J markers falls below a nominal free length, denoted as x1, (that is, when two parts collide). As long as the distance between the I and the J markers is greater than x1, the force is zero. An example of a system the user can model with the IMPACT function is a ball impacting the ground. The following figure shows the free length value x1 at which the IMPACT force turns on. The force has two components, a spring or stiffness component and a damping or viscous component. The stiffness coefficient, k , is a function of the penetration of the I marker within the free length distance from the J marker. The stiffness component opposes the penetration. The damping component of the force is a function of the speed of penetration. The damping opposes the direction of relative motion. To prevent a discontinuity in the damping force at contact, the damping coefficient is, by definition, a cubic step function of the penetration. Thus, at zero penetration, the damping coefficient is always zero. The damping coefficient achieves a maximum, c max , at a user-defined penetration, d. This figure illustrates the IMPACT function: IMPACT Arguments x = A real variable that specifies the distance variable the user wants to use to compute the force. For example, if the user wants to use the x displacement of Marker 21 with respect to Marker 31, then x is DX(21,31,31). x1 = A positive real variable that specifies the free length of x. If x is less than x1 ADAMS/Solver calculates a positive value for the force. Otherwise, the force value is zero. k = A non-negative real variable that specifies the stiffness of boundary surface interaction. e = A positive real variable that specifies the exponent of the force deformation characteristic. For a stiffening spring characteristic, e > 1.0. For a softening spring characteristic, 0 < e < 1.0. cmax = A non-negative real variable that specifies the maximum damping coefficient. d = A positive real variable that specifies the boundary penetration at which ADAMS/Solver applies full damping. Note: When x x1 there is no penetration and the force is zero (penetration p = 0) and when x < x 1 penetration occurs at the end closer to the J marker, and the force is > 0 (penetration p = x1 - x). When p < d the instantaneous damping coefficient is a cubic step function of the penetration, p and when p > d the instantaneous damping coefficient is cmax. This figure shows a plot of damping coefficient versus penetration. IMPACT Examples SFORCE/1, I=11, J=21, TRANSLATION, ACTIONONLY, , FUNCTION=IMPACT(DZ(11, 21, 21), VZ(11, 21, 21),1.0, ,100, 1.5, 25, 0.1) This SFORCE statement defines an impact force when a ball penetrates a stationary object such as ground. The force is a single-component force at Marker 11 and along the z-axis of Marker 21. System variable DZ(11,21,21) defines the instantaneous displacement of Marker 11 with respect to Marker 21 along the z-axis of Marker 21. System variable VZ(11,21,21) defines the instantaneous velocity. The free length is 1 (the radius of the ball is 1 unit). The stiffness is 100, and the exponent of deformation is 1.5, the maximum damping coefficient is 25. The penetration at which ADAMS/Solver applies full damping is 0.1. POLY Format: Poly (x, x0, a0, a1,..., a30) The POLY function evaluates a standard polynomial at a user-specified value x. x0,a0,a1,..., a30 are parameters used to define the constants for the polynomial. The standard polynomial is defined as: P(x) = aj (x-x0)j = a0 + a1 * (x-x0) + a2 * (x-x0)2 +...+ an * (x-x0)n The index j has a range from zero to n, where n is the number of terms in the series. POLY Arguments x = A real variable that specifies the independent variable. For example, if the independent variable in the function is time, x is the system variable TIME. x0 = A real variable that specifies a shift in the polynomial. a0,a1,...,a30 = The real variables that define as many as 31 coefficients for the polynomial series. POLY Examples MOTION/1, JOINT=21, TRANSLATION, , FUNCTION=POLY(TIME, 0, 0, 0, 1) This MOTION statement uses a quadratic polynomial function with respect to the system variable TIME to define a motion. That expanded function is: Poly = time2 MOTION/1, JOINT=21, TRANSLATION, , FUNCTION = IF(TIME-5: 0, 0, POLY(TIME, 5, 0, 10)) This MOTION statement uses an arithmetic IF in its function expression to set the value of the motion to zero when time is less than five time units, to zero when time is equal to five time units, and to the value of a polynomial function when time is greater than five time units. The expanded function is Poly = 10 * (time - 5) SFORCE/3, I=10, J=20, TRANSLATION, ,FUNCTION=-POLY(DM(10, 20), 10, 0, 25, 0, 75) This SFORCE statement defines a force with a nonlinear force deformation characteristic. This relationship is: Poly=-25*[DM(10,20)-10]-75*[DM(10,20)-10]3, where, DM(10,20) represents the magnitude of the displacement of Marker 10 with respect to Marker 20. The free length of the spring is 10 units. SHF Format: SHF (x, x0, a, , phi, b) The SHF function evaluates a simple harmonic function. This equation defines SHF: SHF = a*sin( *(x-x0)-phi)+b SHF Arguments x = The independent variable in the function. It may be any value of interest to the user so that the user can compute the value with the function expression. For example, if the independent variable in the function is time, x is the system variable TIME. x0 = The offset in the independent variable x. a = The amplitude of the harmonic function. The frequency of the harmonic function. ADAMS/Solver assumes w is in radians per unit of the independent variable. Conversion to degrees per unit of the independent is achieved by appending a D after the number specifying . phi = A phase shift in the harmonic function. ADAMS/Solver assumes phi is in radians unless the user uses a D after the value. b = The average value of displacement of the harmonic function. SHF Examples MOTION/1, JOINT=21, TRANSLATION, , FUNCTION=SHF(TIME, 25D, PI, 360D, 0, 5) This MOTION statement uses SHF to define the harmonic function: SHF = 5+Pi*sin(360D*(time-25D)) The motion has a shift of 25 degrees, has an amplitude of Pi, has a frequency of 1 cycle (360D) per time unit, has zero phase shift, and has an average value of displacement of 5 units. STEP Format STEP (x, x0, h0, x1, h1) Definition The STEP function approximates the Haversine step function with a cubic polynomial. The figure below illustrates the STEP function. STEP Function: The equation defining the STEP function is: Arguments x = The independent variable. x0 = A real variable that specifies the x value at which the STEP function begins. x1 = A real variable that specifies the x value at which the STEP function ends. h0 = The initial value of the step. h1 = The final value of the step. Examples MOTION/1, JOINT=21, TRANSLATION, , FUNCTION=STEP(TIME, 1, 0, 2, 1) This MOTION statement defines a smooth step function from time 1 to time 2 with a displacement from 0 to 1. Arithmetic IF Format: IF (expression 1: expression 2, expression 3, expression 4) Arithmetic IFs allow the user to conditionally define a function expression. The ADAMS/Solver evaluates expression 1: If the value of expression 1 is less than zero, the arithmetic IF is evaluated using expression 2. If the value of expression 1 is zero, the arithmetic IF is evaluated using expression 3. If the value of expression 1 is greater than zero, the arithmetic IF is evaluated using expression 4. Arithmetic IF Example FUNCTION = -6 * IF(VR(10,31): 0, 0, VR(10,31) ** 3) This function is interpreted as follows: If the radial velocity between markers 10 and 31 is less than or equal to zero, the value of the function expression is zero. If the radial velocity between markers 10 and 31 is greater than zero, the value of the function expression is -6*VR(10,31)**3. Note: When you use an arithmetic IF, ensure that the resulting function is continuous. If the function is discontinuous, the ADAMS/Solver may fail to find a solution when it encounters the discontinuity. Understanding Displacement Functions Displacement functions return a requested magnitude or component of the translational vector or the Euler rotational sequence between two markers. Function Name Definition DM (i1 [, i2]) Magnitude of translational displacement DX (i1 [, i2] [,i3]) X component of translational displacement DY (i1 [, i2] [,i3]) Y component of translational displacement DZ (i1 [, i2] [,i3]) Z component of translational displacement AX (i1 [, i2]) Rotation about X axis AY (i1 [, i2]) Rotation about Y axis AZ (i1 [, i2]) Rotation about Z axis For functions where the software calculates results for i1 relative to i2, if you don't specify marker i2, i2 defaults to the ground. For functions where the software calculates results for i1 relative to i2 in terms of the coordinates of i3, if you don't specify marker i3, i3 defaults to the ground. DM ( i1 [, i2] ) DM ( i1 [,i2] ) calculates the magnitude of the translational displacement vector from marker i1 to marker i2. DM is the distance between markers i1 and i2 and, by definition, is always positive. DM is calculated as follows: DX ( i1 [, i2, i3] ) DX ( i1 [, i2, i3] ) calculates the x-component of the translational displacement vector from marker i2 to marker i1 as expressed in the coordinate system of marker i3. DX is calculated as follows: DY ( i1 [, i2, i3] ) DY ( i1 [, i2, i3] ) calculates the y-component of the translational displacement vector from marker i2 to marker i1 as expressed in the coordinate system of marker i3. DY is calculated as follows: DZ ( i1 [, i2, i3] ) DZ ( i1 [, i2, i3] ) calculates the z-component of the translational displacement vector from marker i2 to marker i1 as expressed in the coordinate system of marker i3. DZ is calculated as follows: AX ( i1 [, i2] ) AX ( i1 [, i2] ) calculates the rotational displacement of marker i1 about the x-axis of marker i2. This value is computed as follows: Assume that the rotations of marker i2 about the other two axes (y and z-axes) are zero. AX is the angle between the two y-axes (or the two z-axes). Mathematically, AX is calculated as follows: AY ( i1 [, i2] ) AY ( i1 [, i2] ) calculates the rotational displacement of marker i1 about the y-axis of marker i2. This value is computed as follows: Assume that the rotations of marker i2 about the other two axes (x and z-axes) are zero. AY is the angle between the two x-axes (or the two z-axes). AY is calculated as follows: AZ ( i1 [, i2] ) AZ ( i1 [, i2] ) calculates the rotational displacement of marker i1 about the z-axis of marker i2. This value is computed as follows: Assume that the rotations of marker i2 about the other two axes (x and y-axes) are zero. AZ is the angle between the two x-axes (or the two y-axes). AZ is calculated as follows: Understanding Acceleration Functions Acceleration functions return a requested magnitude or component of the translational or rotational acceleration vector between two markers in a mechanism. Function Name Definition ACCM (i1[. i2]) Magnitude of translational acceleration ACCX (i1[.i2] [.i3]) X component of translational acceleration ACCY (i1[.i2] [.i3]) Y component of translational acceleration ACCZ (i1[.i2] [.i3]) Z component of translational acceleration WDTM (i1 [.i2]) Magnitude of angular acceleration WDTX (i1 [.i2] [.i3]) X component of angular acceleration WDTY (i1 [.i2] [.i3]) Y component of angular acceleration WDTZ (i1 [.i2] [.i3]) Z component of angular acceleration Note: The time derivative of the corresponding displacement vector is always taken in the reference frame of the mechanism's ground and not in the marker i2 reference frame. For functions where the software calculates results for i1 relative to i2, if you don't specify marker i2, i2 defaults to the ground. For functions where the software calculates results for i1 relative to i2 in terms of the coordinates of i3, if you don't specify marker i3, i3 defaults to the ground. ACCM ( i1 [, i2] ) ACCM (i1 [, i2] ) calculates the magnitude of the translational acceleration vector of marker i1 with respect to marker i2. ACCM is calculated as follows: ACCX ( i1 [, i2, i3] ) VX ( i1 [, i2, i3] ) calculates the x-component of the difference between the global acceleration vector of marker i1 and the global acceleration vector of marker i2, as computed in the coordinate of marker i3. ACCX is calculated as follows: ACCY ( i1 [, i2, i3] ) ACCY ( i1 [, i2, i3] ) calculates the y-component of the difference between the global acceleration vector of marker i1 and the global acceleration vector of marker i2, as computed in the coordinate of marker i3. ACCY is calculated as follows: ACCZ ( i1 [, i2, i3] ) ACCZ ( i1 [, i2, i3] ) calculates the z-component of the difference between the global acceleration vector of marker i1 and the global acceleration vector of marker i2, as computed in the coordinate of marker i3. ACCZ is calculated as follows: WDTM ( i1 [, i2] ) WDTM ( i1 [, i2] ) calculates the difference between the angular acceleration vector of marker i1 and the angular acceleration vector of marker i2. WDTM is calculated as follows: WDTX ( i1 [, i2, i3] ) WDTX ( i1 [, i2, i3] ) calculates the x-component of the difference between the angular acceleration vector of marker i1 in the ground and the angular acceleration vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WDTX is calculated as follows: WDTY ( i1 [, i2, i3] ) WDTY ( i1 [, i2, i3] ) calculates the y-component of the difference between the angular acceleration vector of marker i1 in the ground and the angular acceleration vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WDTY is calculated as follows: WDTZ ( i1 [, i2, i3] ) WDTZ ( i1 [, i2, i3] ) calculates the z-component of the difference between the angular velocity vector of marker i1 in the ground and the angular velocity vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WDTZ is calculated as follows: Understanding Velocity Functions Velocity functions return a requested magnitude or component of the translational or rotational velocity vector between two markers in a mechanism. Function Name Definition VM (i1 [, i2]) Magnitude of translational velocity VR (i1 [, i2] [,i3]) Radial velocity VX (i1 [, i2] [,i3]) X component of translational velocity VY (i1 [, i2] [,i3]) Y component of translational velocity VZ (i1 [, i2] [,i3]) Z component of translational velocity WM (i1 [, i2]) Magnitude of angular velocity WX (i1 [, i2] [, i3]) X component of angular velocity WY (i1 [, i2] [, i3]) Y component of angular velocity WZ (i1 [, i2] [, i3]) Z component of angular velocity Note: The time derivative of the corresponding displacement vector is always taken in the reference frame of the mechanism's ground and not in either the i2 or i3 marker reference frame. For functions where the software calculates results for i1 relative to i2, if you don't specify marker i2, i2 defaults to the ground. For functions where the software calculates results for i1 relative to i2 in terms of the coordinates of i3, if you don't specify marker i3, i3 defaults to the ground. VM ( i1 [, i2]) VM (i1 [, i2]) calculates the magnitude of the translational velocity vector of marker i1 with respect to marker i2. VM is calculated as follows: VR ( i1 [, i2]) VR (i1 [, i2]) calculates the radial (relative) velocity of marker i1 with respect to marker i2. VR is calculated as follows: VR is positive when marker i1 and marker i2 are separating from each other. VR is negative when marker i1 and marker i2 are approaching each other. VX ( i1 [, i2, i3] ) VX ( i1 [, i2, i3]) calculates the x-component of the difference between the global velocity vector of marker i1 and the global velocity vector of marker i2, as computed in the coordinate of marker i3. VX is calculated as follows: VY ( i1 [, i2, i3] ) VY ( i1 [, i2, i3]) calculates the y-component of the difference between the global velocity vector of marker i1 and the global velocity vector of marker i2, as computed in the coordinate of marker i3. VY is calculated as follows: VZ ( i1 [, i2, i3] ) VZ ( i1 [, i2, i3]) calculates the z-component of the difference between the global velocity vector of marker i1 and the global velocity vector of marker i2, as computed in the coordinate of marker i3. VZ is calculated as follows: WM ( i1 [, i2, i3] ) WM ( i1 [, i2, i3] ) calculates the magnitude of the angular velocity vector of marker i1 with respect to marker i2. WM is calculated as follows: WX ( i1 [, i2] ) WX ( i1 [, i2] ) calculates the x-component of the difference between the angular velocity vector of marker i1 in the ground and the angular velocity vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WX is calculated as follows: WY ( i1 [, i2. i3] ) WY ( i1 [, i2, i3] ) calculates the y-component of the difference between the angular velocity vector of marker i1 in the ground and the angular velocity vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WY is calculated as follows: WZ ( i1 [, i2, i3] ) WZ ( i1 [, i2, i3] ) calculates the z-component of the difference between the angular velocity vector of marker i1 in the ground and the angular velocity vector of marker i2 in the ground, as computed in the coordinate system of marker i3. WZ is calculated as follows: Understanding General Force Functions Generic force functions return either the net applied and reaction force between two markers, or the net applied action-only forces at a marker. Function Name Definition FM (i1 [, i2] Magnitude of force FX (i1 [, i2] [, i3] X component of force FY (i1 [, i2] [, i3] Y component of force FZ (i1 [, i2] [, i3] Z component of force TM (i1 [, i2] Magnitude of torque TX (i1 [, i2] [, i3] X component of torque TY (i1 [, i2] [, i3] Y component of torque TZ (i1 [, i2] [, i3] Z component of force The first parameter, i1, always defines the marker at which the net force is being calculated, and i2 defines a second marker. In action-reaction forces, to obtain the net force acting at marker i1, sum the vectors of each force element that acts between i1 and i2. To obtain a measure number for a force vector in a specific coordinate system, specify a third marker, i3. The first parameter is mandatory. The second and third parameters are optional and default to zero. You can also set i2 and i3 to zero. If i2 is zero, ADAMS/Solver returns only the action-only forces acting at marker i1. If i3 is zero, ADAMS/Solver resolves the vector components in the ground reference frame. FM ( i1 [, i2] ) FM ( i1 [, i2]) calculates the magnitude of the net translational forces acting at marker i1. To return the magnitude of action-only forces at marker i1, don't specify marker i2, or set marker i2 to zero. FX ( i1 [, i2, i3] ) FM ( i1 [, i2, i3]) calculates the x-component of the net translational force acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the x-component of the action-only forces acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. FY ( i1 [, i2, i3] ) FY ( i1 [, i2, i3]) calculates the y-component of the net translational force acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the y-component of the action-only forces acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. FZ ( i1 [, i2, i3] ) FZ ( i1 [, i2, i3]) calculates the y-component of the net translational force acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the z-component of the action-only forces acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. TM ( i1 [, i2] ) TM ( i1 [, i2] ) calculates the magnitude of the net torque acting at marker i1. To return the magnitude of action-only torques acting at marker i1, don't specify marker i2, or set marker i2 to zero. TX ( i1 [, i2, i3] ) TX ( i1 [, i2, i3]) calculates the x-component of the net torque acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the x-component of the action-only torques acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. TY ( i1 [, i2, i3] ) TY ( i1 [, i2, i3]) calculates the y-component of the net torque acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the y-component of the action-only torques acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. TZ ( i1 [, i2, i3] ) TZ ( i1 [, i2, i3]) calculates the z-component of the net torque acting at marker i1, as computed in the coordinate system of marker i3. Unless the force is an action-only force, all force elements acting between markers i1 and i2 are included in the calculation. To return the z-component of the action-only torques acting at marker i1, don't specify marker i2 or i3, or set marker i2 to zero. Creating Groups of Functions Use the Functions, Group Functions menu commands to create and manage groups of functions or to create and manage groups of other function groups. When you create a function, the software stores it in a function group. In this way, you can collect all the functions from a specific solution run, or plot a group of functions at the same time. Every function must reside in at least one function group. The default function group is "USER_DEFINED." The User Defined group can contain input functions for the mechanism model but not functions output from a simulation. Once you've created function groups, you can create groups of other function groups to create a hierarchy. You can either create a group of functions or a group of other function groups. Solving a Mechanism After you've created a mechanism and defined loads and motions, you can solve the mechanism to simulate its behavior over a specified period of time. When you solve a mechanism, the solver applies motions, forces, and gravity to the mechanism to define and run a simulation. The software stores the results of a solve in run records. These results include: sequential configurations, which you can animate body displacement, velocity, and acceleration reaction forces such as torques and cam forces applied forces ADAMS Request results The output configurations are especially useful for animations. During a solution, the solver sequentially reorients the mechanism based on the loads and its joints, and stores these sequences of configurations. The number of output steps that you specify for the solve indicates the number of configurations the software will solve. Using the Kinematics Solver The internal solver performs kinematic analyses. This simulates the motion of a mechanical system and determines the range of values for displacement, velocity, and acceleration of rigid bodies, and the reaction forces on constraints. In a kinematic solution: System motion is a function of input motions and constraints. External loads and inertial forces affect reaction forces at constraints but don't affect motion. Bodies and joints are assumed to be rigid. There are zero degrees of freedom. Using the Dynamics Solver If you have a license for Motion Simulation (the internal dynamics solver), you can solve models with one or more degrees of freedom. Using an External ADAMS/Solver Mechanism Design allows you to use solvers other than the standard internal one, including customized versions of ADAMS/Solver. To replace the internal solver with an external one, set the environment variable "SDRC_ADAMS_SOLVER" to the path where the external ADAMS/Solver is installed. On UNIX systems, this location must contain the "mdi" script. On NT, this location must contain a "common" subdirectory that holds the "mdi.bat" script. These scripts are used by Mechanism Design to start the solver. Here is a sample environment variable for UNIX that uses K-shell. export SDRC_ADAMS_SOLVER = /usr/local/adams Once the environment variable has been set and I-DEAS is running, all work in Mechanism Design will function normally. You don't have to make any changes to the regular solve procedure. When you pick Solve, Mechanism Design will write an ADAMS dataset, along with an ADAMS command file, to the current directory. These items will be used as inputs to the external solver, and a results file will be written to the same directory. This results file will automatically be read and processed by Mechanism Design. See Also Exporting Mechanism Data to ADAMS Importing Mechanism Results from ADAMS Setting up a Solve Use Solve Setup to select loads and define parameters for a solve. Locate the icon. Use the Mechanism Load Selection form to select loads. You must apply at least one load to the mechanism. You can also use the Mechanism Load Selection form along with the Loadcase Management form to create loadcases. Once you've selected loads or a loadcase, you can use the Mechanism Solution Parameters form to specify parameters for the solve, such as number of steps. If you're doing a dynamic solve, decide whether or not you want all the forces that will affect the model to be in a state of equilibrium before the solve begins. In that case, toggle on Initial Static Equilibrium. Pick Output Selection to use the Mechanism Output Selection form to define the data you want the solver to return, such as Applied Forces. Initiating a Solve Pick Solve to begin a solve. Locate the icon. The loads and/or loadcases the software uses for the solve vary based on the situations described below. If you select Solve and you haven't specified loads on the Mechanism Load Selection form or selected loadcases on the Loadcase Management form, the software uses all motions, initial conditions, forces, and gravity that you've defined to solve the mechanism. If you select loads and then select Solve, the software creates a temporary loadcase ( "9999 Last_Used_Loadcase") to store the selected loads. If you select an existing or stored loadcase and then select Solve, the software uses the loads that make up that loadcase to solve the mechanism. Each subsequent solve uses the loads or loadcases you've selected until you select new loads or loadcases. Post Processing Mechanism Results Once you've solved a mechanism, you can use different post processing tools to analyze, display, and manage result data from a solve. For example, you can: animate and display mechanism sequences graph result functions Animating Mechanism Sequences A sequence is an ordered list of configurations. The software automatically creates a sequence when you solve a mechanism. You can use Animate Hardware and Animate Software to rapidly display a sequence to give the appearance of motion. Animate Hardware is very fast, but the software disables the display of joints and dimensions during the animation. Animate Software retains the display of joints and dimensions. You can also see assembly annotation dimension values change with each frame display. Locate the icon. See Also Animating an Assembly Guidelines for Using Configurations Generated by the Solver If you want to use a specific configuration returned by the solver, and you used assembly relations (such as line-to-line constraints) to create the assembly, first turn off the Automatic Assembly Update option on the Update Options form to keep the software from solving the assembly constraint network. If you don't turn off Automatic Assembly Update, the software reestablishes the assembly's constraints and reorients the instances within the assembly, overwriting the configuration generated by the solver. Note: If you simply want to animate a configuration sequence, you don't need to turn off Automatic Assembly Update. Understanding and Graphing Result Functions During a solve, the software generates different result functions. It stores these functions in function groups. Result functions describe the rigid body motion, reaction forces, and applied forces. Result functions for body motion include the X,Y, Z displacements, rotations, and magnitudes. The software calculates reaction force functions to describe the forces and torques that correspond to joint constraints and the kinematic input motions of the mechanism. The software calculates body motions for each ungrounded rigid body as the change in the in the body's change in center of gravity position with respect to global coordinate directions. Note: The software includes functions for velocities and accelerations (eight results each) for body motion results if you specified those options on the Mechanism Output Selection form. You can use the tools on the Graphing subpanel to graph these result functions. Locate the icon. For example, once you create a function graph, you can use Overlay XY to overlay a second function graph on the first graph. You can then compare and display two different functions. Understanding Motion Analysis After you've solved the mechanism, you can use Motion Analysis to calculate the relative position, velocity, and acceleration of one marker or joint with respect to another marker. Locate the icon. Motion Analysis calculates a set of response functions that define the relative motion of a marker with respect to another marker. The number and type of response functions depend on the selected type of motion analysis. The software places these response functions in a new function group. For example, to calculate acceleration for a marker, you must have a set of acceleration functions. This set must include six response functions: the first three functions define linear acceleration, and the second three define angular acceleration. The number of time steps on the abscissa must be the same for all response functions in the set. For example, you want the software to calculate the motion of marker 1 (A) relative to marker 2 (B). This graph shows the motion function of marker 1 from the mechanism solution. Exporting Mechanism Data to ADAMS Use File, Export 5. Select File, Export 6. In the Export Selections form, pick Mechanism to ADAMS. 12. Use the Mechanism Load Selection form to select the load types and applied loads to export. Then use the Export to ADAMS form to specify options such as a run name. The software creates a .adm (ADAMS Model Data) file to store the data you're exporting. See Also Solving a Mechanism (c) 1999 Structural Dynamics Research Importing Mechanism Results from ADAMS Use File, Import 7. Select File, Import 8. Use the Import Selections form to select Mechanism Results from ADAMS. 13. Use the Import from ADAMS form to specify options, such as the name of the .res file (ADAMS results file) you're importing. See Also Solving a Mechanism