occ
Loading...
Searching...
No Matches
occ::crystal::MaximalSubgroup Struct Reference

A maximal subgroup of a space group. More...

#include <subgroup.h>

Public Member Functions

bool is_translationengleiche () const
 
bool is_klassengleiche () const
 
std::string to_string () const
 The 3x4 matrix [P | p] as an ITA-style string, e.g. "a-b,a+b,c".
 

Public Attributes

int parent {0}
 Space group number of the parent.
 
int subgroup {0}
 Space group number of the subgroup.
 
int index {1}
 The index [G:H].
 
SubgroupType type {SubgroupType::Translationengleiche}
 
Mat3 basis_transform {Mat3::Identity()}
 Basis change; columns are the new basis vectors in terms of the old.
 
Vec3 origin_shift {Vec3::Zero()}
 Origin shift, in fractional coordinates of the parent cell.
 

Detailed Description

A maximal subgroup of a space group.

The relation is described by the subgroup's space group number, the index [G:H], and the transformation to the subgroup's standard setting: a basis change \(P\) (columns are the new basis vectors in terms of the old) and an origin shift \(p\), following the International Tables convention

\[ (a', b', c') = (a, b, c) P, \qquad x' = P^{-1}(x - p) \]

Note
\(\det P \ne 1\) in general, and it is not equal to the index either. Both the parent and the subgroup are given in their conventional (possibly centred) cells, so

\[ \det P = \text{index} \times \frac{\text{centring of } H}{\text{centring of } G} \]

For example P2 (2 operations) has a klassengleiche subgroup C2 (4 operations) at index 2, with \(\det P = 4\); and a centred parent may transform to a primitive cell, giving \(\det P < 1\). The invariant that always holds, counting symmetry operations per unit volume, is

\[ n_G \cdot \det P = n_H \cdot \text{index} \]

so the naive \(|H| \cdot \text{index} = |G|\) is not a valid check.

Member Function Documentation

◆ is_klassengleiche()

bool occ::crystal::MaximalSubgroup::is_klassengleiche ( ) const
inline

◆ is_translationengleiche()

bool occ::crystal::MaximalSubgroup::is_translationengleiche ( ) const
inline

◆ to_string()

std::string occ::crystal::MaximalSubgroup::to_string ( ) const

The 3x4 matrix [P | p] as an ITA-style string, e.g. "a-b,a+b,c".

Member Data Documentation

◆ basis_transform

Mat3 occ::crystal::MaximalSubgroup::basis_transform {Mat3::Identity()}

Basis change; columns are the new basis vectors in terms of the old.

◆ index

int occ::crystal::MaximalSubgroup::index {1}

The index [G:H].

◆ origin_shift

Vec3 occ::crystal::MaximalSubgroup::origin_shift {Vec3::Zero()}

Origin shift, in fractional coordinates of the parent cell.

◆ parent

int occ::crystal::MaximalSubgroup::parent {0}

Space group number of the parent.

◆ subgroup

int occ::crystal::MaximalSubgroup::subgroup {0}

Space group number of the subgroup.

◆ type

SubgroupType occ::crystal::MaximalSubgroup::type {SubgroupType::Translationengleiche}

The documentation for this struct was generated from the following file: