VOLT
Plugins

OpenDXA

A modified Dislocation Extraction Algorithm pipeline that reconstructs dislocation networks from a pre-computed structure-identification package.

OpenDXA (UI name Dislocation Analysis, plugin key opendxa) reconstructs dislocation networks. It is decoupled from structure identification: rather than classifying local structure itself, it runs the Dislocation Extraction Algorithm on a pre-computed annotated dump plus cluster tables.

In the VOLT workflow, OpenDXA chains a structure-analysis plugin via the required structure_analysis_plugin reference (Polyhedral Template Matching or Adaptive Common Neighbor Analysis), which produces the annotated dump and the *_clusters.table / *_cluster_transitions.table files OpenDXA reads.

OpenDXA incorporates OVITO-derived code and ships a LICENSE.OVITO alongside its MIT LICENSE. Those upstream licensing terms are binding.

Parameters

The UI form and the CLI use snake_case argument keys.

ParameterTypeDefaultDescription
structure_analysis_pluginpluginReference— (required)Chained structure-analysis plugin that produces OpenDXA's inputs. Filtered to polyhedral-template-matching and adaptive-common-neighbor-analysis.
reference_topologyselectfccMatrix-phase topology name, resolved from the lattice YAMLs. Options: fcc, bcc, hcp, sc, cubic_diamond, hex_diamond. Mapped onto the chained plugin's crystal_structure.
max_trial_circuit_sizenumber14Maximum Burgers circuit size.
circuit_stretchabilitynumber9Circuit stretchability factor.
line_smoothing_levelnumber1.0Dislocation line smoothing level.
line_point_intervalnumber2.5Point interval along dislocation lines.

Additional CLI options

Exposed by the OpenDXA binary, passable when invoking it directly (the VOLT entrypoint sets several --export_* toggles for you).

OptionDefaultDescription
--lattice_dir <path>package lattice dirDirectory of lattice topology YAMLs.
--clusters_table <path>Path to the upstream *_clusters.table.
--clusters_transitions <path>Path to the upstream *_cluster_transitions.table.
--ghost_layer_scale <float>3.5Multiplier on the reconstructed max neighbor distance when building ghost atoms for the Delaunay tessellation.
--interface_alpha_scale <float>5.0Multiplier on the reconstructed max neighbor distance for the interface alpha-shape filter.
--crystal_path_steps <int>4Maximum crystal path search depth.
--clip_pbc_segments <bool>trueClip exported dislocation polylines at periodic boundaries.
--cover_domain_with_finite_tets <bool>falseAdd helper points so the Delaunay domain is fully covered by finite tetrahedra.
--export_defect_mesh <bool>trueWrite *_defect_mesh.parquet.
--export_interface_mesh <bool>falseWrite *_interface_mesh.parquet.
--export_delaunay_tessellation <bool>falseWrite *_delaunay_tessellation.parquet.
--export_structure_identification <bool>falseWrite *_atoms.parquet.
--export_coherent_crystalline_regions <bool>falseWrite *_coherent_crystalline_regions.parquet.
--export_dislocations <bool>trueWrite *_dislocations.parquet.
--export_circuit_information <bool>trueInclude circuit information in the dislocations parquet.
--export_dislocation_network_stats <bool>trueInclude network statistics in the dislocations parquet.
--export_junctions <bool>trueInclude junction information in the dislocations parquet.

The VOLT analysis entrypoint always passes --export_interface_mesh true, --export_structure_identification true, and --export_coherent_crystalline_regions true, in addition to the defaults above.

Output

type Vec3 = [float, float, float];

{outputBase}_dislocations.parquet

A standard VOLT line entity table (one row per dislocation segment), consumed by the generic LineExporter. Fixed columns are id and points; every other column is a per-segment property that VOLT discovers, queries and styles generically.

