VOLT
Plugins

Adaptive Common Neighbor Analysis

Classify atoms by local crystal environment with ACNA/CNA and emit the cluster-graph artifacts consumed by OpenDXA.

Adaptive Common Neighbor Analysis (ACNA/CNA) assigns each atom a structure type (FCC, HCP, BCC, CUBIC_DIAMOND, HEX_DIAMOND, or OTHER) from its local coordination environment, then builds the reconstructed cluster graph that DXA-compatible tools (OpenDXA, LineReconstructionDXA, ElasticStrain) consume.

Parameters

ParameterTypeDefaultDescription
crystal_structureselectFCCReference lattice for classification. Options: BCC, FCC, HCP, CUBIC_DIAMOND, HEX_DIAMOND. (Simple cubic SC is not supported — use Polyhedral Template Matching instead.)
dissolve_small_clustersbooleanfalseMark atoms in small clusters as OTHER after clustering.

Output

{outputBase}_cna_analysis.parquet

Compact analysis summary. The cluster-graph tables are written as separate .table files; this result records their paths, not their contents.

interface CnaAnalysisOutput {
    main_listing: {
        total_atoms: int;
        structure_count: int;
    };
    sub_listings: {};
    "per-atom-properties": [];
    input_dump: string;                  // path to the annotated LAMMPS dump
    clusters_table: string;              // path to {outputBase}_clusters.table
    cluster_transitions_table: string;   // path to {outputBase}_cluster_transitions.table
    is_failed: boolean;
}

{outputBase}_atoms.parquet

Per-atom structure identification written by the shared AtomisticExporter serializer. Atoms are grouped by structure name for 3D rendering, plus a flat per-atom array for downstream consumers.

type Vec3 = [float, float, float];

interface AtomisticAtom {
    id: int;
    pos: Vec3;
    structure_id: int;
    structure_name: string;       // "FCC" | "HCP" | "BCC" | "CUBIC_DIAMOND" | "HEX_DIAMOND" | "OTHER" | ...
    cluster_id: int;
    topology_name?: string;       // present only when the atom's cluster has a named topology
}

interface PerAtomProperty {
    id: int;
    structure_id: int;
    structure_name: string;
    cluster_id: int;
    topology_name?: string;
}

interface AtomsOutput {
    export: {
        AtomisticExporter: {
            // keyed by structure_name; each value is the group's atoms
            [structureName: string]: AtomisticAtom[];
        };
        ChartExporter: {
            structure_counts: {
                structure_name: string[];
                atom_count: int[];
            };
        };
    };
    main_listing: {
        total_atoms: int;
        structure_count: int;
        clustered_atoms: int;
        unclustered_atoms: int;
    };
    sub_listings: {
        structures: {
            structure_id: int;
            structure_name: string;
            atom_count: int;
        }[];
    };
    "per-atom-properties": PerAtomProperty[];
}

The entrypoint also emits three plain-text artifacts alongside the parquet files: {outputBase}_annotated.dump (structure-annotated LAMMPS dump), {outputBase}_clusters.table, and {outputBase}_cluster_transitions.table — the cluster graph required by OpenDXA and related tools.

See Also

On this page