## 当前位置：首页 >> 初三政史地 >>

MSC.Software Confidential

MSC Lunch and Learn Series 2009

By Chris Davidson and Karsten Thielecke

Updated: 14-Feb-2011

MSC.Software Confidential

Agenda
Introduction Contact Types Supported CAD Formats Flexible Body Contact Geometry Engines for Contact Contact Calculation Impact Method Restitution Method Impact or Restitution Method? Adams Solver Contact at the Solver Level Friction Contact Post-processing Typical Values for Contact Parameters Best Practices

2/14/2011

2

MSC.Software Confidential

Introduction
A contact element is a type of force defined between two objects Frictional effects may be accounted for in contacts To get the most accurate representation from contacts, it is important to keep in mind that the solution can be strongly dependent on the contact parameters and solution settings

2/14/2011

3

MSC.Software Confidential

Contact Types
There are 12 types of contacts that can be defined in Adams View
2D Rigid Contacts 3D Rigid Contacts 2D Flexible Body Contacts 3D Flexible Body Contacts

Both types of Flex Body contact require that the C solver be selected under Settings > Solver > Executable You currently cannot model contact between 2D and 3D geometry, except for sphere to plane

2/14/2011

4

MSC.Software Confidential

Contact Types
2D Contacts
Curve to Curve, Point to Curve, Curve to Plane, Point to Plane

Definition of
Curve: defined in XY-Plane, Z-Values should be constant Outward Normal points toward the direction of possible Contact. This Normal can be flipped.

Point: defined by a marker Plane: Outward-Normal is defined in positive Z-Direction of Plane-Marker

Special Remark (User has to assure this, i.e. with constraints)
Curve to Curve: Curves should be in same Plane Point to Curve: Point should be in XY-Plane of Curve Curve to Plane: XY-Plane of Curve should be in line to Z-Axis of Plane Point to Plane: Point could move in 3D For 2D contact, an algorithm is used that compares curve normal and tangent vectors

2/14/2011

5

MSC.Software Confidential

Contact Types
3D Contacts
Solid to Solid Sphere to Plane Sphere to Sphere

Definition of
Solid: Ellipsoid Cylinder Frustum Link Plate Torus Extrusion Revolution Constructive, solid geometry (geometry combined from several geometries) Generic 3D Parasolid Geometry, including extrusion and revolution Shell files (.shl, .slp, and .stl). Enclosed volume only.

Sphere: Ellipsoid not supported, use Solid to Solid instead Plane: Outward-Normal is defined in positive Z-Direction of Plane-Marker

2/14/2011

6

MSC.Software Confidential

File type: Imported
Parasolid* IGES* Step* Stereolithography Render Shell DXF* DWG*

Can be: Exported
Yes Yes Yes No No Yes Yes Yes

In Contact
Yes No No Yes Yes Yes No No

Yes Yes Yes Yes Yes Yes Yes Yes

2/14/2011

7

MSC.Software Confidential

Flexible Body Contact
2D Contacts
Flex Edge to Curve, Flex Edge to Plane, Flex Edge to Flex Edge

Definition of
Flex Edge: defined by a closed Edge of a Flexible Body Shell edges automatically detected (no need to anticipate contact regions) Curve: defined in XY-Plane, Z-Values should be constant Plane: Outward-Normal is defined in positive Z-Direction of Plane-Marker Flex Edge and Curve: Outward Normal points toward the direction of possible Contact. This Normal can be flipped.

Special Remark
Edges of planes are not considered for contact Point-to-plane and point-to-curve are also supported, where the point is on the flex body
Flex Edge to Curve Flex Edge to Plane Flex Edge to Flex Edge

2/14/2011

8

MSC.Software Confidential

Flexible Body Contact
3D Contacts
Flex Body to Solid, Flex Body to Flex Body

Definition of
Flex Body: Flexible Body is represented by a MNF-File (or MD DB). Solid: same as in 3D Rigid Contact

Special Remark
When a contact is created between a flex body and a solid geometry, it is mandatory that the rigid body is always the J geometry (Adams/View will not allow otherwise).

Flex Body to Flex Body

Flex Face to Solid

2/14/2011

9

MSC.Software Confidential

