<!-- source-page: 321 -->

```matlab
*PART, NAME=Flange
    *NODE, NSET=Flange
    1, ...
    2, ...
    ...
    360, ...
    *ELEMENT, ELSET=Flange
    1, ...
    2, ...
    ...
    200, ...
    *SOLID SECTION, ELSET=Flange, MATERIAL=Steel
    *ELSET, ELSET=Flat, GENERATE
    176, 200, 1
    *SURFACE, NAME=Flat
    Flat, S1
*END PART
*PART, NAME=Pin
    *NODE, NSET=RefPt
    1, ...
    *SURFACE, TYPE=REVOLUTION, NAME=Pin
    ...
    *RIGID BODY, REF NODE=1, ANALYTICAL SURFACE=Pin
*END PART
*ASSEMBLY, NAME=Hinge
    *INSTANCE, NAME=Flange-1, PART=Flange
    <positioning data>
    *END INSTANCE
    *INSTANCE, NAME=Flange-2, PART=Flange
    <positioning data>
    *END INSTANCE
    *INSTANCE, NAME=Pin-1, PART=Pin
    <positioning data>
    *END INSTANCE
    *ELSET, ELSET=Top
    ...
    *NSET, NSET=Output
    ...
*END ASSEMBLY
*MATERIAL, NAME=Steel
... 
```

<!-- source-page: 322 -->

# Notes

• All of the nodes and elements that describe the Flange part are defined between the \*PART and \*END PART options. The section definition (\*SOLID SECTION) must also appear within the part definition.   
• At least one element set must be defined within the Flange part so that the section definition can refer to it. Additional node and element sets can also be defined in the part.   
• The Flange part is instanced twice in the Hinge assembly. Therefore, the model contains two element sets named Flat: one belongs to part instance Flange-1, and the other belongs to part instance Flange-2.   
• When a meshed part is instanced, the node and element numbers are repeated in each part instance.   
• The Pin part is instanced once. It is a rigid body created from an analytical surface (see “Analytical rigid surface definition,” Section 2.3.4).   
• Keywords can be indented to help clarify the definition of each part, part instance, and assembly.

# Organizing the model definition

In a traditional Abaqus model without an assembly definition, the components of the model fall into one of two categories: model data (step independent) and history data (step dependent). In an Abaqus model that is organized into an assembly of part instances, all components are further categorized and must fall within the proper level: part, assembly, instance, step, or model. Step-level components correspond to history data; all step-dependent component definitions must appear within a step definition (see “Defining an analysis,” Section 6.1.2). Model-level data include everything that does not fall into part-, assembly-, instance-, or step-level data (for example, material definitions; see Figure 2.10.1–3). The proper level within which a keyword option must appear in the input file is indicated at the top of each section in the Abaqus Keywords Reference Guide.

# Rules for defining an assembly

The organization shown in Figure 2.10.1–3 is achieved by following a few basic rules.

# Referring to items between levels

When creating a model, it is often necessary to refer to something outside of the current level; for example, a section definition within a part must refer to a material, which is defined at the model level. Loads defined within a step must refer to sets within the assembly. But some references between levels are not allowed; for example, a set in one part instance cannot refer to nodes in another part instance. The following references are allowed:

<!-- source-page: 323 -->

![](images/page-323_b7005d1e744e36ffb246a779bc262b0d01bf954fde2c2631a3b80e7ce5cc219b.jpg)

<details>
<summary>flowchart</summary>

