Quantum 3xplorer (Q3)
Loading...
Searching...
No Matches
operation.hpp
Go to the documentation of this file.
1
#pragma once
2
3
/**
4
* SymmetryOperation: a crystallographic point-group symmetry operation.
5
*
6
* Stores the real-space rotation matrix (integer, in crystal coordinates),
7
* the corresponding reciprocal-space rotation for G-vectors, a fractional
8
* translation vector, and the atom permutation map under this operation.
9
*/
10
11
#include <array>
12
#include <vector>
13
14
#include "
layer_0_core/types/init.hpp
"
15
16
namespace
q3
{
17
18
/**
19
* A single symmetry operation: rotation matrix (integer, crystal coords) and
20
* fractional translation (crystal coords).
21
* Real-space fractional coords transform as: x' = rotation * x + fractional_translation
22
* G-vector Miller indices transform as: G' = reciprocal_rotation * G
23
* where reciprocal_rotation = (rotation^{-1})^T.
24
* For non-symmorphic operations, the phase factor is exp(-i 2π G · τ).
25
*/
26
struct
[[nodiscard]]
SymmetryOperation
{
27
std::array<std::array<int, 3>, 3>
rotation
;
// real-space rotation (crystal coords)
28
std::array<std::array<int, 3>, 3>
reciprocal_rotation
;
// (rotation^{-1})^T for G-vectors
29
Vector3D
fractional_translation
;
// fractional translation (crystal coords)
30
std::vector<int>
atom_map
;
// atom_map[na] = nb: atom na maps to atom nb under this operation
31
};
32
33
}
// namespace q3
init.hpp
q3
Definition
q3_core_api.hpp:33
q3::SymmetryOperation
Definition
operation.hpp:26
q3::SymmetryOperation::rotation
std::array< std::array< int, 3 >, 3 > rotation
Definition
operation.hpp:27
q3::SymmetryOperation::fractional_translation
Vector3D fractional_translation
Definition
operation.hpp:29
q3::SymmetryOperation::atom_map
std::vector< int > atom_map
Definition
operation.hpp:30
q3::SymmetryOperation::reciprocal_rotation
std::array< std::array< int, 3 >, 3 > reciprocal_rotation
Definition
operation.hpp:28
q3::Vector3D
Definition
vector_3d.hpp:23
src
layer_1_structure
symmetry
operation.hpp
Generated by
1.9.8