VOLT
Plugins

OpenDXA

A modified Dislocation Extraction Algorithm (DXA) supporting multiple structure identification methods.

Overview

OpenDXA is VOLT's implementation of the Dislocation Extraction Algorithm. It supports multiple structure identification methods including PTM, CNA, and Diamond structure analysis. It identifies dislocation lines, computes Burgers vectors, and extracts dislocation networks from atomistic simulation data.

Parameters

ParameterTypeDefaultDescription
crystalStructurestringBCCReference crystal structure. Options: BCC, FCC, HCP, SC, CUBIC_DIAMOND, HEX_DIAMOND.
identificationModestringCNAStructure identification mode. Options: CNA, PTM, DIAMOND.
rmsdfloat0.1RMSD threshold for PTM classification.
maxTrialCircuitSizeint14Maximum Burgers circuit size.
circuitStretchabilityint9Circuit stretchability factor.
lineSmoothingLevelfloat1.0Dislocation line smoothing level.
linePointIntervalfloat2.5Point interval on dislocation lines.
onlyPerfectDislocationsboolfalseDetect only perfect dislocations.
markCoreAtomsboolfalseMark dislocation core atoms.

Output

type Vec3 = [float, float, float];
type Mat3x3 = [Vec3, Vec3, Vec3];

// [x, y, z, w]
type Quaternion = [float, float, float, float];

{outputBase}_dislocations.msgpack

interface DislocationSegment {
    segment_id: int;
    points: Vec3[];
    length: float;
    num_points: int;
    burgers_vector: Vec3;
    magnitude: float;
    fractional: string;
}

interface JunctionInformation {
    total_junctions: int;
    junction_arm_distribution: Record<int, int>;
}

interface CircuitInformation {
    total_circuits: int;
    dangling_circuits: int;
    blocked_circuits: int;
    average_edge_count: float;
    edge_count_range: {
        min: int;
        max: int;
    };
}

interface NetworkStatistics {
    total_network_length: float;
    segment_count: int;
    junction_count: int;
    dangling_segments: int;
    average_segment_length: float;
    density: float;
    total_segments_including_degenerate: int;
}

interface DislocationsOutput {
    main_listing: {
        dislocations: int;
        total_points: int;
        average_segment_length: float;
        max_segment_length: float;
        min_segment_length: float;
        total_length: float;
    };
    sub_listings: {
        dislocation_segments: DislocationSegment[];
        junction_information: JunctionInformation;
        circuit_information: CircuitInformation;
        network_statistics: NetworkStatistics;
    };
}

{outputBase}_defect_mesh.msgpack

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[];
    };
    topology?: {
        euler_characteristic: int;
        is_completely_good: boolean;
        is_completely_bad: boolean;
    };
}

{outputBase}_interface_mesh.msgpack

Same schema as MeshOutput.

{outputBase}_simulation_cell.msgpack

interface LatticeVector {
    x: float;
    y: float;
    z: float;
}

interface SimulationCellOutput {
    matrix: Mat3x3;
    volume: float;
    is_2d: boolean;
    lattice_vectors: {
        a: LatticeVector;
        b: LatticeVector;
        c: LatticeVector;
    };
    lattice_parameters: {
        a_length: float;
        b_length: float;
        c_length: float;
    };
    periodic_boundary_conditions: {
        x: boolean;
        y: boolean;
        z: boolean;
    };
    angles: {
        alpha: float;
        beta: float;
        gamma: float;
    };
    reciprocal_lattice: {
        matrix: Mat3x3;
        volume: float;
    };
    dimensionality: {
        is_2d: boolean;
        effective_dimensions: 2 | 3;
    };
}

{outputBase}_ptm_data.msgpack

Only exported when identificationMode is PTM.

interface PTMPerAtomProperties {
    id: int;
    correspondences: int;
    structure_type?: int;
    orientation: Quaternion;
}

interface PTMDataOutput {
    main_listing: {
        total_atoms: int;
        include_structure_type: boolean;
    };
    "per-atom-properties": PTMPerAtomProperties[];
}

{outputBase}_atoms.msgpack

Atoms grouped by their identified structure type name (e.g. "FCC", "BCC", "Other").

interface Atom {
    id: int;
    pos: Vec3;
}

interface AtomsOutput {
    export: {
        AtomisticExporter: Record<string, Atom[]>;
    };
}

{outputBase}_structure_analysis_stats.msgpack

interface StructureAnalysisStatsOutput {
    main_listing: {
        total_atoms: int;
        analysis_method: string;
        // For each detected structure type, a pair of keys is added dynamically:
        //   `{type}_count`: int
        //   `{type}_percentage`: float
        [key: `${string}_count`]: int;
        [key: `${string}_percentage`]: float;
        total_identified: int;
        total_unidentified: int;
        identification_rate: float;
        unique_structure_types: int;
    };
}

{outputBase}_core_atoms.msgpack

Only exported when markCoreAtoms is enabled.

interface CoreAtom {
    id: int;
    pos: Vec3;
}

interface CoreAtomsOutput {
    export: {
        AtomisticExporter: {
            Core: CoreAtom[];
        };
    };
}

On this page