Skip to content

Symmetry Variants

SymmetryVariants stores the crystallographic symmetry operators that relate different orientation variants of the same phase. For a symmetry-breaking transformation (e.g. martensitic), each parent grain can produce several product-phase variants; SymmetryVariants reads the 3×3 rotation matrix for each and exposes them to the nucleation, orientation, and phase-field-evolution machinery.

The number of variants per phase comes from $Variants_<phase> in the @Settings block.

Key Classes and Concepts

  • SymmetryVariants : public OPObject: indexed storage TransformationMatrices[phase][variant] with one dMatrix3x3 per (phase, variant) pair.

Usage

Input

Defined in the @SymmetryVariants block. One 3×3 matrix is required per (phase, variant) pair. If a matrix is omitted, the default is the unit tensor (i.e. "no rotation — identical to the parent").

text
@SymmetryVariants

# Phase 0, 3 variants — rotations in degrees around Z {#phase-0-3-variants-rotations-in-degrees-around-z}
$V_0_0   Variant 0 of phase 0  : ((1 0 0)(0 1 0)(0 0 1))
$V_0_1   Variant 1 of phase 0  : ((-0.5  0.866 0)(-0.866 -0.5 0)(0 0 1))
$V_0_2   Variant 2 of phase 0  : ((-0.5 -0.866 0)( 0.866 -0.5 0)(0 0 1))
TokenVariableTypeDefault
$V_<phase>_<variant>TransformationMatrices[phase][variant]dMatrix3x3unit tensor

The number of variants per phase is declared in @Settings via $Variants_<phase> (zero-based index).

Output

No dedicated output file.

Example

cpp
#include "SymmetryVariants.h"

SymmetryVariants SV(OPSettings, InputFile);

// Used by nucleation (see Nucleation.md) when a new grain is planted:
// the variant selector uses SV.TransformationMatrices[phase][variant].

Dependencies

Released under the GNU GPLv3 License.