Adaptive Common Neighbor Analysis
Classify atoms of a chosen crystal family with adaptive common neighbor analysis and share the crystal clusters OpenDXA reads.
Adaptive Common Neighbor Analysis (a-CNA) classifies each atom from the bonding topology of its nearest neighbors, using a cutoff that adapts to each atom's own neighbor distances. Use it as a fast structure identification stage for a known crystal, and as an alternative to Polyhedral Template Matching in front of dislocation analysis.
| Key | Version | Builds |
|---|---|---|
adaptive-common-neighbor-analysis | 2.1.1 | Linux, macOS, Windows, browser |
How it works
For each atom, the plugin takes the nearest neighbors the chosen crystal calls for (12 for FCC and HCP, 14 for BCC, 4 + 12 for diamond) and sets a local cutoff from their distances. For every neighbor bond it counts the common neighbors, the bonds among them and the longest chain of those bonds. The set of these signatures identifies the structure: 12 × (4,2,1) is FCC, 6 × (4,2,1) + 6 × (4,2,2) is HCP, 8 × (6,6,6) + 6 × (4,4,4) is BCC. Diamond uses the same idea on the second-neighbor shell.
The plugin only looks for the structures of the crystal family you choose:
| Crystal Structure | Structures it can assign |
|---|---|
FCC, HCP | FCC, HCP |
BCC | BCC |
CUBIC_DIAMOND, HEX_DIAMOND | Cubic diamond, hexagonal diamond, and the first and second neighbor shells of diamond atoms |
Every other atom is OTHER. After classification it groups crystalline atoms into crystal clusters and writes the cluster graph dislocation analysis needs.
Inputs
- Atom positions and the simulation cell. No cutoff is needed.
Arguments
| Argument | Type | Default | Allowed values | Description |
|---|---|---|---|---|
Crystal Structure crystal_structure | select | FCC | BCC, FCC, HCP, CUBIC_DIAMOND, HEX_DIAMOND | The crystal of your material. It sets the neighbor count, the structures searched for (see the table above) and the reference lattice of the crystal clusters. |
Dissolve Small Clusters dissolve_small_clusters | boolean | false | After clustering, mark atoms that belong to small crystal clusters as OTHER. |
Outputs
| Exposure | What you get |
|---|---|
| Structure Identification | A listing, and a 3D model of the atoms colored by structure type. |
| CNA Analysis | The frame's totals, stored with the analysis. No listing. |
| Structure Counts Chart | A bar chart of atoms per structure. |
| Clusters Table, Clusters Transitions, Neighbor Lattice | Files shared with later stages as clusters_table, clusters_transitions and neighbor_lattice. No listing. |
The workflow declares the per-atom properties structure_type (Structure Type) and coordination (Coordination number).
Feeds
- OpenDXA, Elastic Strain and Line Reconstruction DXA read the cluster tables and neighbor lattice it shares. Put it before them in the same pipeline.
- Later stages read the
structure_typecolumn of the annotated frame it writes.
Notes
- Choose HCP or FCC to see stacking faults and twin boundaries in an FCC metal: both settings search FCC and HCP, and the faulted planes come out as HCP.
- It never assigns ICO. For icosahedral order in metallic glasses or clusters, use Polyhedral Template Matching or Ackland-Jones Analysis.
Reference
A. Stukowski, "Structure identification methods for atomistic simulations of crystalline materials", Modelling Simul. Mater. Sci. Eng. 20, 045021 (2012). Common neighbor analysis: J. D. Honeycutt, H. C. Andersen, J. Phys. Chem. 91, 4950 (1987).
Polyhedral Template Matching
Classify each atom's local crystal structure, measure its lattice orientation and share the crystal clusters that OpenDXA and Elastic Strain read.
Pattern Structure Matching
Classify atoms against lattice patterns defined in YAML files, including ordered and non-cubic phases.