The CONTACT statement lets you define a two- or three-dimensional contact between a pair of geometric objects. Adams/Solver (FORTRAN) models the contact as a unilateral constraint, that is, as a force that 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.
It does not support non-solid three-dimensional geometries, such as shells that do not encompass a volume and sheets. It also does not support contact between a two-dimensional and a three-dimensional geometry.
Adams/Solver (FORTRAN) has two geometry engines that it uses for three-dimensional contacts. It uses Parasolid, a geometry toolkit from EDS/Unigraphics and RAPID. Currently, RAPID is the default and Adams/Solver (FORTRAN) supports version 2.01.

|
|
Refines the normal force between two sets of rigid geometries that are in contact. It uses iterative refinement to ensure that penetration between the geometries is minimal. It also ensures that the normal force magnitude is relatively insensitive to the penalty or stiffness used to model the local material compliance effects. You can use this formulation only with the POISSON model for normal force.
|
COULOMB_FRICTION = off/on/DynamicsOnly
|
|
|
|
Used when you specify the IMPACT model for calculating normal forces. DAMPING defines the damping properties of the contacting material. You should set the damping coefficient is about one percent of the stiffness coefficient. Range: DAMPING >0
|
|
|
Used when you specify the IMPACT model for calculating normal forces. DMAX defines the penetration at which Adams/Solver turns on full damping. Adams/Solver uses a cubic STEP function to increase the damping coefficient from zero, at zero penetration, to full damping when the penetration is DMAX. A reasonable value for this parameter is 0.01 mm. For more information, refer to the IMPACT function. Range: DMAX > 0
|
|
|
Used when you specify the IMPACT model for calculating normal forces. Adams/Solver (FORTRAN) models normal force as a nonlinear spring-damper. If PEN is the instantaneous penetration between the contacting geometry, Adams/Solver calculates the contribution of the material stiffness to the instantaneous normal forces as STIFFNESS * (PENALTY)**EXPONENT. For more information, see the IMPACT cellheadwhite.
|
|
|
Used in the COULOMB_FRICTION model for calculating frictional forces at the contact locations. Adams/Solver gradually transitions the coefficient of friction from MU_STATIC to MU_DYNAMIC as the slip velocity at the contact point increases. When the slip velocity is equal to the value specified for FRICTION_TRANSITION_VELOCITY, the effective coefficient of friction is set to MU_DYNAMIC. For more details, see Extended Definition.
Note: Small values for FRICTION_TRANSITION_VELOCITY cause the integrator difficulties. You should specify this value as:
Range:FRICTION_TRANSITION_VELOCITY > STICTION_TRANSITION_VELOCITY > 0
|
|
|
|
FRICTION_ROUTINE = library::function
|
|
|
|
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 GRAPHICS IDs. The limit is 32,767. All geometries must belong to the same part.
|
|
|
ID of the GRAPHICS statement that defines the second of two geometric bodies between which a CONTACT is to be modeled. Specifies a list of GRAPHICS IDs. The limit is 32,767. All geometries must belong to the same part.
|
IFLIP_GEOMETRY = id1,id2,...,idN
|
Specifies a list of GRAPHICS IDs associated with the IGEOM objects to be reversed in direction (flipped). Use IFLIP_GEOMETRY only with two-dimensional geometries (for example, curves, arcs, and circles). You can also use IFLIP_GEOMETRY when defining contact between two spheres (ellipsoids with equal axes). For an explanation of how CONTACT calculates tangents and normals, see Extended Definition.
|
|
|
|
JFLIP_GEOMETRY = id1,id2,...,idN
|
Specifies a list of GRAPHICS IDs associated with the JGEOM objects to be reversed in direction (flipped). Use JFLIP_GEOMETRY only with two-dimensional geometries (for example, curves, arcs, and circles). You can also use JFLIP_GEOMETRY when defining contact between two spheres (ellipsoids with equal axes). For an explanation of how CONTACT calculates tangents and normals, see Extended Definition.
|
|
|
Specifies the coefficient of friction at a contact point when the slip velocity is larger than the FRICTION_TRANSITION_VELOCITY. For information on material types versus commonly used values of the coefficient of the dynamic coefficient of friction, see the Material Contact Properties table. Excessively large values of MU_DYNAMIC can cause integration difficulties.
|
|
|
Specifies the coefficient of friction at a contact point when the slip velocity is smaller than the STICTION_TRANSITION_VELOCITY. For information on material types versus commonly used values of the coefficient of static friction, seethe Material Contact Properties table. Excessively large values of MU_STATIC can cause integration difficulties.
|
NORMAL_FUNCTION = USER( r1,[,..., r30])
|
|
NORMAL_ROUTINE = library::function
|
|
|
|
Used when you specify a restitution model for calculating normal forces. PENALTY defines the local stiffness properties between the contacting material. A large value of PENALTY ensures that the penetration, of one geometry into another, will be small. Large values, however, will cause numerical integration difficulties. A value of 1E6 is appropriate for systems modeled in Kg-mm-sec. For more information on how to specify this value, see Extended Definition.
|
|
|
|
|
|
The coefficient of restitution models the energy loss during contact. A value of 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 coming into contact. For information on material types versus commonly used values of the coefficient of restitution, the Material Contact Properties table.
|
|
|
Used in the COULOMB_FRICTION model for calculating frictional forces at the contact locations. Adams/Solver gradually transitions the coefficient of friction from MU_DYNAMIC to MU_STATIC as the slip velocity at the contact point decreases. When the slip velocity is equal to the value specified for STICTION_TRANSITION_VELOCITY, the effective coefficient of friction is set to MU_STATIC. For more details, see the Extended Definition.
Note: A small value for STICTION_TRANSITION_VELOCITY causes numerical integrator difficulties. A general rule of thumb for specifying this value is:
|
|
|
Specifies a material stiffness that you can use to calculate the normal force for the impact model. In general, the higher the STIFFNESS, the more rigid or hard the bodies in contact are. Also note that the higher the STIFFNESS is, the harder it is for an integrator to solve through the contact event.
|
Currently, Adams/Solver (FORTRAN) does not support contact between two- and three-dimensional geometries.
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 geometry modeling system. The CURVE object is specified as a series of x, y, and z points that are a function of an independent curve parameter. The three-dimensional EXTERNAL object is more complex, and is specified in the format of the geometry modeling system. Parasolid from Unigraphics is the default geometry modeling system in Adams/Solver (FORTRAN). This is a well recognized, state-of-the-art geometry modeling system that is used in many CAD systems. Parasolid geometry files typically have the extension 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, the geometry modeling system calculates the location of the individual contact points and the outward normals to the two geometries at the contact point. Adams/Solver (FORTRAN) calculates the normal and slip velocities of the contact point from this information. Adams/Solver (FORTRAN) then uses the velocities to calculate the contact force at each individual contact.
For two-dimensional geometries, especially open curves, there is an ambiguity in calculating the outward normal. Adams/Solver (FORTRAN) uses the specified geometry to calculate a default outward normal, but allows the user to reverse this direction using the IFLIP_NORMAL and JFLIP_NORMAL arguments.
The figure below shows an open curve with eight points defined in the coordinate system of the reference marker (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 as follows:
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 and JGEOM. When lists of geometries are specified by IGEOM and JGEOM, use IFLIP_GEOMETRY and JFLIP_GEOMETRY to flip normals.
|
•
|
Intermittent contact - Is characterized by contact for short periods of time. It is also known as impulsive contact. Two geometries approach each other, undergo a collision, and separate as a result of the contact. The collision results in the generation of an impulse, that affects the momentum of the colliding bodies. Adams/Solver (FORTRAN) develops an estimate of the contact force 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 a damping 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 dissipation energy and kinetic energy. This is known as the decompression phase. It is important to note that energy losses due to dissipation occur in both phases.
|
|
•
|
Persistent contact - Is characterized by contact for relatively long periods of time. External forces acting between the two bodies serve to maintain continuous contact. Persistent contact is modeled 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.
|
Both force models result from a penalty regularization of the normal contact constraints. Penalty regularization is a modeling technique in mechanics, in which a constraint is enforced mathematically by applying 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 with enforcing this constraint. Handling these auxiliary constraint conditions is usually accomplished in one of 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 or variables are introduced. This is particularly useful when treating intermittent contact and algorithmically managing active and inactive conditions associated with unilateral constraints. Additionally, a penalty formulation is easily interpreted from a physical standpoint. For example, the magnitude of the contact reaction force is equal to the product of material stiffness and penetration between contacting bodies, similar to a spring force. For these reasons, Adams/Solver (FORTRAN) uses a penalty regularization to enforce all contact constraints. The disadvantage of the penalty regularization, however, is that you are responsible for setting an appropriate penalty parameter, that is, the material stiffness. Furthermore, a large value for the material stiffness or penalty parameter can cause integration difficulties.
Before presenting the contact normal force models in Adams/Solver (FORTRAN), it is helpful to clearly define the contact constraints and associated kinematic and kinetic quantities. First, impenetrability of two approaching 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 force between the contacting bodies. With this notation in hand, the auxiliary contact constraints are defined as:
The fourth condition is called the persistency condition and it specifies that the normal force is nonzero only 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.
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 of the solution.
You can also approximate the compliance of a body by correlating k to the bodys material and geometric parameters; however, in doing so, you should recall the earlier remark concerning ill conditioning. In an effort to incorporate general material constitutive relationships for the contacting bodies, as well as facilitate time integration, Adams/Solver (FORTRAN) augments the previous expression with nonlinear displacement-dependent, viscous damping terms. The general form of the IMPACT force function is then given by:
Clearly, for cmax = 0 and e = 1, the original penalization is recovered. The POISSON force model is derived from the persistency condition, Fn *

= 0. A penalty regularization of the fourth contact constraint yields:
where p is a scalar penalty parameter. Again, the penalization is exact as p ->
, which carries the risk of ill conditioning. In the context of dynamic contact problems, the POISSON model is more consistent with conservation laws and conserves/dissipates energy appropriately. You can optionally provide a coefficient of restitution e to model inelastic contact. In this case, the POISSON force model computes the normal contact force as follows:
When using penalty methods to enforce contact constraints, large penalty (or stiffness) parameters cannot be used without the risk of making the equations of motion ill conditioned. Ill conditioning manifests itself in a loss of numerical accuracy during the solution process, causing either slowed convergence or even divergence. However, softening the penalty parameter compromises the accuracy of the unilateral contact constraint by permitting excessive penetration between interacting bodies.
To circumvent penalty sensitivity, Adams/Solver (FORTRAN) offers an augmented Lagrangian solution technique. The method involves an iterative process to calculate the unknown contact force. For example, in the context of the POISSON force model, with k being the iteration counter, the augmented Lagrangian iterations are:
The above augmented Lagrangian regularization is more general than the POISSON force model presented earlier, but encompasses a particular case, when the iteration process is executed only once. For subsequent iterations, the penalty parameter does not need to be very large, because the accumulated force during the iterative procedure eliminates the resulting error in the contact constraints.
Adams/Solver (FORTRAN) uses a relatively simple velocity-based friction model for contacts. Specifying the frictional behavior is optional. The figure below shows how the coefficient of friction varies with slip velocity.
V: Slip velocity at contact pointvs: STICTION_TRANSITION_VELOCITY
vd: FRICTION_TRANSITION_VELOCITY

: MU_STATIC

: MU_DYNAMIC
The bodies usually separate because of the contact forces or impulses. Numerical integrators assume that the equations of motion are continuous. A contact event is, therefore, quite hard for an integrator to solve through. Adams/Solver (FORTRAN) contains a contact predictor that predicts the onset of contact and controls the integrator step size accordingly. The following paragraphs briefly summarize the contact prediction algorithm.
When Adams/Solver (FORTRAN) detects a new contact, it calculates the penetration and penetration velocity between the two geometries. From these two values, Adams/Solver (FORTRAN) estimates a more refined contact time. Adams/Solver (FORTRAN) rejects the current time step and uses the refined step size to accurately sense the onset of contact.
Both the static and and quasi-static equilibrium analysis modes use Newton-Raphson (NR) iterations to solve the nonlinear algebraic equations of force balance. The Jacobian matrix of first partial derivatives and the residue of the equations of motion are used to set up an iterative scheme that normally converges to the solution.
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 the direction of most compliance (least stiffness). When a contact is active, the stiffness in the direction of the normal force is high, so the NR algorithm modifies the system states to decrease this force. If a contact is inactive, there is no stiffness in the direction of increasing contact. The NR algorithm will likely compute a large movement in this direction, leading to excessive penetration. During the very next iteration, since the contact force may turn on, a large stiffness is detected in this direction, and the algorithm will change the system to dramatically reduce the amount of penetration. It is not uncommon for the algorithm to over-react 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 (FORTRAN) anticipates this situation and uses a contact-force-sensing mechanism to avoid excessive contact. You can further enhance this method, however, by choosing the correct equilibrium parameters.
In kinematically determinate systems, the system configuration is completely defined by the system constraints (JOINTs, JPRIMs, COUPLERs, and so on) and MOTIONs. The contact penetration and force at each configuration can only be obtained as outputs of this analysis. CONTACTS will not be able to determine the configuration of the system.
If contacts are active at the configuration at which linearization is performed, there will be a high stiffness in the direction of the normal force. Therefore, you will see a large frequency corresponding to this stiffness. If contacts are inactive, they will have no effect on the eigenvalues of the system.
Adams/Solver (FORTRAN) has two different geometry engines that can be used for three-dimensional contact detection. The first geometry engine is based on Parasolid and it is fundamentally the same engine that was available in ADAMS 11.0 and ADAMS 12.0. Currently, Adams/Solver (FORTRAN) supports Parasolid version 14.0. The second geometry engine is based on RAPID a polygon based interference detection package developed at the University of North Carolina. Currently, Adams/Solver (FORTRAN) supports RAPID version 2.01.
The RAPID geometry engine was added to Adams/Solver (FORTRAN) because, for many models, it can substantially reduce the simulation time. However, because it is polygon based, it is not always as accurate as the Parasolid geometry engine. Parasolid is an exact boundary-representation geometric modeler, which makes it highly accurate, but not as fast as a polygon-based engine. For these reasons, it was decided to include both geometry engines in Adams/Solver (FORTRAN) and give you the capability of switching from one to the other.
The RAPID geometry engine is the default geometry in this release of Adams/Solver (FORTRAN). To switch to the Parasolid geometry engine, you must set the environment variable MDI_ADAMS_GEOM_LIB to TRUE before starting Adams. Setting environment variables is usually done using a shell script, a batch file, or the command line.
The RAPID geometry engine has another environment variable, MDI_FACETING_TOLERANCE, which controls the faceting of 3D geometry. Faceting is the process of approximating the surface of an object by a mesh of triangles. All polygon-based geometry engines used faceted representations of surfaces. The default value of MDI_FACETING_TOLERANCE is 300. Increasing this value will result in a finer mesh of triangles, which gives a more accurate representation of surfaces which are curved. However, increasing the tolerance also increases the memory requirements of the geometry engine and adds to the computational overhead, which makes it run slower. Setting the faceting tolerance to values greater than 1000 is not recommended. Values smaller than 300 will give negligible performance improvements. The faceting tolerance has no effect on inherently polygonal surfaces such as boxes.
|
|
|
•
|
Impact method - A three-dimensional contact with zero damping can exhibit some dissipation of energy during the impact. The dissipation is due to the numerics of the integration algorithm. To reduce the dissipation, reduce the time step or tighten (decrease) the error tolerance.
|
|
•
|
Restitution method - A three-dimensional contact with coefficient of restitution set to one should conserve energy. If you notice some dissipation, try activating the Augmented Lagrangian or increasing the PENALTY argument. Recall that the larger the PENALTY argument, the more exact the contact constraint will be enforced. In the case of intermittent contact and a restitution coefficient set to one, a larger penalty parameter more exactly enforces 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.
|
|
|
|
|
•
|
Example:k = 3800 N/mm e = 2.0 current model units: force = N, length = m
|
|
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 package using Parasolid as its geometry package can generate this file. It contains two geometries, SOLID4 and SOLID3. Contact is to be defined between these two geometries.
MARKER/30027, PART = 1005GRAPHICS/11,
, EXTERNAL,
, FILE = star_geneva.xmt_txt,
, ELEMENT = SOLID4,
, RM = 30027
!
MARKER/30028, PART = 1004
GRAPHICS/12,
, EXTERNAL,
, FILE = star_geneva.xmt_txt,
, ELEMENT = SOLID3,
, RM = 30028
CONTACT/1,, IGEOM=11,
, JGEOM=12,
, IMPACT,
, STIFFNESS = 1E6,
, DAMPING = 10,
, DMAX = 0.1,
, EXPONENT = 2.2
CONTACT/1,, IGEOM=11,
, JGEOM=12,
, POISSON,
, PENALTY = 1E5,
, RESTITUTION_COEFFICIENT = 0.6
CONTACT/1,, IGEOM = 11, 12
, JGEOM = 13, 14, 15
, IFLIP_GEOMETRY = 12
, JFLIP_GEOMETRY = 13, 15
, IMPACT,
, STIFFNESS = 1E6,
, DAMPING = 10,
, DMAX = 0.1,
, EXPONENT = 2.2
CONTACT/1, IGEOM = 7
, JGEOM = 6
, NORMAL_ROUTINE = cnforc1::CNFSUB
, FRICTION_ROUTINE = cnforc1::CFFSUB
, NORMAL_FUNC = USER(1.0E+004, 1.0, 1000, 0.1)/
, FRICTION_FUNC = USER(0.37, 0.30, 10.0, 10)
MARKER/30027, PART = 1005GRAPHICS/11, CURVE, RM = 30027, CID = 147
!
MARKER/30028, PART = 1004
GRAPHICS/12, CIRCLE, CM = 30028, RADIUS = 1.36
CONTACT/1,, IGEOM=11,
, JGEOM=12,
, POISSON,
, PENALTY = 1E5,
, RESTITUTION_COEFFICIENT = 1.0,
, AUGMENTED_LAGRANGIAN_FORMULATION