```mermaid
graph TD
    A["An Abaqus model"] --> B["Part"]
    A --> C["Assembly"]
    A --> D["Analysis Step"]
    B --> B1["Mesh"]
    B --> B2["Set"]
    B --> B3["Surface"]
    B --> B4["Local Coordinate System"]
    B --> B5["Section Assignment"]
    B --> B6["Reference Point"]
    C --> C1["Set"]
    C --> C2["Surface"]
    C --> C3["Section Definition"]
    C --> C4["Constraint"]
    C --> C5["Reference Point"]
    C --> C6["Local Coordinate System"]
    C --> C7["Section Definition"]
    C --> C8["Constraint"]
    C --> C9["Reference Point"]
    C --> C10["Part Instance"]
    C --> C11["Model Instance"]
    C11 --> C111["Mesh"]
    C11 --> C112["Set"]
    C11 --> C113["Surface"]
    C11 --> C114["Local Coordinate System"]
    C11 --> C115["Section Definition"]
    C11 --> C116["Constraint"]
    C11 --> C117["Reference Point"]
    C11 --> C118["Part Instance"]
    C11 --> C119["Material"]
    C11 --> C1110["Section Definition"]
    C11 --> C1111["Amplitude"]
    C11 --> C1112["Physical Constants"]
    C11 --> C1113["Interaction Property"]
    C11 --> C1114["Interaction"]
    C11 --> C1115["Initial Condition"]
    C11 --> C1116["Boundary Condition"]
    C11 --> C1117["Boundary Property"]
    C11 --> C1118["Interaction"]
    D --> D1["Output Database Request"]
    D --> D2["Restart Output Request"]
    D --> D3["Diagnostic Output Request"]
    D --> D4["Load"]
    D --> D5["Boundary Condition"]
    D --> D6["Predefined Fields"]
    D --> D7["Interaction Property"]
    D --> D8["Interaction"]
```
</details>

Figure 2.10.1–3 Organization of a model defined in terms of an assembly of part instances.

<table><tr><td>A definition within:</td><td>Can refer to items within:</td></tr><tr><td>the assembly</td><td>an instancethe model</td></tr><tr><td>an instance</td><td>the model</td></tr><tr><td>a part</td><td>the model</td></tr><tr><td>a step</td><td>the assemblyan instancethe model</td></tr></table>

These rules are illustrated in Figure 2.10.1–4.

# Naming conventions

The Abaqus naming conventions allow for a model that contains an assembly. When something is defined within a part, instance, or the assembly and is referred to from outside its level, the complete name must be used to identify it (set Flat of instance Flange-2 in assembly Hinge, for example). A complete name is given in the input file using “dot” notation: each name in the hierarchy is separated by a “.” (period). For example, some complete names in the Hinge assembly are

<!-- source-page: 324 -->

![](images/page-324_0d469db21b73ed8744ca55e407674379f095b94e14067fd0629b6150144d008e.jpg)

<details>
<summary>flowchart</summary>

```mermaid
graph TD
    A["Assembly"] --> B["Part instance"]
    B --> C["Model"]
    C --> D["Part"]
    D --> E["Step"]
    E --> F["Allowable reference between levels"]
    F --> A
    style A fill:#f9f,stroke:#333
    style B fill:#ccf,stroke:#333
    style C fill:#cfc,stroke:#333
    style D fill:#fcc,stroke:#333
    style E fill:#ffc,stroke:#333
    style F fill:#cfc,stroke:#333
```
</details>

Figure 2.10.1–4 Allowable references between levels.

Hinge.Flange-2.Flat

An element set that belongs to part instance Flange-2.

Hinge.Output

A node set that belongs to assembly Hinge.

Such names would be used to refer to the sets from outside the assembly. The same syntax is used to refer to individual nodes or elements.

Hinge.Flange-1.3

A node or element that belongs to part instance Flange-1.

Hinge.Flange-2.11

A node or element that belongs to part instance Flange-2.

As always, the context determines whether a node or element is being referred to. The “.” has special meaning; it is used to separate the individual names in a complete name. Therefore, the “.” cannot be used in labels such as set and surface names. For example,

<table><tr><td>*ELSET, ELSET=Set.1</td><td>Error</td></tr><tr><td>*ELSET, ELSET=Set1</td><td>OK</td></tr></table>

Complete names are limited to 80 characters, including the periods.

