# SOFT option

**SOFT = 1 option**

The contact formulation invoked by setting Soft=1 on optional card A of `*CONTACT`

is not so radical a departure from the default penalty contact formulation (Soft=0) as the Soft=2 contact formulation. Soft=1 is more or less the same as Soft=0 EXCEPT in the way the contact stiffness is determined. Soft=1 calculates contact stiffness based on stability considerations taking into account the timestep. In other words, you can liken Soft=1 contact to a group of simple spring-mass systems, each with a Courant timestep matched to the actual timestep used in the simulation. Soft=1 will generally be more effective than Soft=0 for soft materials contacting stiff materials or where the mesh densities of the two contacting surfaces are dissimilar.

When SOFT=1, we use the max of the stiffness as calculated by soft=0 and soft=1. Therefore reducing SOFSCL has no effect if the soft=0 stiffness is larger.

`k = max(SLSFAC * SFS * k0, SOFSCL * k1)`

where

- k is the penalty stiffness
- SLSFAC is user input on
`*CONTROL_CONTACT`

- SFS is user input on
`*CONTACT`

card 3 - SOFSCL is user input on
`*CONTACT`

optional card A - k0 is the stiffness calculated from material bulk modulus and element dimensions
- k1 is the stiffness calculated from nodal masses and the solution time step.
Note: For two way contact like

`*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE`

, replace SFS with SFM (user input on *CONTACT card 3) in the above equation.lpb, jpd 12/2002

**SOFT = 2 option**

When using SOFT=2, the contact stiffness is calculated based on the actual timestep. The **contact timestep** reported in the d3hsp is not meaningful for SOFT = 2 contact.

The initial penetrations are not eliminated when SOFT=2 is used, rather the initially penetrated location becomes the baseline from which additional penetration is measured. It's this additional penetration that produces contact forces. The initial penetration produces no force. If, during the simulation, the segments in contact move apart to where the current penetration is less than the baseline penetration, the current penetration becomes the new baseline.

The following FAQs provide additional information for SOFT=2 contact. Subject: Segment based contact (called alternate penalty in manual, also pinball)

### What is it and how is it used?

Segment based contact is a general purpose shell and solid element penalty type contact algorithm. It does not work with beams. It is activated by setting soft=2 on optional card A (keyword) or put a 2 in columns 1-5 of optional control card 3 (structured). This option is available for contact types 3, a3, 10, a10, 4, 13, a13, 14, 15

Many parameters available for standard penalty contact are also available for segment based contact. Defaults are the same as for the standard penalty contacts except that all segment based contacts use the true shell thickness by default.

- static, dynamic, exponential decay parameters
- forces printed to ncforc and binary interface for files
- Scale factor on default slave and master penalty stiffness
- Viscous damping coefficient
- Optional slave and master thickness and thickness scale factor for shells
- Birth time and death time
- Airbag thickness as a function of time
- Number of cycles between bucket sorts
- Number of cycles between contact force updates
- Symmetry plane option

Others are not.

- small penetration contact search option (not needed)
- PENMAX (not needed)
- coefficient of viscous friction (not available)
- max parametric coordinate in segment search (not needed)
- search depth for automatic contact (not needed)
- Coulomb friction scale factor (not available)
- viscous friction scale factor (not available)
- thickness option flag for 3, 5, and 10 (not needed)
- shooting node logic (not needed)

### How do the different segment based contacts differ from each other?

Internally, there is only one segment based contact algorithm with options that are chosen by keyword.

- automatic vs. non automatic contacts

The automatic contacts do shell segment orientation judgments on the fly, but the non automatic do no shell orientation at all, not even during initialization! The motivation for the no orientation option was to allow the user to overcome problems when automatic orientation gets it wrong and penetration occurs. Certain geometries can confuse the automatic orientation logic which determines shell segment orientations during each bucket sort for pairs of segments that are close but not yet in contact. The front of each segment is determined such that each segment faces the center of the other segment.

- one_way_surface_to_surface vs. surface_to_surface

Because segment based contact checks pairs of segments for penetration, a judgment must be made prior to calculating penalty forces about which segment is the master and which is the slave. As it turns out, it is almost always correct to judge the least penetrated element to be the master and the most penetrated to be the slave. This judgment may be reversed by a warped element check since warped elements may be the slave even if least penetrated. That is the logic used by the single_surface and surface_to_surface contacts. The one_way_surface_to_surface overrides this judgment and simply uses the master and slave segments as input by the user.

