12.35. Merge Twins

Group (Subgroup)

Reconstruction (Grouping)

Description

This Filter groups neighboring Features (grains) that share a twin relationship into a single parent grain. Twins are sub-grains of a parent grain that share a highly specific crystallographic relationship, and for many downstream analyses – morphology, size distributions, neighbor statistics – it is useful to treat a grain and its twin variants as one entity rather than as separate grains.

Only the FCC Σ3 twin relationship is detected by this filter.

What is a Twin?

A twin is a region within a grain whose crystal lattice is a mirror image of the surrounding parent grain across a specific plane, called the twin plane. Mechanically, the twinned region is still part of the same grain structure; crystallographically, it has a different – but highly specific – orientation.

The most common twin in FCC metals (copper, nickel, aluminum, austenitic stainless steels, superalloys such as IN100 and Inconel) is the Σ3 twin. Two grains are in a Σ3 twin relationship when they are related by a 60° rotation about the <111> crystal direction. This is often called an annealing twin because it frequently forms during recrystallization.

The “Σ3” notation comes from Coincidence Site Lattice (CSL) theory: Σ is the reciprocal density of lattice sites shared between the two crystals, and Σ3 means 1 out of every 3 atomic sites line up exactly across the boundary.

Why Merge Twins?

After segmentation (for example with the Segment Features (Misorientation) filter), each twin variant is identified as its own separate Feature because it has a distinct average orientation from its parent. This is correct from a pure orientation standpoint, but can mislead morphological and statistical analyses:

  • A grain with three twin bands will be counted as four separate grains, inflating the apparent grain count.

  • Grain-size distributions will be skewed smaller because twin variants are smaller than the parent.

  • Neighbor statistics will count twin-to-parent boundaries as regular grain boundaries.

Merging twin variants back into a single parent grain produces a post-twin grain structure that more closely reflects what a metallurgist would call a “grain” under an optical microscope, and is usually the correct input for morphological statistics.

How This Filter Works

The filter uses a burn-style grouping algorithm operating on the Feature level (not the Cell level):

  1. A Feature that has not yet been assigned a parent is selected as the starting point and given a new Parent Id.

  2. For each of its contiguous neighbors (provided by the input Contiguous Neighbor List), the filter computes the misorientation between the two features using their average quaternions.

  3. If the misorientation axis is within the Axis Tolerance of <111> and the misorientation angle is within the Angle Tolerance of 60°, the neighbor is in a Σ3 twin relationship with the current feature and is assigned the same Parent Id.

  4. The grouping then extends recursively through the newly added neighbor’s own neighbors, so that a chain of twins-of-twins is absorbed into one parent.

  5. When no more features can be added to the current parent group, a new unassigned feature is picked and the process repeats until every eligible feature has a Parent Id.

Parameter Guidance

  • Axis Tolerance (degrees): How far the misorientation rotation axis can deviate from the ideal <111> direction and still be accepted as a twin. Default is 3°. Typical values range from 1° to 5°. Tighter tolerance = fewer false positives but may miss slightly distorted real twins.

  • Angle Tolerance (degrees): How far the misorientation rotation angle can deviate from the ideal 60° and still be accepted as a twin. Default is 2°. Typical values range from 1° to 3°.

Both tolerances are in degrees. A tolerance of 3°/2° accepts a neighbor as a twin if its misorientation falls within roughly 58°-62° about an axis within 3° of <111>.

Required Input Sources

This filter requires that several prior operations have already been run:

Limitations

  • Cubic-High (m3m) only. The filter only evaluates twin relationships for phases with the m3m Laue class (FCC and BCC cubic materials). Phases with other symmetries are skipped with a warning; their features remain ungrouped. Only FCC materials actually exhibit Σ3 annealing twins in practice.

  • Σ3 only. Other CSL boundaries (Σ5, Σ7, Σ9, etc.) are not detected.

  • Requires well-computed average orientations. The twin detection is only as accurate as the input Average Quaternions. If twin variants were segmented together with the parent (too-loose segmentation tolerance), the average orientation will be wrong and this filter will not reliably detect twins.

Random Number Seed Parameters

Parameter Name

Parameter Type

Parameter Notes

Description

Use Seed for Random Generation

Bool

When true the user will be able to put in a seed for random generation

Seed Value

Scalar Value

UInt64

The seed fed into the random generator

Stored Seed Value Array Name

DataObjectName

Name of array holding the seed value

Input Parameter(s)

Parameter Name

Parameter Type

Parameter Notes

Description

Axis Tolerance (Degrees)

Scalar Value

Float32

Tolerance allowed when comparing the axis part of the axis-angle representation of the misorientation

Angle Tolerance (Degrees)

Scalar Value

Float32

Tolerance allowed when comparing the angle part of the axis-angle representation of the misorientation

Input Cell Data

Parameter Name

Parameter Type

Parameter Notes

Description

Cell Feature Ids

Array Selection

Allowed Types: int32 Comp. Shape: 1

Specifies to which feature each cell belongs.

Input Feature Data

Parameter Name

Parameter Type

Parameter Notes

Description

Contiguous Neighbor List

NeighborListSelection

List of contiguous neighbors for each Feature.

Phases

Array Selection

Allowed Types: int32 Comp. Shape: 1

Specifies to which Ensemble each cell belongs

Average Quaternions

Array Selection

Allowed Types: float32 Comp. Shape: 4

Specifies the average orientation of each Feature in quaternion representation

Input Ensemble Data

Parameter Name

Parameter Type

Parameter Notes

Description

Crystal Structures

Array Selection

Allowed Types: uint32 Comp. Shape: 1

Enumeration representing the crystal structure for each Ensemble

Output Element Data

Parameter Name

Parameter Type

Parameter Notes

Description

Parent Ids

DataObjectName

The name of the array specifying to which parent each cell belongs

Randomize Parent Ids

Bool

Specifies if parent IDs should be randomized during calculations

Output Feature Data

Parameter Name

Parameter Type

Parameter Notes

Description

Feature Attribute Matrix

DataObjectName

The name of the created cell feature attribute matrix

Parent Ids

DataObjectName

The name of the array specifying to which parent each Feature belongs

Active

DataObjectName

The name of the array specifying if the Feature is still in the sample (true if the Feature is in the sample and false if it is not). At the end of the Filter, all Features will be Active

Example Pipelines

  • (02) Small IN100 Full Reconstruction

DREAM3D-NX Help

If you need help, need to file a bug report or want to request a new feature, please head over to the DREAM3DNX-Issues GitHub site where the community of DREAM3D-NX users can help answer your questions.