# 4.2.2. Assemblies and Mesh Groups

## 4.2.2.1. Assemblies

Assemblies can be defined within Aria to aggregate mesh parts (block, surface or node list) together. An example of defining a surface and block assembly is shown below:

    Begin assembly flux_bc
      surface = surface_1 surface_2
    End assembly

    Begin assembly block_test
      block = block_1 block_2
    End assembly

This block is defined under the finite element command block. It should be noted that each assembly must contain the same type (or rank) of parts (block, surface or node list). Building upon the examples in Mesh Part Material Assignments, we can increase the readability of our input deck by doing the following:

    Begin assembly cu_blocks
      block = block_1 block_4
    End assembly

    Begin assembly 304L_blocks
      block = block_2 block_3
    End assembly

    use material 304L for 304L_blocks
    use material cu for cu_blocks

Assemblies can be used in a variety of operations (i.e. equation definition, boundary conditions and postprocessing operations) and generally help readability of an input file. In addition, these assemblies can be used for transfers to other apps as well. The preferred method for grouping mesh parts together within an input deck is through assemblies. A summary of commands available for defining assemblies is located in Finite Element Model Parameters.

## 4.2.2.2. Mesh Groups

Another option for aggregating mesh parts together is using the `mesh group` command (which exists at the Aria Region scope):

    Mesh Group cu_blocks = block_1 block_4
    Mesh Group 304L_blocks = block_2 block_3

During input processing, mesh groups are updated to assume Assembly attributes. As such, they can be used when transferring variables to other applications. Mesh groups cannot be used directly in other applications, as they are Aria-specific; however mesh groups can group together CDFEM-decomposed parts, whereas assemblies cannot (Level Set/CDFEM for more on CDFEM). Mesh groups also have operators that can be applied to mesh parts and refer to other mesh groups. These operators include plus (`+`), minus (`-`) and range (`to`, `thru` or `through`) operators. As an example, we can first define a mesh group that holds all of the blocks in Fig. 4.1:

    Mesh Group summed_volumes = block_1 to block_4

The operation `block_1 to block_4` aggregates all of the blocks in Fig. 4.1 into `summed_volumes`. The `304L_blocks` and `cu_blocks` from the example in Assemblies can then be defined as:

    Mesh Group cu_blocks = summed_volumes - block_2 - block_3
    Mesh Group 304L_blocks = summed_volumes - block_1 - block_4

By default, the following aliases are provided

`ALL_BLOCKS`/`ALL_VOLUMES`

  Reference to all active element blocks in the mesh

`ALL_SURFACES`

  Reference to all active surfaces in the mesh

`ALL_BULK_ELEMENTS`

  Reference to all active bulk nodes in the mesh

Note

The `ALL_BLOCKS` alias does not include the bulk nodes in a mesh. To access both the blocks and bulk nodes of a mesh simultaneously, one can use a mesh group e.g.

    MESH GROUP all_blocks_and_bulk_elems = all_blocks all_bulk_elements

## 4.2.2.3. Omitting Parts of the Mesh

It is possible to omit parts of your input mesh at the beginning of the simulation. Doing so will make it illegal to refer to the omitted volume/block/assembly later in the input file. For example, specifying initial or boundary conditions on the omitted block will be impossible. The entities (elements, faces etc.) unique to the omitted block are never created, as if the omitted parts never existed in the mesh file. However, shared entities (e.g., a surface shared between a real and an omitted volume) will exist and may have conditions (boundary, initial etc.) applied on the portion of the entities supported by the non-omitted volumes. Below shows available commands for omitting parts of the mesh:

    omit block  <BlockList>
    omit volume <VolumeList>
    omit assembly <AssemblyList>

Details on the syntax usage can be found in Finite Element Model Parameters.