ColumnTypeDescription
iduint64Segment entity id.
pointslist<list<double>>Polyline vertices, each [x, y, z].
lengthdoubleSegment length.
num_pointsint64Vertex count.
magnitudedoubleLength of the local Burgers vector.
burgers_vector_locallist<double>Burgers vector in the cluster lattice frame.
burgers_vector_globallist<double>Burgers vector in the spatial frame.
crystal_structurestringCrystal structure of the owning cluster.
burgers_familystringBurgers family (e.g. 1/2<110>).
burgers_family_labelstringDisplay label (e.g. 1/2<110> (Perfect)).
cluster_idint64Owning cluster id.

{outputBase}_dislocation_summary.parquet

Network-level aggregates (JSON payload): main_listing statistics, the network_statistics / circuit_information / junction_information sub-listings, and the Burgers-vector chart series under export.ChartExporter.

interface DislocationSummaryOutput {
    export: {
        ChartExporter: {
            burgers_counts: {
                burgers_vector: string[];
                segment_count: int[];
            };
            burgers_lengths: {
                burgers_vector: string[];
                total_length: float[];
            };
        };
    };
    main_listing: {
        dislocations: int;
        total_points: int;
        average_segment_length: float;
        max_segment_length: float;
        min_segment_length: float;
        total_length: float;
    };
    sub_listings: {
        network_statistics?: object[];
        circuit_information?: object[];
        junction_information?: object[];
    };
}

{outputBase}_defect_mesh.parquet

interface MeshPoint {
    index: int;
    position: Vec3;
}

interface MeshFacet {
    vertices: [int, int, int];
}

interface MeshOutput {
    main_listing: {
        total_nodes: int;
        total_facets: int;
    };
    sub_listings: {
        points: MeshPoint[];
        facets: MeshFacet[];
    };
    export: {
        MeshExporter: {
            vertices: MeshPoint[];
            facets: MeshFacet[];
        };
    };
    topology?: {
        euler_characteristic: int;
        is_completely_good: boolean;
        is_completely_bad: boolean;
    };
}

{outputBase}_interface_mesh.parquet

Same schema as MeshOutput.

{outputBase}_delaunay_tessellation.parquet

The boundary/internal facets of the Delaunay tessellation. Written only when --export_delaunay_tessellation is enabled.

interface DelaunayTessellationOutput {
    main_listing: {
        total_primary_tetrahedra: int;
        total_nodes: int;
        total_facets: int;
        boundary_facets: int;
        internal_facets: int;
    };
    sub_listings: {
        points: MeshPoint[];
        facets: MeshFacet[];
    };
    export: {
        MeshExporter: {
            vertices: MeshPoint[];
            facets: MeshFacet[];
        };
    };
}

{outputBase}_atoms.parquet

Per-atom structure-identification results, grouped by structure type name. Written only when --export_structure_identification is enabled.

interface Atom {
    id: int;
    pos: Vec3;
    structure_id: int;
    structure_name: string;
    cluster_id: int;
    topology_name?: string;   // present only when known
}

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

interface AtomsOutput {
    export: {
        AtomisticExporter: Record<string, Atom[]>;  // keyed by structure name
        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[];
}

{outputBase}_coherent_crystalline_regions.parquet

Atoms grouped into coherent crystalline regions (clusters). Written only when --export_coherent_crystalline_regions is enabled.

interface CoherentRegion {
    cluster_id: int;
    cluster_name: string;        // e.g. "Cluster 12"
    atom_count: int;
    structure_id: int;
    structure_name: string;
    topology_name: string;
}

interface CoherentRegionAtom {
    id: int;
    pos: Vec3;
    structure_id: int;
    structure_type: int;
    structure_name: string;
    cluster_id: int;
    topology_name?: string;      // present only when known
}

interface CoherentCrystallineRegionsOutput {
    main_listing: {
        total_atoms: int;
        coherent_region_count: int;
        assigned_atoms: int;
        unassigned_atoms: int;
        largest_region_size: int;
    };
    sub_listings: {
        coherent_crystalline_regions: CoherentRegion[];
    };
    export: {
        AtomisticExporter: Record<string, CoherentRegionAtom[]>;  // keyed by cluster name
    };
}

See Also

On this page