However, when referring to a name in an input file that is not defined in terms of an assembly of part instances, the “.” in the name should be replaced by underscores. Such a situation can occur, for example, when an element set from a previous analysis is referred to by the current analysis but the current input file is not defined in terms of an assembly of part instances.

<!-- source-page: 325 -->

# Quoted labels

Labels for set and surface names can be defined by enclosing the label in quotation marks (see “Input syntax rules,” Section 1.2.1). Any subsequent use of the label in a complete name must be enclosed in quotation marks as well. For example,

```txt
*PART, NAME=Flange
...
*ELSET, ELSET="Set 1"
...
*END PART
...
*ELEMENT OUTPUT, ELSET=Hinge.Flange-1."Set 1" 
```

# Example

An assembly node set Top can be defined by the following syntax:

```txt
*ASSEMBLY, NAME=Hinge
...
*NSET, NSET=Top
Flange-1.2, Flange-1.5, ...
Flange-2.1, Flange-2.4, ...
*END ASSEMBLY 
```

Since the node set is defined within the assembly level, Hinge. is not part of the complete names given on the data lines. However, the prefix Hinge. would be required to request output for this node set, since the output request exists within the step definition, which is outside the assembly level.

```txt
*STEP
...
*NODE OUTPUT, NSET=Hinge.Top
*END STEP 
```

Similarly, a boundary condition could be applied to a set defined for part instance Flange-2.

```txt
*STEP
...
*BOUNDARY
Hinge.Flange-2.FixedEnd, 1, 3
*END STEP 
```

# The mesh (nodes and elements)

• The mesh can be defined either on a part or on an instance of that part (not both). Typically, parts are meshed and instances inherit that mesh, but it is not required. If, for example, you want to use fully integrated elements for one part instance and reduced-integration elements for another, or if

<!-- source-page: 326 -->

you want to define a more refined mesh on one part instance than on another, you must mesh the instances separately.

– If the mesh is defined on a part, it is inherited by every instance of that part.   
– If the mesh is defined on a part, it cannot be redefined (overridden) on an instance of that part. In other words, if the node and element definitions appear within the part definition, they cannot appear within the instance definition for that part.   
– If a mesh is not defined on a part, it must be defined on every instance of that part.

• A part definition is required even if no mesh is defined on it. In such cases the empty part definition is used only to relate various instances to each other via the instance definitions. This allows the Visualization module to group information by part.

• Rebar must be defined within a part along with the elements that are being reinforced.   
• Reference nodes can be created at the assembly level.   
• Only mass, rotary inertia, capacitance, connector, spring, and dashpot elements can be created at the part or the assembly level. All other element types must be defined within a part (or part instance). To define assembly-level elements that refer to part-level nodes, include the part instance name when defining the element connectivity. For example:

\*ELEMENT, TYPE=MASS

1, Instance-1.10

# Section definitions

• Sections must be assigned where the mesh is defined (either within a part definition or within each instance of the part).   
• If a part is meshed, all instances of that part have the same element types and are made of the same materials.   
• The set referred to by a section definition must be created at the same level as the mesh and section definition.   
• If the part is meshed, the section assignment cannot be overridden at the instance level.

# Sets and surfaces

• Sets and surfaces (rigid or deformable) can be created within a part, part instance, or the assembly.

– Sets and surfaces can be created on a part if a mesh is defined on the part.   
– Sets and surfaces defined on a part are inherited by each instance of that part.   
– Assembly-level sets and, in Abaqus/Standard, slave surfaces can span part instances.

• If an element set or node set definition with the same name appears more than once at the same level, the new members are appended to the set.

• A surface definition cannot appear more than once with the same surface name within the same level.

<!-- source-page: 327 -->

• New sets and surfaces can be created on a part instance. If a set or surface is defined on a part instance and a set or surface with that name was not defined on the part, the set or surface is added to the instance.   
• Sets and surfaces cannot be redefined on a part instance. If a set or surface is defined on a part instance and a set or surface with that name was also defined on the part, an error will be generated.   
• Sets and surfaces are not step dependent. All sets and surfaces must be defined within a part, part instance, or the assembly.

