# 8.3. Contact Definition Block

The following set of commands are used to define contact. The contact definition block is placed in the `REGION` command scope. For an example of how to create a basic contact definition block, see Section 8.12.

    BEGIN CONTACT DEFINITION <string>name

      # Contact surface definition commands:

      SKIN ALL BLOCKS = <string>ON|OFF(OFF)
        [EXCLUDE <string list> block_names]
        # see Section 8.4.5

      CONTACT SURFACE <string>name CONTAINS <string list>surface_names | assembly_names
        # see Section 8.4.1

      CONTACT NODE SET <string>surface_name | assembly_name
        CONTAINS <string>nodelist_names
        # see Section 8.4.2

      RESTRICT CONTACT TO SUBDOMAIN DEFINED BY RADIUS <real> AND POINT <real> <real> <real>
        # see Section 8.4.4

      BEGIN CONTACT SURFACE <string>name
        # ... see Section 8.4.3
      END [CONTACT SURFACE <string>name]

      # friction model definition commands:
        # ... see Section 8.5

      #  interaction definition commands:

      BEGIN INTERACTION DEFAULTS
        # ... see Section 8.6.1
      END [INTERACTION DEFAULTS]

      BEGIN INTERACTION [<string>name]
        # ... see Section 8.6.2
      END [INTERACTION <string>name]

      ACTIVE PERIODS = <string list>period_names
        # see Section 8.7

      # contact algorithm option commands:

      SEARCH = <string> DASH(DASH)
        # see Section 8.9.1

      BEGIN DASH OPTIONS
        # ... see Section 8.9.2
      END

      ENFORCEMENT = <string>AL|KINEMATIC(AL)
       # see Section 8.9.3

      CONTACT RESIDUAL NORM SCALE FACTOR = <real>scale

      INITIAL OVERLAP REMOVAL = ON|OFF(OFF)
      BEGIN REMOVE INITIAL OVERLAP
        # ... see Section 8.9.4
      END [REMOVE INITIAL OVERLAP]
      OVERLAP REMOVAL ONLY = OFF|ON(OFF)

      BEGIN SURFACE OPTIONS
        # ... see Section 8.9.5
      END [SURFACE OPTIONS]

      BEGIN SEARCH OPTIONS [<string>name]
        # ... see Section 8.9.6
      END [SEARCH OPTIONS <string>name]

      BEGIN ENFORCEMENT OPTIONS [<string>name]
        # ... see Section 8.9.7
      END [ENFORCEMENT OPTIONS <string>name]

      COMPUTE CONTACT VARIABLES = ON|OFF|EVERY_STEP(ON)
       # see Section 8.10

      BEGIN DEBUG [<string>name]
        # ... see Section 8.10.1
      END [DEBUG <string>name]

    END [CONTACT DEFINITION <string>name]

The command block begins with the input line:

    BEGIN CONTACT DEFINITION <string>name

and is terminated with the input line:

    END [CONTACT DEFINITION <string>name]

The string `name` is a name for this contact definition. The name should be unique among all the contact definitions in an analysis and is used in diagnostics printed in the log file or error messages related to the contact definition.

A typical analysis will have only one `CONTACT DEFINITION` command block. However, more than one contact definition may be used. Each `CONTACT DEFINITION` command block creates its own set of contact constraints that operate independently from one another. Use of fewer contact definition commands blocks will tend to provide more efficient processing and better conflict resolutions when different types of contact constraints come into conflict.

Contact behaves somewhat differently in explicit versus implicit analyses. The current contact enforcement library is Dash. The detailed descriptions of each command show what options are available based on analysis type. Unless otherwise noted the behavior of a command is the same for both explicit and implicit.