20 const std::vector<CASM::Index> &subgroup_indices) {
21 std::vector<CASM::SymOp> subgroup_operations;
22 for (
auto ix : subgroup_indices) {
23 subgroup_operations.
push_back(super_group[ix]);
36 auto subgroup_operation_indices =
38 return subgroup_from_indices(super_group, subgroup_operation_indices);
43 copy_apply<CASM::SymOp, xtal::UnitCellCoord, xtal::Lattice, SymGroupRepID>(
50 auto new_sublattice = rep[copied_ucc.
sublattice()].sublattice();
66 auto ucc_after_apply =
67 copy_apply(op, mutating_ucc, prim_lattice, prim_symrep_ID);
94 return mutating_coord;
Structure specifies the lattice and atomic basis of a crystal.
const Lattice & lattice() const
SymGroupRepID basis_permutation_symrep_ID() const
SymBasisPermute describes how a symmetry operation permutes atoms in a basis.
const Eigen::Matrix3l & matrix() const
Get underlying integer transformation amtrix.
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
PERIODICITY_TYPE periodicity() const
virtual void push_back(const SymOp &new_op)
const Lattice & lattice() const
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Type-safe ID object for communicating and accessing Symmetry representation info.
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
const vector_type & integral_tau() const
Const access of the sym op's cartesian shift from its MasterSymGroup.
SymBasisPermute const * get_basis_permute_rep(SymGroupRepID _rep_ID) const
get pointer to BasisPermute representation corresponding to _rep_ID
Represents cartesian and fractional coordinates.
const Eigen::Matrix3d & inv_lat_column_mat() const
Inverse of Lattice::lat_column_mat() It is the transformation matrix 'C2F', such that f = C2F * c whe...
const UnitCell & unitcell() const
Eigen::CwiseUnaryOp< decltype(Local::lround_l< typename Derived::Scalar >), const Derived > lround(const Eigen::MatrixBase< Derived > &val)
Round Eigen::MatrixXd to Eigen::MatrixXl.
xtal::Coordinate copy_apply(const xtal::SymOp &op, xtal::Coordinate coord)
Copy and apply SymOp to a Coordinate.
xtal::Coordinate & apply(const xtal::SymOp &op, xtal::Coordinate &coord)
apply SymOp to a Coordinate
SymGroup invariant_subgroup(const SymGroup &super_group, const xtal::Lattice &lat)
Returns the subgroup of the given group that keeps the lattice invariant.
std::vector< Index > invariant_subgroup_indices(const Lattice &lat, SymOpVector const &super_grp)
Construct indices of the subgroup that leaves a lattice unchanged.
void swap(ConfigDoF &A, ConfigDoF &B)