# Defining assembly-level sets

You can refer to a part instance from an element set or node set definition as a shortcut to using the complete name when defining assembly-level sets. Specify the name of the instance that contains the specified elements or nodes. To add elements or nodes from more than one instance to the set, repeat the element set or node set definition (see “Node definition,” Section 2.1.1, and “Element definition,” Section 2.2.1, for more details).

Input File Usage: Use the following options to define assembly-level sets: \*NSET, NSET=NsetName, INSTANCE=InstanceName \*ELSET, ELSET=ElsetName, INSTANCE=InstanceName

# Adding sets and surfaces on restart

• Existing sets and surfaces cannot be redefined on restart.   
• Analytical surfaces cannot be created on restart.   
• New sets and surfaces (excluding analytical surfaces) can be added to part instances or the assembly on restart. To add a set or surface, give the complete name. As in the original analysis, you can refer to the part instance name from the element set or node set definition to define an assembly-level set in the restart analysis. For example,

```txt
*HEADING
*RESTART, READ, STEP=1
** Add element set "Bottom" to assembly "Hinge":
*ELSET, ELSET=Hinge.Bottom
Flange-1.40, Flange-2.99
** Add node set "Top" to assembly "Hinge":
*NSET, NSET=Hinge.Top, Instance=Flange-1
21, 22, 23, 24, 26, 28, 31
*NSET, NSET=Hinge.Top, Instance=Flange-2
21, 22, 23, 24, 26, 28, 31
**
** Add element set "Right" to part instance "Flange-2":
*ELSET, ELSET=Hinge.Flange-2.Right
16, 18, 20, 29
** 
```

<!-- source-page: 328 -->

```txt
** Add surface "surfR" to part instance "Flange-2":
*SURFACE, TYPE=ELEMENT, NAME=Hinge.Flange-2.surfR
Right, S1
**
*STEP
...
*END STEP 
```

# Rigid bodies

Rigid bodies can be defined at the part or assembly level.

• To define a rigid body at the part level, include the rigid body and rigid body reference node definitions within the part definition.   
– Rigid elements, deformable elements, and analytical surfaces cannot be combined within a part.   
– If a rigid body is defined within a part, all deformable, rigid, or connector elements in the part must belong to the rigid body.   
– Mass, rotary inertia, spring, dashpot, and heat capacitance elements can be included in a part that contains a rigid body definition, but these elements cannot belong to the rigid body.   
– To create a part-level rigid body from an analytical surface, include the surface definition within the part definition. Only one analytical surface is allowed per part.

• To define a rigid body at the assembly level, include the rigid body and reference node definitions within the assembly definition.

– A rigid body can be created at the assembly level from any combination of rigid elements, deformable elements, and up to one analytical surface.

– The rigid body definition can refer to assembly-level or part-level sets.

– A part that contains a rigid body definition cannot be included in an assembly-level rigid body.

• You can define a discrete surface at the part or assembly level independent from the rigid body definition.

• An analytical surface definition can appear only within a part definition, even if the rigid body is defined at the assembly level.

# Materials

• Materials are defined at the model level so that they can be reused. The material definition cannot appear within a part, part instance, or the assembly.

• All materials in a model must have unique names.

# Interactions

An interaction is a relationship between surfaces or between a surface and its environment. Interactions in Abaqus include contact, radiation, film conditions, and element foundations.

<!-- source-page: 329 -->

• Interactions are defined at the model level in Abaqus/Standard and at the model level or within steps in Abaqus/Explicit; they cannot be defined within a part, assembly, or instance.

# Constraints

Constraints are inflexible coupling mechanisms such as MPCs and equations (see “Kinematic constraints: overview,” Section 35.1.1).