- airbag_single_surface vs. single_surface

When airbags are initially folded, many thin layers may be piled on top of each other which causes long bucket sort lists and slow contact. To speed up contact and to try to avoid inappropriate contact forces, the airbag contact option removes segment pairs from the bucket sort list if both segments belong to an airbag, and if the inside of one segment is facing the outside of a segment implying that the inside of the bag would contact the outside which is generally not possible.

### How does segment based contact differ from the standard penalty contacts?

Because contact is detected between segments, it is nearly impossible for nodes to penetrate undetected as can happen with the standard penalty contact when nodes slip between segments at corners.

### Please explain the detail of *penetration of one segment into another segment*. If segment based contact does not check *penetration of nodes* of the segment, what is checked for penetration?

It's a complicated thing to explain and to comprehend. A segment A is deemed to have penetrated another segment B when at least one node of segment A has penetrated each of the five planes associated with segment B. It is not necessary that the same node of segment A penetrate each of the five planes. The five planes consist of the plane containing the segment plus the four edge planes of the segment. An edge plane is defined as being perpendicular to the segment and containing one edge of the segment. The attached gif file (soft2.gif) shows three examples of situations where segments are contacted by other segments, but not at nodes. In these cases, a node to segment penetration check will fail to detect contact. The segment-based contact uses logic described above to check not for penetrating nodes, but rather for penetrated segments. To check if a segment is penetrated, I need to check if its surface is penetrated and if each of its edges is penetrated. In the **surface to surface** example in the attached figure, each of the edges of both segments are clearly penetrated by at least one node of the other segment so contact is detected.

There is no nodal release logic needed with automatic contacts because the initially penetrated side is stored as long as a segment pair remains in contact.

Erosion of shells and solids is handled automatically but unless an eroding contact is used (type 14,15) the memory allocated for contact segments may be insufficient when segments are added due to erosion.

Scaling of penalty forces is very similar to the soft constraint method, which is based on the stability of the local system, 2 masses (segments) separated by a spring (penalty stiffness). The attempt of this method is to scale the stiffness of each interacting pair to an optimum level so that the system remains stable, and penetration small. In reality, penalty stiffness is added without any added mass so we are adding massless springs that depend on segment mass for stability. However, since the segment mass is already accounted for in element time step calculation, there is no way to guarantee stability with any added penalty stiffness. For this reason and because multiple impacts with the same segment are possible, the stiffness is scaled back to a small percentage of the calculated stability limit. For shells, the segment mass is equal to the element mass. For solids, it is equal to 1/2 the element mass. The penalty stiffness is

`k = 0.5*slsfac*sfs*(m1*m2/(m1+m2)/(dtc)**2`

where slsfac is the default penalty stiffness, sfs is the slave penalty stiffness factor (similar equation for master) m1 and m2 are the segment masses, and dtc is the time step for contact which is set to 1.05*dt2 where dt2 is the initial solution time step. If during the calculation, dt2 rises above dtc, then dtc is reset as 1.05 times the current solution time step, and the penalty stiffness reduced as a result.

Please note, that the solution time step includes the users supplied time step scale factor, tssfac so the contact stiffness becomes greater when tssfac is reduced. This stiffening effect can be quite significant since the square of the time step appears in the denominator it may be desirable to reduce the penalty stiffness when tssfac is reduced.

Initially penetrated nodes are not moved during initialization. Instead, the initial penetration for each segment pair is stored and subtracted from the current penetration before calculating penalty forces. This same logic is used throughout the calculation so that if a node happens to go undetected, it will not be shot out by large penalty forces. The disadvantage of this method is that parts may penetrate too much, but in most applications it is not noticeable. It could be a problem if there is a lot of sliding (such as deep drawing). As one segment slides along a sheet of segments, it will penetrate a little deeper each time it passes from one segment to another because it will enter the new segment from the side. This initial penetration will be ignored and additional penetration must occur to generate sufficient contact forces.

Although the airbag thickness vs. time load curve may be used with segment based contact, it may not be desirable as the growing thickness of the bag tends to add artificial energy to the system and cause the sliding interface energy to become negative. Because segment based contact ignores initial penetrations, airbag simulations can be run without this option.

Segment based contact tends to me more robust at corners in a mesh than standard penalty contact for two reasons. First, as mentioned above, nodes cannot slip between segments at shell corners. Second, more information is available so it is not hard to apply penalty forces in the correct direction at corners in solid element meshes. As a result, the symmetry plane option is not generally needed, but it is still available.