Flexible Body Contact
Limitations
Flexible bodies are based on linear theory and as a result cannot accurately capture large deformation (more than about 10%), plasticity, etc. Contact is approximated using the IMPACT function, which is a nonlinear spring-damper representation. For accurate capture of contact stresses, a nonlinear finite element program is recommended. Flexible bodies are based on a modal approach. This means that the solution is formed from a linear combination of mode shapes, the number of which are specified by the user when the flex body is created in an FE program. This effectively reduces the number of DOF to the number of modes, but it can lead to modal truncation effects. The user has to assure that the modal basis is sufficient for Flexible Body Contact Stresses can be recovered with an Adams/Durability license, assuming that stress mode shapes were stored in the modal neutral file (MNF) when the flex body was created. But the above limitations apply. The C++ Solver must be used and only the IMPACT contact method is supported

2/14/2011

10

MSC.Software Confidential

Flexible Body Contact

The basic approach to flex body contact is:
For the purposes of calculating penetration volume (s), the surface nodes of the FE mesh are grouped into triangles. The nodes that get an applied force are the ones in the intersection volume. The total contact force is distributed among the nodes proportional to the penetration of each node. Since it is the total contact force that gets distributed, it does not matter if one body has more penetrating nodes than the other. See KB article 1-76507061 for more information

2/14/2011

11

MSC.Software Confidential

Flexible Body Contact
Some additional remarks on Flexible Body Contact
Same Modal Formulation is used for 2D and 3D Flex Body Contact 3D Flex Body Contact supports both 2D edge and Face Contacts If you want to treat the flex body as rigid, you can always change its inertia modeling method to “rigid” and the faceted Mesh-Surface is used For animations, it is possible to see force graphics of either the total contact force or the contact force of individual nodes (see KB article 1-68804836) It is possible to export loads to FE (Nastran, Ansys, etc) for component stress analysis using the FEMDATA statement.

2/14/2011

12

MSC.Software Confidential

Geometry Engines for Contact
Two 3D contact libraries are available under Settings>Solver>Contacts…
Default_Library: faster, uses internal triangular tessellation (faceting). The faceting tolerance can be changed with Settings > Solver > Contacts Parasolids: slower but more accurate; uses true Parasolid geometry

For info on how to view the actual tessellated geometry, see KB 1-KB10495

Default Library

Parasolid

2/14/2011

13

MSC.Software Confidential

Geometry Engines for Contact
All 2D Contacts are analytical calculated Analytical Representation for 3D Contacts
Many facets used before No facets used now

Analytical approach used to determine the intersection of solids Contact force response likely to be smoother (i.e. less spikes) Much faster than Parasolid Contact Geometry Library Run-time Performance is model dependent

2/14/2011

14

MSC.Software Confidential

Contact Calculation
Contact is a nearly 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.

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.

2/14/2011

15

MSC.Software Confidential