• Constraints can be defined within a part or the assembly. They can be defined within a part instance if the mesh is defined within the part instance. Constraints should be defined at the assembly level if they constrain the motion of one part instance relative to another.   
• Constraints are translated and rotated according to the positioning data given for a part instance.

# Distributions

Distributions are used to specify arbitrary spatial variations of selected element properties, material properties, local coordinate systems, and spatial variations of initial contact clearances (see “Distribution definition,” Section 2.8.1).

• Distributions should be defined at the level at which they are used. For example, if a distribution is used to define shell thicknesses, the distribution should be defined at the same level as the section definition that refers to it. If a distribution is used to define a material property, it should be defined at the model level with the material definition.

# Examples

In the following examples most parameters and data lines are omitted for clarity.

<table><tr><td>Example 1</td><td>Notes</td></tr><tr><td>*PART, NAME=PartA</td><td></td></tr><tr><td>*NODE ...</td><td>The mesh is defined on the part.</td></tr><tr><td>*ELEMENT ...</td><td></td></tr><tr><td>*SOLID SECTION, ELSET=setA, MATERIAL=Mat1</td><td>Section assignment must appear within the part level if the mesh is defined on the part.</td></tr><tr><td>*SURFACE, NAME=surf1 setB, ...</td><td>error Element set setB is not defined at the part level.</td></tr><tr><td>*ELSET, ELSET=setA</td><td>Sets and surfaces can be defined on the part since the mesh is defined on the part.</td></tr><tr><td>*NSET, NSET=setA</td><td></td></tr><tr><td>*SURFACE, NAME=surf2 setA, ...</td><td></td></tr><tr><td>*END PART</td><td></td></tr><tr><td>*ASSEMBLY, NAME=Assembly-1</td><td></td></tr><tr><td>*INSTANCE, NAME=I1, PART=PartA</td><td></td></tr></table>

<!-- source-page: 330 -->

<table><tr><td colspan="2">Example 1</td><td>Notes</td></tr><tr><td>*NODE</td><td>error</td><td rowspan="3">Mesh and section assignment cannot be defined on the instance if they are defined on the part.</td></tr><tr><td>*ELEMENT</td><td>error</td></tr><tr><td>*SOLID SECTION</td><td>error</td></tr><tr><td>*ELSET, ELSET=setA</td><td>error</td><td rowspan="3">Sets and surfaces cannot be redefined on the instance.</td></tr><tr><td>*NSET, NSET=setA</td><td>error</td></tr><tr><td>*SURFACE, NAME=surf2</td><td>error</td></tr><tr><td>*ELSET, ELSET=setB</td><td></td><td rowspan="2">New sets and surfaces can be defined on the instance.</td></tr><tr><td>*NSET, NSET=setB</td><td></td></tr><tr><td>*SURFACE, NAME=surf3</td><td></td><td rowspan="2">Set and surface definitions can refer to inherited sets.</td></tr><tr><td>setA, ...</td><td></td></tr><tr><td>*END INSTANCE</td><td></td><td></td></tr><tr><td>*END ASSEMBLY</td><td></td><td></td></tr></table>

In the second example the instances are meshed.

<table><tr><td>Example 2</td><td>Notes</td></tr><tr><td>*PART, NAME=PartB*END PART</td><td>The *PART and *END PART options are required, even when the instance is meshed.</td></tr><tr><td>*PART, NAME=PartC*SOLID SECTION, ...*END PART</td><td>Section cannot be defined on the part if mesh is not defined on the part.</td></tr><tr><td>*ASSEMBLY, NAME=Assembly-1*INSTANCE, NAME=I1, PART=PartB*NODE ...*ELEMENT ...*SOLID SECTION, ELSET=setA, MATERIAL=Mat1*ELSET, ELSET=setA*NSET, NSET=setA*SURFACE, NAME=surf2 setA, ...*END INSTANCE</td><td>The mesh is defined on the part instance.Section assignment must appear within the same level as the mesh definition.Sets and surfaces are defined on the instance since the mesh is defined on the instance.</td></tr></table>