### The **pinball** edge to edge contact option:

Segment based contact uses a parameter called **EDGE** that activates an edge to edge contact check that works for both shell edges and solid element edges. This method inaccurate and unreliable, and not recommended for general use. Edge to edge contact is probably better treated by type 26 contact. However if the EDGE option is used, it's usually better to isolate the problem edge penetration area and treat it with a separate contact definition than to use the EDGE option in a complex simulation. That said, here is how it works.

Edge-edge penetration is judged to occur when a segment pair is first found to be in contact, and both segments are penetrated by a large distance where

`large distance = (1-EDGE/2)*(t1+t2) for 0 < EDGE <= 2`

and t1 and t2 are the segment thicknesses. When EDGE=0, the edge contact algorithm is not used. For small values of EDGE, the penetration must be large for the edge-edge contact to be detected, t1+t2 in the limit. For EDGE=2, only edge-edge contact will be detected for any finite depth of penetration, which means that all contacts will be treated as edge-edge contact. Therefore, EDGE>1 is discouraged as it is too likely to misjudge surface penetrations as edge penetrations.

The edge-edge penetration is detected, a force calculation is done by the **pinball** method in which segments are represented by spheres that bounce off of each other. The force is along the line between segment centers. The spheres are large enough to contain the entire segment (assuming zero thickness) so they extend beyond the edges, possibly by a long distance for segments with large aspect ratio. To avoid flying nodes, the initial penetration of spheres is subtracted from the current depth of penetration prior to calculating penalty forces.

The thickness of solid element segments is zero - oops, a bug was just found. It looks like the EDGE parameter should be left at zero for contact with solids until this is corrected. Solid element thickness will soon be half of the solid element thickness where the thickness is evaluated by element volume divided by segment area.

### More on edge-edge contact (5/2002):

The **pinball** edge option is an attempt to deal with the **edge to edge ** contact case. It simply represents each segment by a sphere that encompasses the nodes of the segment, and the forces are calculated to make the pinballs bounce off of each other. The pinball has a radius equal to the distance from the segment center to the most distant node. The pinball will extend beyond the segment edges and surface and therefore does not accurately represent the segment shape. I recommend that you do not use this option as it does not handle edge to edge contact as well as the automatic general contact. Please use the default parameter value, EDGE=0.

In version 970, I have added an accurate **edge to edge** option that does not use the pinball idea. Instead, when edge to edge contact is detected, it identifies the edges that are in contact and calculates a penalty force that is normal to those edges. This new option makes the old **pinball** approach obsolete although it will still remain as an option for backward compatibility between versions.

### Addendum:

SOFT=2 is generally good at handling dissimilar mesh refinements or dissimilar material stiffnesses.

### Version 970 options:

Optional Card A, 5th field SBOPT (previously EDGE): segment based contact options ............... .10000E+01

- eq.0: default is 2
- gt.0 and lt.2: pinball edge-edge contact
- eq.2: default, assume planer segments
- eq.3: warped segment option
- eq 4: sliding option
- eq 5: do options 3 and 4

Optional Card A, 6th field DEPTH: search depth options for segment based contact 2 * eq.0:default is 2

- eq.2:check surface penetration only
- eq.3:check surface penetration but measure depth of penetration at segment edges as well as nodes
- eq.5:check surface penetration and also edge to edge penetration

For contact which includes edge-edge treatment in non-airbag contact problems, SBOPT=3, DEPTH=5 is recommended by Lee Bindeman.

For folded airbag contact (fabric-fabric contact) with SOFT=2, refer to contact.airbag.

Segment based contact (SOFT=2) does not use the shooting node logic parameter. There is no need for shooting node logic because the segment based contact ignores initial penetrations. Penalty forces are proportional to penetration in excess of the initial penetration. In equation form, this is

`f = k*(d-di)`

where f is a force, k is penalty stiffness, d the current penetration depth, and di the initial penetration depth.

I should mention that the ignore option (optional card C, or 4th card of `*CONTROL_CONTACT`

) causes the default contact to ignore initial penetrations which also makes shooting node logic unnecessary.

Release threshold:

Segment based contact does not use PENMAX. There is no need to release segments when penetration is large because the side of impact is recorded for each shell segment in contact. As long as a pair of segments remains in contact, penalty forces push back to the side of impact.

User's manual states that only ISYM, I2D3D, SLDTHK, and SLDSTF are active on Optional Card B.

lpb, jpd 12/2002 revised 5/16/2003