Solver c Plus Statements

download Solver c Plus Statements

of 383

Transcript of Solver c Plus Statements

  • 8/15/2019 Solver c Plus Statements

    1/383

    1Welcome to the C++ Version of Adams/Solver

    Welcome to the C++ Version of Adams/Solver

    The C++ version of Adams/Solver, part of the Adams® suite of software, is the next generation of Solvertechnology. It is available as an alternative to the commercially available FORTRAN 77 Solver. You canuse Adams/Solver (C++) to test your models for compatibility and to take advantage of the new features.

    The online help provides detailed information on the individual statements, function expressions, andcommands you use when working with Adams/Solver (C++).

    To Switch to the Adams/Solver (FORTRAN) click Welcome to the FORTRAN Version of Adams/Solver .

    http://solver_fortran_statements.pdf/http://solver_fortran_statements.pdf/

  • 8/15/2019 Solver c Plus Statements

    2/383

    Adams/Solver Adams/Solver (C++) FAQs

    2

    Adams/Solver (C++) FAQs

    Below is a list of the most common Adams/Solver (C++) questions. For updated information or to askanother Adams/Solver (C++) question, use the Adams Knowledge Base .

    Q: Why are the Adams/Solver built-in graphics capabilities not available in Adams/Solver (C++)?

    A: The graphics capability in Adams/Solver (FORTRAN) is surpassed by the graphical user interface,Adams/View. Since this capability has a limited user base, the following commands are not implementedin Adams/Solver (C++):

    Q: Why is the UCON user-defined constraint element not supported in Adams/Solver (C++)?

    A: The UCON element was always an extremely difficult element for users to use and only expert usersderived a benefit from this element. The C++ version of Solver, with its analytical derivative capability,has replaced UCON with an extremely user-friendly user-defined constraint element (see the GCONstatement and command ), which does not require the user to write user subroutines containing the partialderivatives of the constraint equations. Instead, the user provides a function expression which is toconstrained to the value zero.

    Adams/Solver (C++) computes all the required derivatives.

    As a result, the UCON command and the UCON statement are not supported in Adams/Solver (C++).

    Q: Why are the LIST/NOLIST statements not supported in C++?

    A: These statements are not supported because Adams/Solver (C++) does not generate a tabular outputfile.

    Q: Why is the tabular output file (.out) not supported in C++?A: The tabular output file was an early attempt at reporting results from Adams/Solver. Due to, amongother things, a lack of machine readability, later versions of Adams added more robust output file formats,such as the .res and .req file.

    The tabular output file is considered obsolete and supporting it in the Adams/Solver (C++) was notdeemed necessary. At the same time, it is recognized that the tabular output file contained valuableinformation not reported elsewhere. Work on determining this information and where to report it is work

    in progress.

    • ACENTER• AINIT• AUTOSCALE• BACKUP• CENTER

    • CLEAR• DISPLAY• DRAW• DT• ERASE

    • EXECUTION• PLOT• RETURN• SET

    http://simcompanion.mscsoftware.com/http://solver_c_plus_commands.pdf/http://solver_c_plus_commands.pdf/http://simcompanion.mscsoftware.com/

  • 8/15/2019 Solver c Plus Statements

    3/383

    3Welcome to the C++ Version of Adams/Solver Operators

    Operators

    Function expressions consist of scalar or vector measures and functions, combined with a set ofarithmetic and grouping operators. The operators closely resemble those of the FORTRAN programminglanguage, with extensions for vector expressions.

    Accepted Combinat ions

    The following combinations are accepted. The symbol s represents a scalar subexpression and vrepresents a vector subexpression.

    Parentheses grouping to override operator precedence (vector and scalar):(v), (s)

    Vector construction from scalar expressions:

    [s,s,s]

    Simple scalar arithmetic, including unary plus and unary minus:

    s+s, s-s, s*s, s/s, -s, +sPower (scalars only):

    s**s

    Vector summation, subtraction, unary minus and unary plus:

    v+v, v-v, +v, -v

    Scaling of a vector by a scalar:s*v, v*s, v/s

    Note that division by a vector is not supported.

    Inner product (dot product):

    v*v

    Cross product:v%v

    Operators Precedence

    Furthermore, in evaluating the arithmetic expressions, the following order of precedence is used:

    **, - (unary), + (unary) Highest precedence, tightest binding*, /, % Intermediate precedence+, - Lowest precedence, loosest binding

  • 8/15/2019 Solver c Plus Statements

    4/383

    Adams/Solver Operators

    4

    Operators of equal precedence are applied from left to right, with the following exceptions for the powerand unary operators:

    A**B**C is interpreted as A**(B**C), not (A**B)**C

    ** binds tighter than unary operators to its left and looser than unary operators to its right. For example:

    -A**-B = -(A**(-B))

    and

    -A**-B**-C = -(A**(-(B**(-C))))

    In some cases parentheses must be used to group scalar and vector quantities such that the expression isnot nonsensical. For example, v*v%v may need to be written as v*(v%v) .

    Vector subexpressions can appear in expressions where the final value is a scalar, and vice versa, forexample:

    VARI ABLE/ 1, FUN=DXYZ( 1, 2) *VXYZ( 1, 2) + TI ME

    where a dot product of two vector measures results in a scalar quantity.

    There are only two contexts in the current Adams language where a vector quantity is expected. Theseare the recently added FXYZ and TXYZ arguments of the VFORCE, VTORQUE and GFORCEstatement which can be used instead of the FX, FY, FZ, TX, TY and TZ arguments to specify force andtorque laws. In all other contexts, the expression must evaluate to a scalar quantity.

  • 8/15/2019 Solver c Plus Statements

    5/383

    5Welcome to the C++ Version of Adams/Solver C++ Statements

    C++ StatementsYou use statements to define the elements of your model, request output from the simulation, and,optionally, set analysis parameters to use during the simulation. Note that you can use the C++ versionof Adams/Solver C++ Commands to set analysis parameters, which is often a better approach. Below arethe Adams/Solver (C++) statements grouped according to their function. Detailed information on eachstatements can be found by following the links:

    Type of Statement Statement Name

    Dataset delimiter ENDTITLE

    Inertia and material data PARTFLEX_BODYPOINT_MASS

    Geometry GRAPHICSMARKER

    Constraints COUPLERCVCVGEARGCONJOINTJPRIMMOTIONPTCV

    Forces ACCGRAVBEAMBUSHINGCONTACTFIELDFRICTIONGFORCEMFORCENFORCESFORCESPRINGDAMPERVFORCEVTORQUE

    Generic systems modeling DIFFGSE

    LSETFSISOVARIABLE

    http://solver_c_plus_commands.pdf/http://solver_c_plus_commands.pdf/

  • 8/15/2019 Solver c Plus Statements

    6/383

    Adams/Solver C++ Statements

    6

    Reference data ARRAYCURVEMATRIXPINPUTPOUTPUTSPLINESTRINGSURFACE

    Analysis parameters DEBUGENVIRONMENTEQUILIBRIUMICINTEGRATORKINEMATICSLSOLVERPREFERENCESSENSOR

    UNITSOutput FEMDATA

    LIST/NOLIST(Not yet supported)MREQUEST(Not yet supported)OUTPUTREQUESTRESULTS

    Unsupported statements UCONLIST/NOLIST

    Type of Statement Statement Name

  • 8/15/2019 Solver c Plus Statements

    7/383

    7 ACCGRAVC++ Statements

    ACCGRAV

    The ACCGRAV statement specifies the magnitude and direction of the acceleration of gravity. Inconjunction with the part masses, the gravitational field defines a body force at the center of gravity ineach part.

    Format

    Arguments

    ExamplesACCGRAV/ J GRAV=- 386. 088

    This ACCGRAV statement defines the gravitational constant of 386.088, acting along the y-axis of theground coordinate system (GCS) in the negative direction.

    See other Forces available.

    IGRAV Defines the x component of gravitational acceleration with respect to the ground coordinatesystem.

    Default: 0JGRAV Defines the y component of gravitational acceleration with respect to the ground coordinate

    system.

    Default: 0KGRAV Defines the z component of gravitational acceleration with respect to the ground coordinate

    system.

    Default: 0

  • 8/15/2019 Solver c Plus Statements

    8/383

    Adams/Solver C++ Statements

    8

    ARRAYThe ARRAY statement defines a list of input variables (U), state variables (X), output variables (Y), orinitial conditions (IC) associated with system modeling elements such as GSE, LSE, and TFSISO (seeGSE, LSE and TFSISO). IC ARRAY's or ARRAY's without a type can also be used to define a list ofconstants. These values may be accessed in function expressions or user-written subroutines.

    Format

    Arguments

    IC Creates a one-dimensional array of real numbers that can be accessed in user-writtensubroutines. You can use IC to designate an initial conditions array for an LSE or GSE.In that case, you should ensure that t he SIZE is the same as the X (state variable) arrayof the associated LSE or GSE.

    NUMBERS=r1[,r2,...,]

    Allows you to enter a one-dimensional array of real numbers when using the IC array.

    SIZE=i Allows you to define the size of the array. In cases where Adams/Solver (C++)calculates the SIZE differently from the SIZE that you supply, Adams/Solver (C++)returns an error or warning message.

    VARIABLES=id1[,id2,...]

    Defines a list of identifiers of VARIABLE statements to group in an array. TheVARIABLES argument is used with only an input array (U).

    Range: Any valid VARIABLE id X Designates an ARRAY statement to be the state variable array for a systems modeling

    element, LSE, GSE, or TFSISO. To use these arrays, you must reference the ARRAYstatement as the state variable array in a system element statement. You can use a singleX array with only a single systems element. When you choose X, the only otherargument available is SIZE. When you don’t specify SIZE, the associated systemselement automatically sets the size.

  • 8/15/2019 Solver c Plus Statements

    9/383

    9 ARRAYC++ Statements

    Extended Definition

    The ARRAY statement defines a list of input variables (U), state variables (X), output variables (Y), andinitial conditions (IC) associated with system modeling elements such as GSE , LSE , and TFSISO .ARRAY may also be used to define a list of constants. These values may be accessed in functionexpressions or user-written subroutines.

    There are three basic variations of the ARRAY statement:• The X and Y arrays designate the state and output variable arrays for a systems element.

    Adams/Solver (C++) computes these values during a simulation.• The U array defines an array of inputs for a systems element. Adams/Solver (C++) computes

    these values from the specified VARIABLE statements.• The IC array defines an array of constants used as initial conditions.

    For the X and Y arrays, the corresponding systems modeling element automatically determines the sizeof the array and checks it against the ARRAY statement’s SIZE value (if given).

    The IC and SIZE parameters are optional. Adams/Solver (C++) determines the actual size of the arrayduring input-file parsing as it counts the NUMBERS argument. However, if you provide a value forSIZE, Adams/Solver (C++) checks the count for consistency.

    For X and Y arrays, you should reference the array as the state variable array or output variable array ofone of the system elements in the dataset, either LSE, GSE, or TFSISO. U and IC arrays may exist

    independently. Grouping VARIABLES in a U array does not offer any computational advantage,although it might have a convenience value.

    The SIZE argument, if used, should match the number of entries in the VARIABLES or NUMBERSarguments or the size needed for the associated element. Adams/Solver (C++) provides the SIZEargument mainly for your convenience in dataset creation. For LSE arrays, the X size is the rowdimension of the A and B matrix, and the Y size is the row dimension of the C and D matrix. For TFSISOarrays, the transformation from the transfer function form to canonical state space form determines the

    X size; the size of Y and U is always one. For GSE arrays, X is size NS as defined in the matching GSEstatement and Y is size NO, as defined in the same GSE statement.

    U Creates an array that groups together a set of VARIABLES, normally to define theinputs for a systems element, either LSE, GSE, or TFSISO. When you choose U, SIZE

    and VARIABLES are the only other available arguments.Y Designates an ARRAY statement as the output array for a systems element, either LSE,

    GSE, or TFSISO. To use these arrays, you must reference the ARRAY statement as theoutput array in the system element definition in the dataset. When you choose Y, SIZEis the only other argument available. You can use a single Y array with only a singlesystems element. The SIZE value, if supplied, must be consistent with the associatedsystems element. When you don’t specify SIZE, the associated systems elementautomatically sets it.

  • 8/15/2019 Solver c Plus Statements

    10/383

    Adams/Solver C++ Statements

    10

    Both function expressions and user-written subroutines can access the array values. Function expressionsuse the function ARYVAL (id, nseq ) (see ARYVAL ) to access the values. The id specifies the identifierof the ARRAY, and nseq specifies the position of the desired value in the ARRAY statement. To accessall the elements of an array from a user written subroutine, you should call the subroutine SYSARY (seethe SYSARY subroutine). To access one element of an ARRAY in a subroutine, you should call thesubroutine SYSFNC (see the SYSFNC subroutine).

    Examples

    The following are three simple examples of the ARRAY statement.

    ARRAY/ 1, XARRAY/ 2, U, VARI ABLES=2

    ARRAY/ 3, I C, NUMBERS= 0. 0, 0. 0

    See other Reference data available.

    http://solver_c_plus_functions.pdf/http://solver_subroutines.pdf/http://solver_subroutines.pdf/http://solver_c_plus_functions.pdf/http://solver_subroutines.pdf/http://solver_subroutines.pdf/

  • 8/15/2019 Solver c Plus Statements

    11/383

    11BEAMC++ Statements

    BEAMThe BEAM statement defines a massless elastic beam with a uniform cross section. The beam transmitsforces and torques between two markers in accordance with either linear Timoshenko beam theory or thenon-linear Euler-Bernoulli theory.

    By default, the linear Timoshenko beam theory is used. To use the geometrically non-linear model Euler-Bernoulli, set the environment variable MSC_ADAMS_ SOLVER_ BEAM_MODEL to NONLI NEAR. Athird beam model can be used by setting the said environment variable to STRI NG. In that case, asimplified geometrically non-linear model is used which can speed up the simulation time (see the stringmodel in reference [2] ).

    Format

    Arguments

    AREA=r Specifies the uniform area of the beam cross section. The centroidal axis must be orthogonalto this cross section.

    ASY=r Specifies the correction factor (that is, the shear area ratio) for shear deflection in the ydirection for Timoshenko beams.

    where Qy is the first moment of cross-sectional area to be sheared by a force in the zdirection, and Iz is the cross section dimension in the z direction.

    If you want to neglect the deflection due to y-direction shear, ASY does not need to beincluded in a BEAM statement.

    Defaults: 0

    ASY A

    I y2

    ----Q yl z------ 2 Ad

    A

    =

    d l

  • 8/15/2019 Solver c Plus Statements

    12/383

    Adams/Solver C++ Statements

    12

    ASZ=r Specifies the correction factor (that is, the shear area ratio) for shear deflection in the zdirection for Timoshenko beams.

    where Qz is the first moment of cross-sectional area to be sheared by a force in the ydirection, and Iy is the cross section dimension in the y direction.

    If you want to neglect the deflection due to z-direction shear, ASZ does not need to be

    included in a BEAM statement.Defaults: 0

    Commonly encountered values for the shear area ratio are:

    See also “Roark’s Formulas for Stress and Strain,” Young, Warren C., Sixth Edition, page201. New York:McGraw Hill, 1989.

    CMATRIX=r1,...,r21 Establishes a six-by-six damping matrix for the beam. Because this matrix is symmetric,

    only one-half of it needs to be specified. The following matrix shows the values to input:

    Enter the elements by columns from top to bottom, then by rows from left to right. If you donot use either CMATRIX or CRATIO, CMATRIX defaults to a matrix with thirty-six zeroentries; that is, r 1 through r 21 each default to zero.

    CRATIO=R Establishes a ratio for calculating the damping matrix for the beam. Adams/Solver multipliesthe stiffness matrix by the value of CRATIO to obtain the damping matrix.

    Defaults: 0

    ASZ A I z

    2---- Q z

    l y------

    2 Ad A

    =

    Cross-section: (Shear area ratio)

    Solid rectangular (6/5)

    Solid circular (10/9)Thin wall hollow circular (2)

    13BEAM

  • 8/15/2019 Solver c Plus Statements

    13/383

    13BEAMC++ Statements

    Extended DefinitionThe figure below shows the two markers (I and J) that define the extremities of the beam and indicatesthe twelve forces (s1 to s12) it produces.

    The x-axis of the J marker defines the centroidal axis of the beam. The y-axis and z-axis of the J markerare the principal axes of the cross section. They are perpendicular to the x-axis and to each other. When

    the beam is in an undeflected position, the I marker has the same angular orientation as the J marker, andthe I marker lies on the x-axis of the J marker a distance LENGTH away.

    EMODULUS=r Defines Young’s modulus of elasticity for the beam material.GMODULUS=r Defines the shear modulus of elasticity for the beam material.I=id, J=id Specifies the two markers between which to define a beam. The J marker establishes the

    direction of the force components.IXX=r Denotes the torsional constant. This is sometimes referred to as the torsional shape factor or

    torsional stiffness coefficient . It is expressed as unit length to the fourth power. For a solidcircular section, Ixx is identical to the polar moment of inertia where r is theradius of the cross-section. For thin-walled sections, open sections, and noncircular sections,you should consult a handbook.

    IYY=r,IZZ=r Denote the area moments of inertia about the neutral axes of the beam cross sectional areas(y-y and z-z). These are sometimes referred to as the second moment of area about a givenaxis. They are expressed as unit length to the fourth power. For a solid circular section,

    Iyy=Izz= where r is the radius of the cross-section. For thin-walled sections, opensections, and noncircular sections, you should consult a handbook.

    LENGTH=r Defines the underformed length of the beam along the x-axis of the J marker.

    J r 4

    2--------=

    r 4

    4--------

    Adams/Solver14

  • 8/15/2019 Solver c Plus Statements

    14/383

    Adams/Solver C++ Statements

    14

    The beam statement applies the following forces to the I marker in response to the relative motion of theI marker with respect to the J marker:

    • Axial forces (s1 and s7)• Bending moments about the y-axis and z-axis (s5, s6, s11, and s12)• Twisting moments about the x-axis (s4 and s10)• Shear forces (s2, s3, s8, and s9)

    Linear theory

    When using the Timoshenko beam theory, Adams/Solver (C++) uses a linear translational and linearrotational action-reaction force between the two markers I and J. The forces the beam produces arelinearly dependent on the displacements, rotations, and corresponding velocities between the markers atits endpoints.

    The following constitutive equations define how Adams/Solver applies a force and a torque to the Imarker depending on the displacement rotation and velocity of the I marker relative to the J marker.

    where:

    • Fx, Fy, and Fz are the measure numbers of the translational force components in the coordinatesystem of the J marker.

    • x, y, and z are the translational displacements of the I marker with respect to the J markermeasured in the coordinate system of the J marker.

    F xF yF zT xT y

    T z

    K 11 0 0 0 0 00 K 22 0 0 0 K 260 0 K 33 0 K 35 0

    0 0 0 K 44 0 0

    0 0 K 53 0 K 55 0

    0 K 62 0 0 0 K 66

    x L– y zabc

    –=

    c11 c21 c31 c41 c51 c61c21 c22 c32 c42 c52 c62c31 c32 c33 c43 c53 c63c

    41c

    42c

    43c

    44c

    54c

    64c51 c52 c53 c54 c55 c65c61 c62 c63 c64 c65 c66

    V xV yV z

    x y

    z

    15BEAM

  • 8/15/2019 Solver c Plus Statements

    15/383

    15BEAMC++ Statements

    • Vx, Vy, and Vz are the time derivatives of x, y, and z, respectively.

    • Tx, Ty, and Tz are the rotational force components in the coordinate system of the J marker.

    • a, b, and c are the relative rotational displacements of the I marker with respect to the J marker asexpressed in the x-, y-, and z-axis, respectively, of the J marker.

    • , , and are the components of the angular velocity of the I marker with respect to the Jmarker, as seen by the J marker and measured in the J marker coordinate system.

    • Cij are the entries of the damping matrix either specified by the CMATRIX option or computed by using the CRATIO option. All Cij entries default to zero.

    Note that both matrices, Cij and K ij, are symmetric, that is, Cij=C ji and K ij=K ji. You define the twenty-one unique damping coefficients when the BEAM statement is written. Adams/Solver (C++) defineseach K ij as follows:

    Adams/Solver (C++) applies an equilibrating force and torque at the J marker, as defined by the followingequations:

    F j = - F

    iT j = - Ti - L x Fi

    L is the instantaneous vector from the J marker to the I marker. While the force at the J marker is equaland opposite to the force at the I marker, the torque is usually not equal and opposite, because of vector L.

    The BEAM statement implements a force in the same way the FIELD statement does, but the BEAMstatement requires you to input only the values of the beam’s physical properties, which Adams/Solver(C++) uses to calculate the matrix entries.

    x y z

    Adams/Solver 16

  • 8/15/2019 Solver c Plus Statements

    16/383

    C++ Statements

    Non linear theory.

    When using the Euler-Bernoulli formulation, Adams/Solver (C++) uses the following constitutive

    equations to apply a force and a torque to the I marker.

    Where corresponds to the Timoshenko's constitutive equations shown above, and N is the axialforce on the beam computed as:

    The term d corresponds to the axial viscous forces if any. See reference [2] for more information.

    The linear Euler-Bernoulli formulation is the default model for the BEAM statement. The nonlinearformulation can be used when one or more BEAM elements in the model are subject to axial forces. Thiscan be done by setting the environment variable MSC_ADAMS_ SOLVER_ BEAM_MODEL toNONLI NEAR, which will use the nonlinear formulation for all BEAM elements in the model.

    c

    b

    a

    z

    y

    L x

    / L /

    / L /

    / L /

    / L /

    N F

    T

    T

    T

    F

    F

    F

    o

    z y

    x

    z

    y

    x

    15200010100152010100000000010105600

    101000560000000

    }F { o

    d ) L x(K N 11

    Tip: • A FIELD statement can be used instead of a BEAM statement to define a beamwith characteristics unlike those the BEAM statement assumes. For example, aFIELD statement should be used to define a beam with a nonuniform cross sectionor a beam with nonlinear material characteristics.

    • The beam element in Adams/Solver is similar to those in most finite element programs. That is, the stiffness matrix that Adams/Solver (C++) computes is the

    standard beam element stiffness matrix.• The USEXP option on the MARKER statement may make it easier to direct the x-

    axis of the J marker.• Generally, it is desirable to define the x-axis of the Adams/Solver (C++) beam on

    the shear center axis of the beam being modeled.

  • 8/15/2019 Solver c Plus Statements

    17/383

    Adams/Solver 18

  • 8/15/2019 Solver c Plus Statements

    18/383

    C++ Statements

    Examples

    A cantilevered stainless steel beam is to be modeled with a circular cross section that has the loading

    shown in the figure below.

    A weight of 17.4533 lbf at the free end of the beam with a 100-inch axial offset in the negative y directioncauses torsion to the beam as shown in the figure above. The following statement defines this beam:

    BEAM/ 0201, I =0010, J =0020, LENGTH=100, I XX=100, I YY=50, I ZZ=50, AREA=25. 0663

    , ASY=1. 11, ASZ=1. 11, EMOD=28E6, GMOD=10. 6E6,, CRATI O=0. 0001

    The beam lies between Marker 0010 and Marker 0020. The length of the beam is 100 inches; its torsionalconstant is 100 inch4; its principal area moments of inertia about the y-axis is 50 inch4, and about the z-axis is 50 inch4; its cross-sectional area is 25.0663 inch2; its shear area ratio in the y direction is 1.11; itsshear area ratio in the z direction is 1.11; its modulus of elasticity is 28E6 psi; its shear modulus is 10.6 psi; and its damping ratio relative to the stiffness matrix Adams/Solver (C++) calculates is 0.0001. Notethat the beam ends belong to different parts.

    References1. Roark's Formulas for Stress and Strain, Young, Warren C., Sixth Edition, page 201. New York:

    McGraw Hill, 1989.2. J.S. Przemieniecki, Theory of Matrix Structural Analysis. New York: McGraw-Hill Book

    Company, 1968

    See other Forces available.

    19BUSHING

  • 8/15/2019 Solver c Plus Statements

    19/383

    C++ Statements

    BUSHINGThe BUSHING statement defines a massless bushing with linear stiffness and damping properties.

    Format

    Arguments

    C=r1,r2,r3 Specifies three viscous damping coefficients for the force transferred by the bushing. The three coefficients multiply the relative translational velocitycomponents of the I marker with respect to the J marker as seen by the J markerand along the x-, y-, and z-axis of the J marker. The force due to damping is zerowhen there is no relative translational velocity between the two markers. C must bein units of force-time per unit displacement.

    Default: 0,0,0Range:

    CT=r1,r2,r3 Specifies three viscous damping coefficients for the torque transferred by the bushing. The three coefficients multiply the components of the relative angularvelocity of the part containing the I marker with respect to the part containing theJ marker as expressed in the x-, y-, and z-axis of the J marker. The torque due todamping is zero when there is no relative angular velocity between the two

    markers. CT must be in units torque-time per radian.Default: 0,0,0

    Range:FORCE=r1,r2,r3 Specifies three constant force (preload) values. Constant values indicate the force

    components along the x-, y-, and z-axis of the J marker when both the relativedisplacement and the relative velocity of the I and J markers are zero.

    Default: 0,0,0I=id, J=id Specifies the identifiers of the two markers between which the bushing is placed.

    C 0

    CT 0

    Adams/Solver C++ Statements

    20

  • 8/15/2019 Solver c Plus Statements

    20/383

    C++ Statements

    Extended Definition

    The BUSHING statement defines a massless bushing with linear stiffness and damping properties. TheBUSHING statement applies a force and torque to two parts. You specify a marker on each part for forceand/or torque application.

    Each force consists of three components in the coordinate system of the J marker, one in the x-axisdirection, one in the y-axis direction, and one in the z-axis direction.

    Likewise each torque consists of three components in the coordinate system of the J marker: one aboutthe x-axis, one about the y-axis, and one about the z-axis. The force is linearly dependent upon therelative displacement and the relative velocity of the two markers. The torque is dependent upon therelative angle of rotation and the relative rotational velocity of the parts containing the specified markers.

    K=r1,r2,r3 Specifies three stiffness coefficients for the force transferred by the bushing. Thethree coefficients multiply the three translational displacement components of the

    I marker with respect to the J marker as expressed in the x-, y-, and z-axis of the Jmarker. K must be specified in terms of force per unit of deformation.

    Default: 0,0,0

    Range:KT=r1,r2,r3 Specifies three stiffness coefficients for the torque transferred by the bushing. The

    three coefficients multiply the three rotational displacement components of the Imarker axes relative to the J marker axes as expressed in the x-, y-, and z-axis ofthe J marker. KT must be in units of torque per radian.

    Default: 0,0,0

    Range:TORQUE=r1,r2,r3 Specifies three constant torque (preload) values. Constant values indicate the

    torque components about the x-, y-, and z-axis of the J marker when both therelative displacement and the relative velocity of the I and the J markers are zero.

    Default: 0,0,0

    K 0

    KT 0

    21BUSHINGC++ Statements

  • 8/15/2019 Solver c Plus Statements

    21/383

    C++ Statements

    A BUSHING statement has the same constitutive relation form as a FIELD statement. The primarydifference between the two statements is that certain coefficients (K ij and Cij, where i j) are zero for

    the BUSHING statement. Only the diagonal coefficients (K ii and Cii) are defined for a BUSHING.

    Fx, Fy, and Fz are the measure numbers of the translational force components in the coordinate system ofthe J marker. The terms x, y, and z are the translational displacements of the I marker with respect to theJ marker measured in the coordinate system of the J marker. The terms Vx, Vy, and Vz are the timederivatives of x, y, and z, respectively. The terms F1, F2, and F3 represent the measure numbers of anyconstant preload force components in the coordinate system of the J marker.

    Tx, Ty, and Tz are the rotational force components in the coordinate system of the J marker. The terms a, b, and c are the relative rotational displacements of the I marker with respect to the J marker as expressed

    in the x-, y-, and z-axis, respectively, of the J marker. The terms , , and are the angular velocitycomponents of the I marker with respect to the J marker, measured in the coordinate system of the Jmarker. The terms T1, T2, and T3 are the measure numbers of any constant torque in the coordinatesystem of the J marker.

    Adams/Solver (C++) applies an equilibrating force and torque to the J marker, as defined by thefollowing equations:

    F j =- F iT j = - T i - x F i

    F xF yF zT

    xT yT z

    K 11 0 0 0 0 0

    0 K 22 0 0 0 0

    0 0 K 33 0 0 0

    0 0 0 K 44

    0 0

    0 0 0 0 K 55 0

    0 0 0 0 0 K 66

    x y zabc

    –=

    c11 0 0 0 0 0

    0 c22 0 0 0 0

    0 0 c33 0 0 0

    0 0 0 c44 0 0

    0 0 0 0 c55 0

    0 0 0 0 0 c66

    V xV yV z

    x

    y

    z

    F 1F 2F 3T 1T 2T 3

    +

    x y z

    Adams/Solver C++ Statements

    22

  • 8/15/2019 Solver c Plus Statements

    22/383

    is the instantaneous deformation vector from the J marker to the I marker. While the force at the Jmarker is equal and opposite to the force at the I marker, the torque at the J marker is usually not equal

    to the torque at the I marker because of the deformation.The BUSHING only models linear bushings . The GFORCE or FIELD (with a FIESUB) may be usedto model nonlinear bushings.

    ExamplesBUSHI NG/ 1022, I =10, J =22, K=5000, 5000, 2000, C=5, 5, 2, KT=50000, 50000, 0, CT=50, 50, 0

    This BUSHING statement describes a bushing with translational spring rates of 5000 units in both the x-axis and the y-axis directions of Marker 22 and of 2000 units in the z-axis direction of Marker 22. Thecorresponding damping rates for the force are 5 units in both the x- and y-axis directions of Marker 22and 2 units in the z-axis direction of Marker 22. The rotational spring rates are 50000 units about the x-and y-axis of Marker 22. The corresponding damping rates for the torque are 50 units in both the x- andy-axis directions of Marker 22 and zero units in the z-axis direction of Marker 22. Since the z componentsof KT and CT are zero, the I marker can rotate about the z-axis of the J marker without generating anytorque. There are no FORCE or TORQUE values because there is no initial load (preload) associated withthe input positions of the markers.

    See other Forces available.

    Caution: For the rotational constitutive equations to be accurate, at least two of the rotations (a, b,c) must be small. That is, two of the three values must remain smaller than 10 degrees. Inaddition, if a becomes greater than 90 degrees, b becomes erratic. If b becomes greater than90 degrees, a becomes erratic. Only c can become greater than 90 degrees without causingconvergence problems. For these reasons, it is best to define your bushing such that anglesa and b (not a and c and not b and c) remain small.

    23CLEARANCEC++ Statements

  • 8/15/2019 Solver c Plus Statements

    23/383

    CLEARANCEThe CLEARANCE statement defines a measure of the distance between two or more geometries or

    FLEX_BODIES.

    FormatCLEARANCE/ i d, I GEOM=i d1[ , . . . , i dn]

    J GEOM=i d2[ , . . . , i dn]

    I FLEX=i d1[ , . . . . , i dn] [ , I REGI ON=i d1[ , . . . , i dn] , [ I EXCLUDE=c1[ : . . . : cn] ] J FLEX=i d2[ . . . , i dn] [ , J REGI ON=i d2[ , . . . , i dn] , [ J EXCLUDE=c2[ : . . . : cn] ]

    [ ] Sel ect one i t em[ [ ] ] Opt i onal l y sel ec t t he i t em

    Arguments

    Extended DefinitionThe clearance statement defines a measure of the distance between two or more geometries orFLEX_BODIES.

    The results are written to the XRF results file as XYZ location on the I geometry, XYZ location on the Jgeometry, the scalar distance between the two points, the id of the I geometry, and the id of J geometry.For FLEX_BODIES it is possible to include or exclude a subset of nodes using the REGION andEXCLUDE lists.

    IGEOM = id List of geometries id'sJGEOM = id List of geometries id's

    IFLEX = id List of FLEX_BODY id'sJFLEX = id List of FLEX_BODY id'sIREGION/JREGION = id List matrix id's, the matrix is the list of node id's to include or exclude.

    Note : Not specifying the IREGION or JREGION will automaticallyinclude all nodes by default.

    IEXCLUDE/JEXCLUDE = id List of booleans to indicate if the nodes indicated by the matrix are to be included or excluded. The default is false so the nodes are included be default.

    THRESHOLD = distance If the clearance between the bounding box of each geometry is graterthan the given THRESHOLD then the clearance between the bounding boxes is given. The default value is zero which will alwayscalculate the clearance between the geometries.

    Adams/Solver C++ Statements

    24

  • 8/15/2019 Solver c Plus Statements

    24/383

    The clearance or one of its components may be referenced in an expression using the following 1D and3D functions.

    DCLEAR IVCLEARZ JACCCLEARX

    VCLEAR IACCCLEARX JACCCLEARY

    ACCCLEAR IACCCLEARY JACCCLEARZ

    ICLEAR IACCCLEARZ IDCLEAR

    JCLEAR JDCLEARX IVCLEAR

    IDCLEARX JDCLEARY IACCCLEARIDCLEARY JDCLEARZ JDCLEAR

    IDCLEARZ JVCLEARX JVCLEAR

    IVCLEARX JVCLEARY JACCCLEAR

    IVCLEARY JVCLEARZ

    ACCCLEAR(cid [,l]) Relative acceleration of the I and J clearance pointsDCLEAR(cid) Clearance distanceIACCCLEAR(cid [,k] [,l]) X Acceleration of the I clearance pointIACCCLEARX(cid [,k] [,l]) X Acceleration of the I clearance pointIACCCLEARY(cid [,k] [,l]) Y Acceleration of the I clearance point

    IACCCLEARZ(cid [,k] [,l]) Z Acceleration of the I clearance pointICLEAR(cid) Adams id of the I graphic/flex body used in the clearance calculationIDCLEAR(cid [,l]) Y Position of the I clearance pointIDCLEARX(cid [,l] ) X Position of the I clearance pointIDCLEARY(cid [,l]) Y Position of the I clearance pointIDCLEARZ(cid [,l]) Z Position of the I clearance point

    IVCLEAR(cid [,k] [,l] ) X Velocity of the I clearance pointIVCLEARX(cid [,k] [,l] ) X Velocity of the I clearance pointIVCLEARY(cid [,k] [,l]) Y Velocity of the I clearance pointIVCLEARZ(cid [,k] [,l]) Z Velocity of the I clearance pointJACCCLEAR(cid [,k] [,l]) X Acceleration of the I clearance pointJACCCLEARX(cid [,k] [,l]) X Acceleration of the J clearance point

    JACCCLEARY(cid [,k] [,l]) Y Acceleration of the J clearance pointJACCCLEARZ(cid [,k] [,l]) Z Acceleration of the J clearance point

    25CLEARANCEC++ Statements

  • 8/15/2019 Solver c Plus Statements

    25/383

    Examples

    CLEARANCE/5, IGEOM=2, JGEOM=4

    CLEARANCE/7, IFLEX=3,9, JGEOM=4, IREGION=0,2, IEXCLUDE=F:T

    JCLEAR(cid) Adams id of the J graphic/flex body used in the clearance calculationJDCLEAR(cid [,l]) Y Position of the I clearance point

    JDCLEARX(cid [,l] ) X Position of the J clearance pointJDCLEARY(cid [,l]) Y Position of the J clearance pointJDCLEARZ(cid [,l]) Z Position of the J clearance pointJVCLEAR(cid [,k] [,l] ) X Velocity of the I clearance pointJVCLEARX(cid [,k] [,l] ) X Velocity of the J clearance pointJVCLEARY(cid [,k] [,l]) Y Velocity of the J clearance point

    JVCLEARZ(cid [,k] [,l]) Z Velocity of the J clearance pointVCLEAR(cid [,l]) Relative velocity of the I and J clearance pointsWhere:cid Is the Adams id of the clearance to measurek The marker in whose coordinate is being calculated. Set k=0 if you the

    results to be calculated in the global coordinate system.

    l The reference frame in which the derivative of the vector is taken. Setl=0 if you want the time derivative to be taken in the ground referenceframe.

    Adams/Solver C++ Statements

    26

  • 8/15/2019 Solver c Plus Statements

    26/383

    CONTACTThe CONTACT statement lets you define a two- or three-dimensional contact between a pair of

    geometric objects. Adams/Solver (C++) models the contact as a unilateral constraint, that is, as a forcethat has zero value when no penetration exists between the specified geometries, and a force that has a positive value when penetration exists between two geometries.

    The CONTACT statement supports:

    • Multiple contacts• Dynamic friction

    • Contact between three-dimensional solid geometries• Contact between two-dimensional geometries

    It does not support non-solid three-dimensional geometries, such as shells that do not encompass avolume and sheets. It also does not support contact between a two-dimensional and a three-dimensionalgeometry.

    Adams/Solver (C++) has two geometry engines that it uses for three-dimensional contacts. It usesParasolid, a geometry toolkit from EDS/Unigraphics, and RAPID. Currently, RAPID is the default andAdams/Solver (C++) supports version 2.01.

    Adams/Solver understands some geometries as analytical. Whenever possible use analytical geometriesto speed up solution time and realize smoother contact forces. Analytical geometries are created via theGRAPHICS/ statement; following is the list of supported types:

    • Ellipsoid (this includes sphere as a special case)• Cylinder

    • Torus• Frustum• Box

    For two-dimensional contacts, Adams/Solver (C++) uses an internally developed geometry engine.Currently, Adams/Solver (C++) supports Parasolid 14.0. See the Extended Definition for moreinformation.

    The geometry engine is responsible for detecting contact between two geometries, locating the points ofcontact, and calculating the common normal at the contact points.

    27CONTACTC++ Statements

  • 8/15/2019 Solver c Plus Statements

    27/383

    Once the contact kinematics are known, contact forces, which are a function of the contact kinematics,are applied to the intersecting bodies.

    The following table shows the legal combinations of geometry for the CONTACT statement. If you useunsupported geometry combinations, you will receive an error.

    Supported Geometry Combinations

    * FlexBody edges are considered to be curves. They may contact any other 2D geometry.

    Note: You can only define two-dimensional contacts between bodies that are constrained to be inthe same plane. This is usually done with planar or revolute joints or an equivalent set ofconstraints that enforce the planarity.

    Failure to enforce planarity will result in a run-time error, when the bodies go out of planeduring a simulation.

    Arc Circle Curve Point Plane Box Cyl inder Frust um Ell ipso id External FlexBody

    Arc X X X X XCircle X X X X XCurve X X X X X *Point X X X XPlane X X X X X(Sphere

    Only)

    Box X X X X X XCylinder X X X X X XFrustum X X X X X XEllipsoid X X X X X XExternal X X X X X XFlexBody X X X X X X

    Note: You can set the default geometry library. See the PREFERENCES statement.

    Adams/Solver C++ Statements

    28

  • 8/15/2019 Solver c Plus Statements

    28/383

    Format

    CONTACT/id IGEOM=id1[ ,..., idn],

    JGEOM=id2[ ,..., idn],

    IMPACTSTIFFNESS=r ,

    EXPONENT=r ,

    DAMPING=r ,

    DMAX=r ,

    POISSONPENALTY=r ,

    RESTITUTION_COEFFICIENT=r ,

    ,

    COULOMB_FRICTION={On/Off}

    MU_STATIC=r ,

    MU_DYNAMIC=r ,

    STICTION_TRANSITION_VELOCITY=r ,

    FRICTION_TRANSITION_VELOCITY=r ,

    ,

    IFLIP_GEOM=ida,...,idr JFLIP_GEOM=idb,...,ids

    NORMAL_ROUTINE=lib::func

    FRICTION_ROUTINE=lib::func

    NORMAL_FUNCTION=USER(r1 ,[ ,..., r30])

    FRICTION_FUNCTION=USER(r1 ,[ ,..., r30])

    IFLEX=id1,IEDGE=id2,

    JGEOM=id3,

    IFLEX=id1,JEDGE=id2,JFLEX=id3,JEDGE=id4,

    IMP, ACT

    STIFFNESS=r ,

    EXPONENT=r ,

    DAMPING=r ,

    DMAX=r ,

    COULOMB_FRICTION={On/Off}

    MU_STATIC=r ,

    MU_DYNAMIC=r ,

    STICTION_TRANSITION_VELOCITY=r ,

    FRICTION_TRANSITION_VELOCITY=r ,

  • 8/15/2019 Solver c Plus Statements

    29/383

    Adams/Solver C++ Statements

    30

  • 8/15/2019 Solver c Plus Statements

    30/383

    FRICTION_TRANSITION_VELOCITY = r

    Used in the COULOMB_FRICTION model for calculating frictional forcesat the contact locations. Adams/Solver (C++) gradually transitions thecoefficient of friction from MU_STATIC to MU_DYNAMIC as the slipvelocity at the contact point increases. When the slip velocity is equal to thevalue specified for FRICTION_TRANSITION_VELOCITY, the effectivecoefficient of friction is set to MU_DYNAMIC. For more details, seeExtended Definition .

    Note: Small values for FRICTION_TRANSITION_VELOCITY causethe integrator difficulties. You should specify this value as:

    FRICTION_TRANSITION_VELOCITY > 5* ERROR where ERROR is the integration error used for the solution. Its default valueis 1E-3.

    Range:FRICTION_TRANSITION_VELOCITY >STICTION_TRANSITION_VELOCITY > 0

    FRICTION_FUNCTION=USER(r 1[,...,r 30]) Specifies up to 30 user-defined constants to compute the contact friction forcecomponents in a user-defined subroutine, CNFSUB .FRICTION_ROUTINE =library::function

    Specifies a library and a user-written subroutine in that library that calculatesthe contact friction force.

    IEDGE = id ID of an edge on the IFLEX Body. Specifies a single edge. List of IDs is notsupported. IEDGE cannot be used without IFLEX. IFLIP may be used withIEDGE.

    IGEOM = id ID of the GRAPHICS statement that defines the first of two geometric bodies between which a CONTACT is to be modeled. Specifies a list of GRAPHICSIDs. The limit is 32,767. All geometries must belong to the same part.

    JGEOM = id ID of the GRAPHICS statement that defines the second of two geometric bodies between which a CONTACT is to be modeled. Specifies a list ofGRAPHICS IDs. The limit is 32,767. All geometries must belong to the same part.

    IFLEX = id ID of the FLEX_BODY statement that defines the first of two flexible bodies between which a CONTACT is to be modeled. Specifies a single FLEX ID.List of IDs is not supported.

    JEDGE = id ID of an edge on the JFLEX Body. Specifies a single edge. List of IDs is notsupported. JEDGE cannot be used without JFLEX. JFLIP may be used withJEDGE.

    JFLEX = id ID of the _BODY statement that defines the second of two flexible bodies between which a CONTACT is to be modeled. Specifies a single FLEX ID.List of IDs is not supported.

    31CONTACTC++ Statements

    http://solver_subroutines.pdf/http://solver_subroutines.pdf/

  • 8/15/2019 Solver c Plus Statements

    31/383

    IFLIP_GEOMETRY =id1,id2,...,idN

    Specifies a list of GRAPHICS IDs associated with the IGEOM objects to bereversed in direction (flipped). Use IFLIP_GEOMETRY only with two-dimensional geometries (for example, curves, arcs, and circles). You can alsouse IFLIP_GEOMETRY when defining contact between two spheres(ellipsoids with equal axes). For an explanation of how CONTACT calculatestangents and normals, see Extended Definition .

    IMPACT Specifies that the IMPACT method is to be used to model the normal force.For more information, see Extended Definition .

    JFLIP_GEOMETRY =id1,id2,...,idN

    Specifies a list of GRAPHICS IDs associated with the JGEOM objects to bereversed in direction (flipped). Use JFLIP_GEOMETRY only with two-dimensional geometries (for example, curves, arcs, and circles). You can alsouse JFLIP_GEOMETRY when defining contact between two spheres(ellipsoids with equal axes). For an explanation of how CONTACT calculatestangents and normals, see Extended Definition .

    MU_DYNAMIC = r Specifies the coefficient of friction at a contact point when the slip velocity islarger than the FRICTION_TRANSITION_VELOCITY. For information onmaterial types versus commonly used values of the coefficient of the dynamic

    coefficient of friction, see the Material Contact Properties table. Excessivelylarge values of MU_DYNAMIC can cause integration difficulties.

    Range:0 < MU_DYNAMIC < MU_STATICMU_STATIC=r Specifies the coefficient of friction at a contact point when the slip velocity is

    smaller than the STICTION_TRANSITION_VELOCITY. For informationon material types versus commonly used values of the coefficient of staticfriction, see the Material Contact Properties table. Excessively large values of

    MU_STATIC can cause integration difficulties.Range: MU_STATIC > 0

    NORMAL_FUNCTION =USER(r 1,[,...,r 30])

    Specifies up to 30 user-defined constants to compute the contact normal forcecomponents in a user-defined subroutine, CNFSUB .

    NORMAL_ROUTINE =library::function

    Specifies a library and a user-written subroutine in that library that calculatesthe contact normal force.

    PENALTY=r Used when you specify a restitution model for calculating normal forces.PENALTY defines the local stiffness properties between the contactingmaterial. A large value of PENALTY ensures that the penetration, of onegeometry into another, will be small. Large values, however, will causenumerical integration difficulties. A value of 1E6 is appropriate for systemsmodeled in Kg-mm-sec. For more information on how to specify this value,see Extended Definition .

    Range: PENALTY > 0POISSON Specifies that a coefficient of restitution method is to be used to model the

    normal force. For more information, see the Extended Definition .

    Adams/Solver C++ Statements

    32

    http://solver_subroutines.pdf/http://solver_subroutines.pdf/

  • 8/15/2019 Solver c Plus Statements

    32/383

    Extended Definition

    For more information on the key issues about the CONTACT statement, click a link below.

    • Contact Kinematics • Outward Normal Definition • Contact Kinetics • Contact Normal Force Calculation

    • Contact Friction Force Calculation • Contact Friction Torque Calculation

    • Contact Prediction

    RESTITUTION_COEFFICIENT =r

    The coefficient of restitution models the energy loss during contact. A valueof zero specifies a perfectly plastic contact between the two colliding bodies.A value of one specifies a perfectly elastic contact. There is no energy loss.The coefficient of restitution is a function of the two materials that are cominginto contact. For information on material types versus commonly used valuesof the coefficient of restitution, the Material Contact Properties table.

    Range: 0 < RESTITUTION_COEFFICIENT < 1STICTION_TRANSITION_VELOCITY = r

    Used in the COULOMB_FRICTION model for calculating frictional forcesat the contact locations. Adams/Solver (C++) gradually transitions the

    coefficient of friction from MU_DYNAMIC to MU_STATIC as the slipvelocity at the contact point decreases. When the slip velocity is equal to thevalue specified for STICTION_TRANSITION_VELOCITY, the effectivecoefficient of friction is set to MU_STATIC. For more details, see theExtended Definition .

    Note: A small value for STICTION_TRANSITION_VELOCITY causesnumerical integrator difficulties. A general rule of thumb forspecifying this value is:

    STI CTI ON_TRANSI TI ON_VELOCI TY> 5 ERROR

    where ERROR is the accuracy requested of the integrator. Its default value is1E-3.

    Range: 0 < STICTION_TRANSITION_VELOCITY <FRICTION_TRANSITION_VELOCITY

    STIFFNESS=r Specifies a material stiffness that you can use to calculate the normal force forthe impact model.

    In general, the higher the STIFFNESS, the more rigid or hard the bodies incontact are. Also note that the higher the STIFFNESS is, the harder it is for anintegrator to solve through the contact event.

    33CONTACTC++ Statements

  • 8/15/2019 Solver c Plus Statements

    33/383

    • Contacts and Analysis Mode Issues • Flexible Bodies

    Contact Kinematics

    The CONTACT statement lets you define contact between two geometry objects that you specify inGRAPHICS entities in an Adams dataset (see the GRAPHICS statement). Adams/Solver (C++) supports:

    • Both two- and three-dimensional geometry.• Two-dimensional or planar contact between POINT, PLANE, CIRCLE, ARC, and CURVE

    geometries.

    • Three-dimensional contact between CYLINDER, ELLIPSOID, BOX, FRUSTUM, andEXTERNAL geometries.

    Currently, Adams/Solver (C++) does not support contact between two- and three-dimensionalgeometries.

    The CURVE and the EXTERNAL graphics types are the generic geometry modeling entities. These provide you with a way to specify arbitrarily complex two- and three-dimensional geometric shapes,respectively. For both of these entities, the data is in files, which are usually generated by a geometrymodeling system. The CURVE object is specified as a series of x, y, and z points that are a function ofan independent curve parameter. The three-dimensional EXTERNAL object is more complex, and isspecified in the format of the geometry modeling system. Parasolid from Unigraphics is the defaultgeometry modeling system in Adams/Solver (C++). This is a well-recognized, state-of-the-art geometrymodeling system that is used in many CAD systems. Parasolid geometry files typically have theextension xmt_txt.

    During a simulation, the first step is to find out if the contact is occurring between the geometry pairs

    identified in the CONTACT statements. If there is no contact, there is no force. If contact exists, thegeometry modeling system calculates the location of the individual contact points and the outwardnormals to the two geometries at the contact point. Adams/Solver (C++) calculates the normal and slipvelocities of the contact point from this information. Adams/Solver (C++) then uses the velocities tocalculate the contact force at each individual contact.

    Outward Normal Definition

    The calculation of the outward normal for geometry is important because it defines where the materiallies and, therefore, determines the direction of the contact normal force.

    For three-dimensional solids, which are closed by definition, the outward normal is implicit in thegeometry description, and there is no ambiguity in its definition.

    For two-dimensional geometries, especially open curves, there is an ambiguity in calculating the outwardnormal. Adams/Solver (C++) uses the specified geometry to calculate a default outward normal, butallows the user to reverse this direction using the IFLIP_NORMAL and JFLIP_NORMAL arguments.

    Adams/Solver C++ Statements

    34

  • 8/15/2019 Solver c Plus Statements

    34/383

    The figure below shows an open curve with eight points defined in the coordinate system of the referencemarker (RM). The z-axis of the RM marker is directed out of the plane of the paper. This defines the bi-

    normal for the curve, denoted as .

    The curve points are created in the sequence 1 through 8.

    The tangent at point 3 points towards point 4, and is denoted by . The outward normals are defined asfollows:

    IFLIP_NORMAL and JFLIP_NORMAL simply reverse the direction of .

    IFLIP_NORMAL and JFLIP_NORMAL only apply when a single ID is specified in IGEOM andJGEOM. When lists of geometries are specified by IGEOM and JGEOM, use IFLIP_GEOMETRY andJFLIP_GEOMETRY to flip normals.

    Contact Kinetics

    Two major types of contact are:

    • Intermittent contact - Is characterized by contact for short periods of time. It is also known asimpulsive contact. Two geometries approach each other, undergo a collision, and separate as aresult of the contact. The collision results in the generation of an impulse, that affects themomentum of the colliding bodies. Adams/Solver (C++) develops an estimate of the contactforce by modeling the local deformation behavior of the contacting geometries.Energy loss during the collision is usually modeled as a damping force that is specified with adamping coefficient or a coefficient of restitution.Intermittent contact is characterized by two distinct phases. The first is compression, where the bodies continue to approach each other even after contact occurs. The kinetic energy of the bodies is converted to potential and dissipation energy of the compressing contact material.When the entire kinetic energy is transformed, the potential energy stored in the material

    reverses the motion of the contacting bodies. Potential energy is transformed again to dissipationenergy and kinetic energy. This is known as the decompression phase. It is important to note thatenergy losses due to dissipation occur in both phases.

    b

    t

    n̂ t ̂ b=

    n

    35CONTACTC++ Statements

  • 8/15/2019 Solver c Plus Statements

    35/383

    • Persistent contact - Is characterized by contact for relatively long periods of time. Externalforces acting between the two bodies serve to maintain continuous contact. Persistent contact ismodeled as a nonlinear spring damper, the stiffness modeling the elasticity of the surfaces of

    contact, and the damping modeling the dissipation of energy. Two bodies are said to be in persistent contact when the separation velocity, after a collision event, is close to zero. The bodies, therefore, cannot separate after the contact.

    Contact forces are calculated at each individual contact point. Individual contributions are summed up tocompute the net response of the system to the contact event.

    Contact Normal Force Calculation

    Two models for normal force calculations are available in Adams/Solver (C++):• IMPACT function model• Coefficient of restitution or the POISSON model

    Both force models result from a penalty regularization of the normal contact constraints. Penaltyregularization is a modeling technique in mechanics, in which a constraint is enforced mathematically byapplying forces along the gradient of the constraint. The force magnitude is a function of the constraint

    violation.Contact between rigid bodies theoretically requires that the two bodies not penetrate each other. This can

    be expressed as a unilateral (inequality) constraint. The contact force is the force associated withenforcing this constraint. Handling these auxiliary constraint conditions is usually accomplished in oneof two ways, either through introduction of Lagrange multipliers or by penalty regularization.

    For contact problems, the latter technique has the advantage of simplicity; no additional equations orvariables are introduced. This is particularly useful when treating intermittent contact and algorithmically

    managing active and inactive conditions associated with unilateral constraints. Additionally, a penaltyformulation is easily interpreted from a physical standpoint. For example, the magnitude of the contactreaction force is equal to the product of material stiffness and penetration between contacting bodies,similar to a spring force. For these reasons, Adams/Solver (C++) uses a penalty regularization to enforceall contact constraints. The disadvantage of the penalty regularization, however, is that you areresponsible for setting an appropriate penalty parameter, that is, the material stiffness. Furthermore, alarge value for the material stiffness or penalty parameter can cause integration difficulties.

    Before presenting the contact normal force models in Adams/Solver (C++), it is helpful to clearly definethe contact constraints and associated kinematic and kinetic quantities. First, impenetrability of twoapproaching bodies is measured with a gap function g, where a positive value of g indicates penetration.

    Next, we denote the normal contact force magnitude as Fn, where a positive value indicates a separation

    Adams/Solver C++ Statements

    36

  • 8/15/2019 Solver c Plus Statements

    36/383

    force between the contacting bodies. With this notation in hand, the auxiliary contact constraints aredefined as:

    The first three equations reflect:• The impenetrability constraint• Separating, normal force constraint• Requirement that the normal force be nonzero only when contact occurs.

    The fourth condition is called the persistency condition and it specifies that the normal force is nonzeroonly when the rate of separation between the two bodies is zero. The last constraint is particularly

    important when you are interested in energy conservation or energy dissipation.You obtain the IMPACT force model by replacing the first three auxiliary contact conditions with thefollowing expression:

    where k (stiffness) is a scalar penalty parameter. The penalization becomes exact as k approaches infinity, but otherwise allows small violation of the impenetrability constraint. It is important to note that ill

    conditioning of the governing equations, and ultimately an integrator failure, will result as the stiffness becomes excessively large. Therefore, you must appropriately select k while preserving the stability ofthe solution.

    You can also approximate the compliance of a body by correlating k to the bodies material and geometric parameters; however, in doing so, you should recall the earlier remark concerning ill conditioning. In aneffort to incorporate general material constitutive relationships for the contacting bodies, as well asfacilitate time integration, Adams/Solver (C++) augments the previous expression with nonlineardisplacement-dependent, viscous damping terms. The general form of the IMPACT force function is thengiven by:

    where:

    • g represents the penetration of one geometry into another.

    g 0F n 0

    F n g 0=

    F ndgdt ------ 0=

    F n k *(g**e)=

  • 8/15/2019 Solver c Plus Statements

    37/383

    Adams/Solver C++ Statements

    38

  • 8/15/2019 Solver c Plus Statements

    38/383

    In this simple model:

    • (-vs) = s

    • (vs) = - s

    • (0) = 0

    • (-vd ) = d

    • (vd ) = - d

    • (v) = -sign(v). d for |v| >vd

    • (v) = -step(|v|,vd , d,vs, s) . sign(v) for vs

  • 8/15/2019 Solver c Plus Statements

    39/383

    • vd : FRICTION_TRANSITION_VELOCITY

    • s: MU_STATIC

    • d : MU_DYNAMIC

    Contact Friction Torque Calculation

    If Adams/Solver detects an angular velocity about the contact normal axis, it will apply a torque proportional to the friction force. The reason for this is that the contact friction force, by itself, cannotretard relative rotation between bodies; it can only retard relative translation.

    The magnitude of the contact friction torque is given by the formula:

    Where R is the radius of the contact area (which is assumed to be circular). The coefficient comes from

    Marks' Standard Handbook for Mechanical Engineers .

    Contact Prediction

    Contact is fundamentally a discontinuous event. When two geometries come into contact:

    • A large normal force or an impulse is generated.• The velocities of the bodies change sign.• The accelerations are almost discontinuous, and have a large spike. This spike represents the

    impulse that was generated due to the contact.

    The bodies usually separate because of the contact forces or impulses. Numerical integrators assume thatthe equations of motion are continuous. A contact event is, therefore, quite hard for an integrator to solvethrough. Adams/Solver (C++) contains a contact predictor that predicts the onset of contact and controlsthe integrator step size accordingly. The following paragraphs briefly summarize the contact predictionalgorithm.

    When Adams/Solver (C++) detects a new contact, it calculates the penetration and penetration velocity between the two geometries. From these two values, Adams/Solver (C++) estimates a more refinedcontact time. Adams/Solver (C++) rejects the current time step and uses the refined step size to accuratelysense the onset of contact.

    Furthermore, the integrator order is set to one, so that Adams/Solver (C++) does not use the time historyof the system to predict the future behavior of the system.

    T 23--- RF =

    23---

    Caution: If you need some other formulation of the friction torque, the only alternative is to writeyour own friction force subroutine (CFFSUB). An example is given at the end of thissection.

    Adams/Solver C++ Statements

    40

  • 8/15/2019 Solver c Plus Statements

    40/383

    This algorithm essentially ensures that:

    • The penetration for a new contact is small.

    • The integrator is at first order when the contact event occurs.• The integrator is taking small time steps.

    Contacts and Analysis Mode Issues

    This section explains how the various analysis modes deal with contact, and provides modeling tips onhow to successfully negotiate difficult contact events.

    Contacts and Static Equilibrium

    Both the static and quasi-static equilibrium analysis modes use Newton-Raphson (NR) iterations to solvethe nonlinear algebraic equations of force balance. The Jacobian matrix of first partial derivatives and theresidue of the equations of motion are used to set up an iterative scheme that normally converges to thesolution.

    The Jacobian matrix is a measure of the stiffness matrix of the system. The inverse of the Jacobian is,therefore, the compliance in the system. The NR algorithm ensures that the system solution moves in thedirection of most compliance (least stiffness). When a contact is active, the stiffness in the direction ofthe normal force is high, so the NR algorithm modifies the system states to decrease this force. If a contactis inactive, there is no stiffness in the direction of increasing contact. The NR algorithm will likelycompute a large movement in this direction, leading to excessive penetration. During the very nextiteration, since the contact force may turn on, a large stiffness is detected in this direction, and thealgorithm will change the system to dramatically reduce the amount of penetration. It is not uncommonfor the algorithm to overreact to this stiffness and move the system sufficiently to deactivate the contact.The algorithm may never be able to resolve this discontinuity in the system.

    Adams/Solver (C++) anticipates this situation and uses a contact-force-sensing mechanism to avoidexcessive contact. You can further enhance this method, however, by choosing the correct equilibrium parameters.

    Here are some modeling tips for aiding equilibrium (static) analysis (for more information on equilibriumanalysis, see the EQUILIBRIUM statement):

    • Use EQUILIBRIUM/DYNAMICS to specify that a quasi-dynamic algorithm is to be used tofind static equilibrium. For more information, see the EQUILIBRIUM statement.

    • If possible, make sure that all contacts are active, and each contact penetration is small. This willensure that the contact forces are small, and the system is aware of the contacts.

    • Set TLIMIT and ALIMIT small enough so gross contact violations are avoided.• Increase the maximum number of iterations, MAXIT, so that you can get to convergence in spite

    of the small values for TLIMIT and ALIMIT.• Avoid neutral equilibrium situations. If you know that your model has neutral equilibrium

    situations, increase STABILITY (try STABILITY = 0.1). Also increase MAXIT, the maximumnumber of iterations you will allow to obtain convergence.• See Best Practices for Working with Contacts for more information.

    41CONTACTC++ Statements

  • 8/15/2019 Solver c Plus Statements

    41/383

    Contacts and Kinematics

    In kinematically determinate systems, the system configuration is completely defined by the systemconstraints (JOINTs, JPRIMs, COUPLERs, and so on) and MOTIONs. The contact penetration and forceat each configuration can only be obtained as outputs of this analysis. CONTACTS will not be able todetermine the configuration of the system.

    Contacts and Linear Analysis

    If contacts are active at the configuration at which linearization is performed, there will be a high stiffnessin the direction of the normal force. Therefore, you will see a large frequency corresponding to thisstiffness. If contacts are inactive, they will have no effect on the eigenvalues of the system.

    Contacts and Dynamics

    Default Corrector for Dynamics

    The modified corrector (Integrator/Corrector=Modified) is the default for all models that containCONTACTS.

    Handling solution difficulties:

    Sometimes, you may encounter repeated corrector failures when a contact occurs. This is usually caused by:

    • Too large a value for STIFFNESS (for IMPACT) or PENALTY (for POISSON).• Too tight of an integration error.• Too small of a value for FRICTION_TRANSITION_VELOCITY and

    STICTION_TRANSITION_VELOCITY.• Too large of a value for MU_STATIC and MU_DYNAMIC.

    The following modeling tips will help dynamic analyses. For more information on integrator settings, seethe INTEGRATOR statement.

    • Reduce STIFFNESS or PENALTY by a factor of 10 and see if Adams/Solver (C++) can solvethrough the contact.

    • Increase the integration error tolerance using INTEGRATOR/ERROR=value. A larger integratorerror results in a looser corrector convergence criterion.

    • Reduce damping. This decreases the duration of the contact and can help simulations.• Set the maximum integration order to 2, using INTEGRATOR/KMAX=2. Lower-order

    integrators are more stable than higher-order integrators.• Set HMAX to a small value to prevent the integrator from taking large steps.• Use the SI2 formulation. The corrector for this formulation is more stable than standard GSTIFF,

    and may solve the problem where the standard GSTIFF failed.

    • Always run a model without contact friction first, and refine the functioning model by addingfriction later.

  • 8/15/2019 Solver c Plus Statements

    42/383

    43CONTACTC++ Statements

  • 8/15/2019 Solver c Plus Statements

    43/383

    Caution: • An artificially low value of stiffness or penalty will not generate the necessary contact

    forces. You may see a loss of energy when none is expected.• If you find that your model response changes as the number of output steps is modified,

    use INTEGRATOR/HMAX=value to control the integrator step-size and the quality ofthe solution.

    • The HHT integrator is incompatible with restitution (POISSON) contact.If your model uses different length units than the stiffness properties you would like touse, you need to scale the stiffness by:

    l engt h conver si on f act or ** exponent

    The reason for this is that the contact force due to penetration is defined as:

    Adams/View will do this conversion for you if you change the units under Settings.However, you will need to do it if you enter the parameters in different units.Example:

    k = 3800 N/ mme = 2. 0cur r ent model uni t s: f or ce = N, l engt h = m

    st i f f ness t o ent er f or cont act = 3800*( 1000** 2) = 3. 8e9Also note that only length is raised to the exponent, so if you have a different force unit,you would only scale it by the force conversion factor.

    • Contact cannot be defined between a Flexible Body and a list of 3D geometries• FLIP cannot be used with flexible bodies• The edges used in flexible body contact are modeled as 2D polylines. Higher order

    interpolation is not allowed. Because they are 2D geometry, they may contact any other2D geometry (rigid or flexible). They cannot be used in contact with 3D geometry.• The thickness of shell elements is ignored in flexible body contact.

    Adams/Solver C++ Statements

    44

  • 8/15/2019 Solver c Plus Statements

    44/383

    Tip: If you notice that energy is dissipated during contact events, note the following:

    • Impact method - A three-dimensional contact with zero damping can exhibitsome dissipation of energy during the impact. The dissipation is due to thenumerics of the integration algorithm. To reduce the dissipation, reduce the timestep or tighten (decrease) the error tolerance.

    • Restitution method - A three-dimensional contact with coefficient of restitutionset to one should conserve energy. If you notice some dissipation, try increasingthe PENALTY argument. Recall that the larger the PENALTY argument, the moreexact the contact constraint will be enforced. In the case of intermittent contact anda restitution coefficient set to one, a larger penalty parameter more exactlyenforces the conservation of momentum during the contact event.

    The PENALTY argument is analogous to the stiffness in the IMPACT function.The larger the stiffness, the smaller the penetration.

    45CONTACTC++ Statements

    Material Contact Properties

  • 8/15/2019 Solver c Plus Statements

    45/383

    p

    The table below shows material types and their commonly used values for the dynamic coefficient offriction and restitution.

    Material 1: Material 2: Mu static: Mu dynamic: Restitution coefficient:

    Dry steel Dry steel 0.70 0.57 0.80Greasy steel Dry steel 0.23 0.16 0.90Greasy steel Greasy steel 0.23 0.16 0.90

    Dry aluminium Dry steel 0.70 0.50 0.85Dry aluminium Greasy steel 0.23 0.16 0.85Dry aluminium Dry aluminium 0.70 0.50 0.85Greasy aluminium Dry steel 0.30 0.20 0.85Greasy aluminium Greasy steel 0.23 0.16 0.85Greasy aluminium Dry aluminium 0.30 0.20 0.85

    Greasy aluminium Greasy aluminium 0.30 0.20 0.85Acrylic Dry steel 0.20 0.15 0.70Acrylic Greasy steel 0.20 0.15 0.70Acrylic Dry aluminium 0.20 0.15 0.70Acrylic Greasy aluminium 0.20 0.15 0.70Acrylic Acrylic 0.20 0.15 0.70

    Nylon Dry aluminium 0.10 0.06 0.70 Nylon Greasy aluminium 0.10 0.06 0.70 Nylon Acrylic 0.10 0.06 0.65 Nylon Nylon 0.10 0.06 0.70Dry rubber Dry steel 0.80 0.76 0.95Dry rubber Greasy steel 0.80 0.76 0.95

    Dry rubber Dry aluminium 0.80 0.76 0.95Dry rubber Greasy aluminium 0.80 0.76 0.95Dry rubber Acrylic 0.80 0.76 0.95Dry rubber Nylon 0.80 0.76 0.95Dry rubber Dry rubber 0.80 0.76 0.95Greasy rubber Dry steel 0.63 0.56 0.95

    Greasy rubber Greasy steel 0.63 0.56 0.95Greasy rubber Dry aluminium 0.63 0.56 0.95

    Adams/Solver C++ Statements

    46

    Material 1: Material 2: Mu static: Mu dynamic: Restitution coefficient:

  • 8/15/2019 Solver c Plus Statements

    46/383

    Best Practices for Working with Contacts

    The following list includes tips for working with contacts:

    • Step size - Simulations allowed to run at large relative step sizes may cause contacts to havetrouble contributing to convergence. Large displacements (especially rotations) duringintegration steps can cause significant discontinuities. Running with a smaller hmax can helpsome models by limiting the predictor-induced displacements.

    • Equilibrium - Static equilibrium is a very difficult problem to solve with contacts. Use good

    modeling techniques, such as making sure that the objects expected to be in contact atequilibrium are initially in contact in the input configuration. If this is not feasible, make surethat the objects expected to be in contact are very close so that the contacts can be detectedduring equilibrium iterations. It will also help to consider the appropriate TLIM and ALIM tohelp limit the perturbations for finding equilibrium. Use dynamic equilibrium for models thathave difficulty finding static equilibrium.

    • Thin shells - During one solution step, Adams may take several integrator steps in order tosatisfy predictor-corrector requirements. If input geometry is very thin, there is a possibility thatone geometry may completely pass through another, resulting in invalid volume of intersectioncalculations. This can result in missed contacts, passthroughs, or generation of unusually highcontact force. Reducing hmax can help prevent this problem.

    • Friction - Friction calculations are highly discontinuous and can cause numerical convergence problems, especially at low relative velocities. The friction difficulties compound the alreadydifficult contact evaluations. Whenever possible, run a model without contact friction first, andrefine the functioning model by adding friction later. If the addition of frictional forces causesnumerical difficulties or simulation slowdowns, gradually increase the values forSTICTION_TRANSITION_VELOCITY and FRICTION_TRANSITION_VELOCITY. Alsoreduce the coefficients of friction, which usually helps the integrator.

    Greasy rubber Greasy aluminium 0.63 0.56 0.95

    Greasy rubber Acrylic 0.63 0.56 0.95Greasy rubber Nylon 0.63 0.56 0.95Greasy rubber Dry rubber 0.63 0.56 0.95Greasy rubber Greasy rubber 0.63 0.56 0.95

    Material 1: Material 2: Mu static: Mu dynamic: Restitution coefficient:

    Caution: An artificially low value of stiffness or penalty will not generate the necessary contactforces. You may see a loss of energy when none is expected.

    If you find that your model response changes as the number of output steps is modified,use INTEGRATOR/HMAX=value to control the integrator step-size and the quality of thesolution.

    47CONTACTC++ Statements

    • Complex geometry - The time required to retrieve contact intersection information from the

  • 8/15/2019 Solver c Plus Statements

    47/383

    geometric modeler is directly related to the complexity of the given geometry. Some methods aredeployed to bound geometry to avoid unnecessary calls when possible, but complex geometry

    can still unduly affect the simulation. Consider the actual contact expected between thegeometric pairs. Trim or split the geometry as much as possible to assign contacts to the actualareas of contact interest. Also, when possible, substitute imported or general geometry withgeometric primitives, such as cylinders and spheres. These shapes branch into a much fastercalculation algorithm.

    • Impact versus Restitution - The coefficient of restitution was provided for the case where noimpact values were available and restitution values were obtainable from material references or physical testing. In general, the impact method is more numerically smooth and will result infaster simulations. In addition, the impact method provides greater control of the contact behavior, such as inclusion of damping, and force exponent, which can help tune a numericallysatisfying result. In general, the coefficient of restitution method should only be used whencoefficient of restitution data is available and impact values are not. If a method can be used toderive or determine impact parameters for the given geometry, it should be used.

    • Contact order - Sometimes the relative velocities and complexity of the two geometries participating in a contact can provide better numerical condition based on their order. If a model

    is performing poorly, in some cases, changing the order of the geometries (IGEOM - JGEOM)can improve the simulation performance. If the answer is different, it should be within errortolerance and tightening error tolerance should converge the results if they are different.

    • Use Stabilized Index 2 Integrator - The Stabilized Index 2 (SI2) integrator provides bettersolutions for velocities and derived accelerations without spikes. These acceleration spikes canhave adverse effects on contact behavior, so the SI2 integrator is the best choice for most contactmodels.

    • Avoid CONSTANT_BDF (FORTRAN Only) - The constant BDF integrator was created forearly design iterations for increased robustness at the cost of accuracy. Models with contactshave been found to perform poorly with constant BDF. Although the model will run morerobustly, many observations of contacts missing have been observed.

    • 2D Approximation for Contact Modeling Whenever Possible - When applicable, representthe contact event using 2D elements. Choose from point-to-curve, curve-to-curve, or use theIMPACT function defined in a SFORCE, VFORCE, or GFORCE element.

    • Analytical Contact - Analytical contact should be used whenever possible.• Contact Parameters (Stiffness, Damping, Force Exponent ) - Take into account the mass and

    inertia of each part in the mechanism and the resulting velocities at which the contact bodies aretraveling with respect to each other. Based on this, ensure that the contact parameters are definedwith appropriate values.

    Examples

    The example below demonstrates contact between two generic three-dimensional geometries.star_geneva.xmt_txt is a geometry file that was generated by Parasolid. Adams/View or any CAD

    Adams/Solver C++ Statements

    48

    package using Parasolid as its geometry package can generate this file. It contains two geometries,f

  • 8/15/2019 Solver c Plus Statements

    48/383

    SOLID4 and SOLID3. Contact is to be defined between these two geometries.

    The .adm file portion for this example is as follows:

    MARKER/ 30027, PART = 1005GRAPHI CS/ 11,, EXTERNAL,, FI LE = st ar _geneva. xmt _t xt ,, ELEMENT = SOLI D4,, RM = 30027!MARKER/ 30028, PART = 1004

    GRAPHI CS/ 12,, EXTERNAL,, FI LE = st ar _geneva. xmt _t xt ,, ELEMENT = SOLI D3,, RM = 30028

    An impact-type contact would be defined as:

    CONTACT/ 1,, I GEOM=11,

    , J GEOM=12,, I MPACT,, STI FFNESS = 1E6,, DAMPI NG = 10,, DMAX = 0. 1,, EXPONENT = 2. 2

    A POISSON-type contact would be defined as:

    CONTACT/ 1,

    , I GEOM=11,, J GEOM=12,, POI SSON,, PENALTY = 1E5,, RESTI TUTI ON_COEFFI CI ENT = 0. 6

    Below is an example of lists of geometry. Geometries 11 and 12 must belong to one part. Geometries 13,14, and 15 must all be on one part. Geometries 12, 13, and 15 are flipped.

    CONTACT/ 1,, I GEOM = 11, 12, J GEOM = 13, 14, 15, I FLI P_GEOMETRY = 12, J FLI P_GEOMETRY = 13, 15, I MPACT,, STI FFNESS = 1E6,, DAMPI NG = 10,, DMAX = 0. 1,, EXPONENT = 2. 2

    Below is an example of user-written subroutines in contacts. The normal force subroutine (CNFSUB)and the friction force subroutine (CFFSUB) are in the same library (cnforc1).

    49CONTACTC++ Statements

    CONTACT/ 1I GEOM = 7

  • 8/15/2019 Solver c Plus Statements

    49/383

    , I GEOM = 7, J GEOM = 6, NORMAL_ ROUTI NE = cnf or c1: : CNFSUB, FRI CTI ON_ROUTI NE = cnf or c1: : CFFSUB, NORMAL_ FUNC = USER( 1. 0E+004, 1. 0, 1000, 0. 1) /, FRI CTI ON_FUNC = USER( 0. 37, 0. 30, 10. 0, 10)

    The figure below shows a representation of the star_geneva mechanism.

    star_geneva Mechanism

    The example below demonstrates how to specify contact between two two-dimensional geometries:

    MARKER/ 30027, PART = 1005GRAPHI CS/ 11, CURVE, RM = 30027, CI D = 147!MARKER/ 30028, PART = 1004GRAPHI CS/ 12, CI RCLE, CM = 30028, RADI US = 1. 36

    Below is an example of 2D contact for a FLEX_BODY. IEDGE is the ID of a MATRIX statement listingthe nodes on the FLEX_BODY which define the edge.

    Adams/Solver C++ Statements

    50

    CONTACT/ 1I FLEX = 1

  • 8/15/2019 Solver c Plus Statements

    50/383

    , I FLEX 1, I EDGE = 2, J GEOM = 1, I MPACT, STI FFNESS = 1. 0E+005, DAMPI NG = 10, DMAX = 0. 1, EXPONENT = 2. 2

    See other Forces statements available.

    51COUPLERC++ Statements

    COUPLER

  • 8/15/2019 Solver c Plus Statements

    51/383

    A COUPLER statement relates the translational and/or the rotational motion of two or three joints.

    Format

    Arguments

    FUNCTION=USER(r1[,...,r30])

    Specifies up to thirty user-defined constants passed to the externallydefined subroutine COUSUB, COUXX, COUXX2. These subroutinesdefine the coupler displacement constraint function, and provide its firstand second order partials, respectively (see the COUSUB, COUXX,COUXX2 subroutines).

    JOINTS=id1,id2[,id3] Specifies the identifiers of as many as three joints whose translationaland/or rotational displacements are to be coupled. You can only specifyidentifiers of translational, revolute, and cylindrical joints.

    ROUTINE=lib1::cou1,lib2::cou2, lib3::cou3

    Specifies alternative library and subroutine names for the usersubroutines COUSUB, COUXX, and COUXX2 respectively.

    Learn more about the ROUTINE Argument .

    http://solver_subroutines.pdf/http://solver_subroutines.pdf/http://solver_about.pdf/http://solver_about.pdf/http://solver_subroutines.pdf/http://solver_subroutines.pdf/

  • 8/15/2019 Solver c Plus Statements

    52/383

    53COUPLERC++ Statements

    Extended Definition

    The COUPLER statement relates the translational and/or rotational motion of two or three joints This

  • 8/15/2019 Solver c Plus Statements

    53/383

    The COUPLER statement relates the translational and/or rotational motion of two or three joints. Thisstatement lets you deliver or couple motion from one area of a mechanism to another. Components whose

    behavior might be approximated with this statement are combinations of hydraulic generators, motors,and pistons, and include flexible, rotational, transmission cables

    Tip: • To measure translational motion, Adams/Solver (C++) finds the displacement ofthe I marker origin with respect to the J marker origin along the J marker z-axis.Positive translations are along the positive z-axis of J, and negative translations arealong its negative z-axis.

    • To measure rotational motion, Adams/Solver (C++) finds the displacement of thex-axis of the I marker with respect to the x-axis of the J marker about the commonz-axis of the I and the J markers. To determine the positive sense of rotation, applythe right-hand rule to the z-axis.

    • The COUPLER can relate any combination of translational and rotational motions.A two-joint COUPLER, for example, can relate translational motion totranslational motion, rotational to rotational, or translational to rotational.

    • The COUPLER is a constraint between joint degrees of freedom. Therefore, itmodels only the reaction forces that are along or about the degrees of freedom thatare being coupled.You can model a pair of mating spur gears as a COUPLER between twoREVOLUTE joints. If (I1, J1) are the I and J markers of the first joint and (I2, J2)are the I and J markers of the second joint, the COUPLER constraint is:AZ(I1,J1) * scale_1 + AZ(I2,J2) * scale_2 = 0

    where scale_1 and scale_2 are the radii of the two gears.The reaction forces generated by the COUPLER are the torques at the two jointsrequired to maintain the constraint shown above. The reaction on the first joint isthe torque about the z-axis of marker J1. The reaction on the second joint is thetorque about the z-axis of marker J2. You can compute the tooth force from thesetorques, but Adams/Solver (C++) does not explicitly solve for them.You can also model a rack and pinion gear as a COUPLER relating the rotation ina REVOLUTE joint, with the translation in a TRANSLATIONAL joint. If (I1, J1)are the I and J markers of the REVOLUTE joint and (I2, J2) are the I and J markersof the TRANSLATIONAL joint, the COUPLER constraint is:AZ(I1,J1) * scale_1 + DZ(I2,J2,J2) * scale_2 = 0where scale_1 is the pinion radius, and scale_2=1.The COUPLER reaction on the REVOLUTE joint is a torque about the z-axis ofMarker J1, and the reaction on the TRANSLATIONAL joint is a force along the z-axis of Marker J2.

  • 8/15/2019 Solver c Plus Statements

    54/383

    55CURVEC++ Statements

    CURVE

  • 8/15/2019 Solver c Plus Statements

    55/383

    CURVE

    The CURVE statement defines a three-dimensional parametric curve that you can reference using PTCV,CVCV, GRAPHICS statements, and function expressions.

    Format

    Arguments

    CLOSED Specifies that the curve meets at the ends. If you specify CURVE_POINTS,Adams/Solver (C++) attempts to compute a curve that meets at the ends and hascontinuous first and second derivatives across the closure. If you specifyFUNCTION, you must ensure that the defined curve meets at the ends and has

    continuous first and second derivatives across the closure. If the curve is closed,the first and last control or curve points must be the same. During a simulation,Adams/Solver (C++) moves a PTCV or CVCV contact point across the closure,if necessary.

    CURVE_POINTS Specifies that the MATRIX contains data points on the curve.FUNCTION=USER(r1[,...,r30])/

    Defines and passes constants to CURSUB, the user-written subroutine thatcomputes the curve coordinates and derivatives (see the CURSUB subroutine).The FUNCTION argument must be either the last argument in the CURVEstatement or it must be followed by a backslash (\).

    MATRIX=id Specifies a MATRIX statement that contains data for a curve. The matrixcontains the x, y, and z coordinates of the curve points. The matrix should havea row for each point and three columns containing the x-, y-, and z-coordinatesof the points. You must supply at least four curve points. The first and last pointsmust be the same for a closed curve.

    Adams/Solver C++ Statements

    56

    MAXPAR=r Specifies the maximum value of the curve parameter for a user-written curve.Adams/Solver (C++) uses this value when drawing a curve graphic. The

    http://solver_subroutines.pdf/http://solver_subroutines.pdf/

  • 8/15/2019 Solver c Plus Statements

    56/383

    Extended Definition

    The x, y, and z coordinates of a point on a parametric curve are functions of an independent parameter,u. As u var