Contact Calculation
Adams/Solver (C++) 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 (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 refined contact time. Adams/Solver (C++) rejects the current time step and uses the refined step size to accurately sense the onset of contact. Furthermore, the integrator order is set to one, so that Adams/Solver (C++) does not use the time history of the system to predict the future behavior of the system.

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.

2/14/2011

16

MSC.Software Confidential

Contact Calculation
Normal Force Calculation

There are two available contact force calculation methods available (in addition to user defined): Impact Restitution

2/14/2011

17

MSC.Software Confidential

Impact Method
This method makes use of the Adams solver “Impact” function (to be discussed later). If a contact between two bodies is defined, then a contact force will develop as the geometry of the two bodies begin to overlap (penetrate). For 3D, Adams will calculate the minimum distances from the centroid of the overlap volume to the nearest surface on each body. The distance between these two points is the penetration distance, g. A similar process is used for 2D. Body 2 Contact normal force is a function of g and dg/dt (stiffness and damping):
dg dt

g
N = kg e + STEP( g ,0,0, d max , c max )

Body 1
where

k = stiffness e = force exponent dmax = g at which to apply maximum damping coefficient (cmax)

2/14/2011

18

MSC.Software Confidential

Restitution Method
A simple coefficient of restitution is required (1.0 corresponds to perfectly elastic collision; 0.0 perfectly inelastic). A “penalty” value is also required, which has damping units. The penalty value works like a stiffness, but is not associated with a material property. In fact, for this formulation the ideal value would be infinity. Since this is not practical, the highest value should be chosen that will not sacrifice numerical robustness. The default value is a good place to start.
N = pε dg dt
Restitution force is important only for initial contact; velocities should reverse in one iteration of the integrator corrector.

The contact normal force is calculated as:
where

p = penalty ε = coefficient of restitution

For help in determining contact parameters, see KB articles 1-KB8470, 1-KB9629, and KB9155.

2/14/2011

19

MSC.Software Confidential

Impact or Restitution Method?
The restitution (or Poisson) method is designed with dynamic, intermittent contact in mind. It can be used in persistent contact conditions, but you may observe chattering or subtle violation of the unilateral contact constraint. The restitution method suffers less from numerical damping and may be more appropriate when energy loss is a key parameter. However, the impact method is more robust and MUCH less sensitive to error tolerances. For this reason, it is generally the recommended method. It is also the only method that can be used for contact with flex bodies.

2/14/2011

20

MSC.Software Confidential

When simulations are run from inside Adams View, the input file (.adm) for Adams Solver is not written out (it’s all done internally in memory) There are two Adams solvers: Fortran (original) and C++ (newer) Each has its own though very similar sets of statements, functions, and commands:
Statements: Lines in the Adams Solver .adm file that define the model itself (e.g., JOINT statement). Mathematical functions that can be called by the solver (e.g., DX function to calculate distance between markers). Lines in a solver script file (.acf) that can change parameters in an.adm file and control a simulation (e.g., SIMULATE command).

Functions:

Commands:

21 2/14/2011

MSC.Software Confidential

Contact at the Solver Level
IMPACT Function
The Impact contact method makes use of the IMPACT function: Usage protocall: F = IMPACT( x, x, x1 , k , e, cmax , d ) &
where k = stiffness e = force exponent x1 = distance above which there is no force (i.e., no impact) d = x at which to apply maximum damping coefficient (cmax)

2/14/2011

22

MSC.Software Confidential

Contact at the Solver Level
BISTOP Function
The BISTOP function is similar to the IMPACT function but models two stops (i.e., limits of travel) instead of one:
Usage protocall: F = BISTOP( x, x, x1 , x2 , k , e, cmax , d ) &
where k = stiffness e = force exponent x1 = lower bound of x. x < x1 implies a positive force value x2 = upper bound of x. x > x2 implies a negative force value d = penetration at which to apply maximum damping coefficient (cmax)

2/14/2011

23

MSC.Software Confidential

Contact at the Solver Level
CONTACT Statement
Adams/Solver defines contacts through the CONTACT statement: Arguments for the CONTACT statement:

Argument
AUGMENTED_LAGRANGIAN FORMULATION

Description
Available only for Restitution contact. Uses iterative refinement to ensure penetration is minimal and that normal force is relatively insensitive to penalty value. No longer available for C solver.

COULOMB_FRICTION = off/on DAMPING = r

Specifies whether to consider friction. When using IMPACT method, specifies damping coefficient (normally about 1% of stiffness)

2/14/2011

24

MSC.Software Confidential

Contact at the Solver Level
CONTACT Statement (continued)
Argument
DMAX = r

Description
When using IMPACT method, specifies the penetration at which full damping is applied.

EXPONENT = r

When using IMPACT method, specifies the exponent on the contact force stiffness term. To be covered in “Friction Section” Specifies up to 30 user-defined constants to compute friction from a user-defined CNFSUB subroutine. Specifies the executable file (library) and user subroutine (function) in that file to calculate friction. ID(s) of the GRAPHICS statement(s) that defines the geometric entities (marker, etc) associated with the IPart that may come in contact. ID(s) of the GRAPHICS statement(s) that defines the geometric entities (marker, etc) associated with the JPart that may come in contact.

FRICTION_TRANSITION_VELOCITY = r FRICTION_FUNCTION = USER(r1,…, [r30]) FRICTION_ROUTINE = library::function IGEOM = id

JGEOM = id

2/14/2011

25

MSC.Software Confidential

Contact at the Solver Level
CONTACT Statement (continued)
Argument
IFLEX = id

Description
ID of the FLEX_BODY statement that defines the first of two flex bodies between which a contact is modeled.

JFLEX = id

ID of the FLEX_BODY statement that defines the second of two flex bodies between which a contact is modeled. Specifies a list of GRAPHICS IDs associated with IGEOM objects to be reversed in contact direction (to ensure contact side is facing in correct direction). Specifies the IMPACT method be used for contact. Specifies a list of GRAPHICS IDs associated with JGEOM objects to be reversed in contact direction (to ensure contact side is facing in correct direction). To be covered in “Friction Section” To be covered in “Friction Section”

IFLIP_GEOMETRY = id1, id2, …, idN

IMPACT JFLIP_GEOMETRY = id1, id2, …, idN

MU_DYNAMIC = r MU_STATIC = r

2/14/2011

26

MSC.Software Confidential

Contact at the Solver Level
CONTACT Statement (continued)
Argument
NORMAL_FUNCTION = USER(r1,…, [r30])

Description
Specifies us to 30 user-defined constants to compute contact normal force is a user-defined CNFSUB subroutine.

NORMAL_FUNCTION = library::function

Specifies the executable file (library) and user subroutine (function) in that file to calculate normal force. When using the Restitution method, specifies the penalty value, which defines the local stiffness properties. Specifies that the Restitution method be used for contact. When using the Restitution method, specifies the coefficient of restitution. To be covered in “Friction Section” When using the Impact method, specifies the contact stiffness.

PENALTY = r POISSON RESTITUTION_COEFFICIENT = r

STICTION_TRANSITION_VELOCITY = r STIFFNESS = r

2/14/2011

27

MSC.Software Confidential

Friction
Friction Regimes
?
static (stiction) transition dynamic

Regimes

For geometry in contact, the friction coefficient is calculated as shown

?s ?d

Static Regime: (abs(v) < Vs)

? = ? s STEP (abs(v), - V s , - 1, V s , 1)sgn (v )
Vs Vd v

Transition Regime: ? = STEP (abs (v), V s , ? s , Vd , ? d )sgn (v ) (Vs < abs(v) < Vd)

?s ?d

Dynamic Regime: (abs(v) > Vd)

? = ? d sgn (v )
Vs

Vs Vd

2/14/2011

28

MSC.Software Confidential

Friction
During contact, a contact point is always calculated, with corresponding unit normal curve or surface vectors on each part (their directions are opposite). For 2D contact, opposite unit friction vectors are calculated, which are oriented along the direction of slip (perpendicular to the normal surface vectors). For 3D contact: There is also frictional torque due to relative rotation of the two contacting parts.

ω
(2/3)R R

Adams calculates the penetration cross-section, then calculates the radius R of a circle with equivalent area. The friction moment is ?N times the friction radius, which is (2/3)R. *

For 2007 R1 and earlier releases, the friction radius was calculated as simply R.

2/14/2011

29

MSC.Software Confidential

Contact Post-processing
Contact Tracks
Contact tracks are post-processed data that Adams/View computes from Adams/Solver data. Adams/Solver records every penetration event for each contact pair and makes a special INCIDENT entry in the results file.

2/14/2011

30

MSC.Software Confidential

Contact Post-processing
Contact Tracks
When Adams/View (or PostProcessor) needs to plot data it first runs a macro on the command line like this:
Analysis collate_contacts contact_name = CONTACT_1 analysis_name = Last_Run tolerance = 1000

The tolerance setting is a variance calculation based on the location of contact events. If incidents at successive time steps seem to be close together, they are grouped as a track. The tolerance controls the “radius” of the variance calculation and can be thought of as a spherical region. Small tolerances yield more tracks; large tolerances fewer tracks.

2/14/2011

31

MSC.Software Confidential

Contact Post-processing
Differencing between Stiffness and Damping Portions
It can be important to know which portions of a contact force are coming from the stiffness and which are coming from the damping terms

2/14/2011

32

MSC.Software Confidential

Typical Values for Contact Parameters
Good starting point for contact parameters:

2/14/2011

33

MSC.Software Confidential

Best Practices
Split Geometry to Get Multiple Contact Points
Split the Geometry in multiple entities
Finding Equilibrium maybe easier Distributed Forces System in Balance and more Stable Still one Contact with multiple Solids on one Part

2/14/2011

34

MSC.Software Confidential

Best Practices
Use this Environment Variable
to export the tessellated geometry to review the exported shell files to replace your original geometry with these shell files
Shell files are not tessellated again Tessellation could be a time consuming process (i.e. complex Geometry)

Use this Feature to
get different faceting tolerances for different geometries use a finer tessellation in point of interest

2/14/2011

35

MSC.Software Confidential

Best Practices
Use this Environment Variable
to control the export of intermediate contact events in the data for a contact model. The intermediate data will only be written to *.res file.
On: Enables intermittent contact output Off: Disables intermittent contact output (default value)

Use this Feature
to get additional output steps at contact incidents for review in Postprocessing or Debugging Handle with care
Results File can get huge
In combination with many output steps or long Simulation Times with a model containing a lot of Contacts

Performance of Solver will decrease because the additional output steps have to calculated and written out to the Results-File

2/14/2011

36

MSC.Software Confidential

Best Practices
Tips and Tricks from Tech Support
Modeling
Try 2D Approximation for Contact Modeling whenever possible - when applicable, represent the contact event using 2D elements. Choose from point-to-curve, curve-to-curve, or use the IMPACT function defined in a SFORCE, VFORCE, or GFORCE element. Try changing the Stiffness and Damping Parameters Modifying the damping-to-stiffness ratio can sometimes have a big effect on simulation time and can solve Convergence Problems of the Integrator. Have a close look which Portion in the Contact Force is deriving from the Stiffness and Damping Reduce Stiffness or Penalty by a Factor of 10 and see what happens Try using a bigger (unrealistic) dmax (i.e. 0.1) in combination with a bigger (even unrealistic) Damping Value and a value of e=1.5 for Units in mm. Reduce Damping. This decreases the duration of the contact and can help simulations. Run first with no Friction, then with Dynamic Friction only, finally with Static / Dynamic Friction. If you don’t need Static Friction, then turning it off will speed up the analysis. Don’t make the Stiction Transition Velocity too small. Rule of thumb: Vs > ERROR. Don’t put Stiction and Friction Transition Velocities too close together or make them too small. This cause a very small Step Size of the Integrator.

2/14/2011

37

MSC.Software Confidential

Best Practices
Tips and Tricks from Tech Support
Statics
Try modeling that Contacts are in Contact at beginning of Simulation if you want to start with Static Equilibrium or “build” a different Model for Statics (with additional Forces or Constraints active only in Static Solutions)

Integrator
Try using the SI2 Integrator with an error of 0.01 or HHT Integrator (C++ only) with its default Error Tolerance 1e-5 or even a smaller Error Tolerance. Start with an Initial Output Step Size of 0.001 to get a Graphical Feedback on the Model. If everything runs fine you can increase the Output Step Size from there. Try using the modified corrector, which removes Force from the Error Control. Set the maximum Integration Order to 2 for GStiff using Integrator/KMax = 2. Lower-Order Integrators are more stable than Higher-Order Integrators because of the Prediction for Contact Incidents is not using the History from previous Steps far away from the new Solution Set HMax to a small value to prevent the integrator from taking large steps. Try increasing HMax from i.e. 0.01 to 0.02 and setting Interpolate=On, which doesn’t force the Integrator’s Step to correspond to an Output Step – take care with this!

Output Data
Reduce the results file contents or switch it off. Contact tracks are saved to this file, which can result in a huge amount of data which may not be needed.

2/14/2011

38

MSC.Software Confidential

Best Practices
Tips and Tricks from Tech Support
Try use of Design Studies
Get the Model running with Default Contact Values Start with Soft Stiffness to make sure the Model just runs Then parameterize the Contact Parameters k, e, cmax and dmax Run a Design Study on each Parameter above using an order of Magnitude higher / lower (maybe just 3 runs?: x/10, x and x*10 ) Often one of the Parameters (e or c maybe?) don’t affect the Results. Then you know you can ignore them and focus on the others. Tune the other settings for simulation speed and robustness….

By the way:
You can also use Design Studies on Integrator Parameters to get a better Performance and to see what impact the Parameters have on the Results

2/14/2011

39

MSC.Software Confidential

Thank You!

2/14/2011

40