CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::SymBasisPermute Class Reference

#include <SymBasisPermute.hh>

+ Inheritance diagram for CASM::SymBasisPermute:

Detailed Description

SymBasisPermute describes how a symmetry operation permutes atoms in a basis.

  • ::SymOp transforms Cartesian coordinate (x) like: x' = R*x + T, where R is a point transformation matrix, and T a translation vector
  • SymBasisPermute transforms UnitCell (u) without basis like: Lu' = R*L*u + T u' = L.inv*R*L*u + L.inv*T, where L is the lattice, as a column vector matrix
  • For transforming basis sites, a lookup table is stored that maps UnitCellCoord(struc, b, UnitCell(0,0,0)) -> UnitCellCoord' which is used to set the sublat and is added to u' along with L.inv*T
  • L.inv*R*L is stored as SymBasisPermute::matrix()
  • The result of transforming (b,0,0,0) is stored in SymBasisPermute::data()[b]
  • So a UnitCellCoord, u, is transformed by a SymOp, op, like:
    const SymBasisPermute &rep =
    *op.get_basis_permute_rep(u.unit().basis_permutation_symrep_ID());
    u.unitcell() = rep.matrix()*u.unitcell() +
    rep.data()[u.sublattice()].unitcell(); u.sublattice() =
    rep.data()[u.sublattice()].sublattice();
    SymBasisPermute(SymOp const &_op, Lattice const &_lat, std::vector< UnitCellCoord > const &_ucc_permute)
    Construct SymBasisPermute.
  • Additional translations, such as those in supercell factor group operations, may be stored in SymOp::integral_tau(). Those additional contributions can be included with:
    • u.unitcell() += (prim.lattice().inv_lat_column_mat() * op.integral_tau()).cast<long>();

Definition at line 53 of file SymBasisPermute.hh.

Public Types

typedef Index size_type
 

Public Member Functions

 SymBasisPermute (SymOp const &_op, Lattice const &_lat, std::vector< UnitCellCoord > const &_ucc_permute)
 Construct SymBasisPermute. More...
 
SymOpRepresentationcopy () const override
 Return pointer to a copy of this SymBasisPermute. More...
 
size_type size () const
 Return number of basis sites. More...
 
UnitCellCoord operator[] (Index b) const
 Return UnitCellCoord that (b,0,0,0) transforms to. More...
 
UnitCellCoord at (Index b) const
 Return UnitCellCoord that (b,0,0,0) transforms to. More...
 
SymBasisPermute const * ucc_permutation () const override
 Get this from a SymOp. More...
 
const std::vector< UnitCellCoord > & data () const
 Get underlying data (data()[b] is the result of transforming (b,0,0,0)) More...
 
const Eigen::Matrix3lmatrix () const
 Get underlying integer transformation amtrix. More...
 
virtual double character () const
 Calculates character of the representation (if well-defined) More...
 
virtual Permutation const * permutation () const
 
virtual Eigen::MatrixXd const * MatrixXd () const
 
std::unique_ptr< SymOpRepresentationinverse () const
 
SymOpRepresentation const & representation (SymGroupRepID _rep_ID) const
 
Eigen::MatrixXd const * get_matrix_rep (SymGroupRepID _rep_ID) const
 get pointer to matrix representation corresponding to rep_ID More...
 
Permutation const * get_permutation_rep (SymGroupRepID _rep_ID) const
 get pointer to permutation representation corresponding to _rep_ID More...
 
SymBasisPermute const * get_basis_permute_rep (SymGroupRepID _rep_ID) const
 get pointer to BasisPermute representation corresponding to _rep_ID More...
 
Array< Eigen::MatrixXd const * > get_matrix_reps (Array< SymGroupRepID > _rep_IDs) const
 
void set_rep (SymGroupRepID _rep_ID, const SymOpRepresentation &op_rep) const
 set representation for SymOp corresponding to _rep_ID More...
 
void set_identifiers (const MasterSymGroup &new_group, SymGroupRepID new_rep_ID)
 Change m_master_group and determine op_index. More...
 
void set_identifiers (const MasterSymGroup &new_group, SymGroupRepID new_rep_ID, Index new_op_index)
 Set m_master_group, _rep_ID, and op_index. More...
 
const MasterSymGroupmaster_group () const
 const access of head group More...
 
bool has_valid_master () const
 check if this representation is registered with a MasterSymGroup More...
 
void invalidate_index ()
 
Index index () const
 
Index master_group_index () const
 Index of this operation within the master_group. More...
 
SymGroupRepID rep_ID () const
 
Index ind_inverse () const
 
Index ind_prod (const SymOpRepresentation &RHS) const
 

Protected Member Functions

virtual SymOpRepresentationinverse_impl () const
 
virtual void _set_integral_tau ()
 

Protected Attributes

MasterSymGroup const * m_master_group
 Pointer to the MasterSymGroup where prototype of this SymOp lives. More...
 
SymGroupRepID m_rep_ID
 
Index m_op_index
 Index into MasterSymGroup that specifies the operation. More...
 

Private Attributes

std::vector< UnitCellCoordm_ucc_permute
 
Eigen::Matrix3l m_point_mat
 Transform fractional coordinates, integer version of SymOp::matrix() More...
 

Member Typedef Documentation

◆ size_type

Definition at line 63 of file SymBasisPermute.hh.

Constructor & Destructor Documentation

◆ SymBasisPermute()

CASM::SymBasisPermute::SymBasisPermute ( SymOp const &  _op,
Lattice const &  _lat,
std::vector< UnitCellCoord > const &  _ucc_permute 
)

Construct SymBasisPermute.

Definition at line 13 of file SymBasisPermute.cc.

Member Function Documentation

◆ _set_integral_tau()

virtual void CASM::SymOpRepresentation::_set_integral_tau ( )
inlineprotectedvirtualinherited

Reimplemented in CASM::SymOp.

Definition at line 130 of file SymOpRepresentation.hh.

◆ at()

UnitCellCoord CASM::SymBasisPermute::at ( Index  b) const
inline

Return UnitCellCoord that (b,0,0,0) transforms to.

Definition at line 81 of file SymBasisPermute.hh.

◆ character()

virtual double CASM::SymOpRepresentation::character ( ) const
inlinevirtualinherited

Calculates character of the representation (if well-defined)

Reimplemented in CASM::SymPermutation, CASM::SymOp, and CASM::SymMatrixXd.

Definition at line 47 of file SymOpRepresentation.hh.

◆ copy()

SymOpRepresentation* CASM::SymBasisPermute::copy ( ) const
inlineoverridevirtual

Return pointer to a copy of this SymBasisPermute.

Implements CASM::SymOpRepresentation.

Definition at line 70 of file SymBasisPermute.hh.

◆ data()

const std::vector<UnitCellCoord>& CASM::SymBasisPermute::data ( ) const
inline

Get underlying data (data()[b] is the result of transforming (b,0,0,0))

Definition at line 87 of file SymBasisPermute.hh.

◆ get_basis_permute_rep()

SymBasisPermute const * CASM::SymOpRepresentation::get_basis_permute_rep ( SymGroupRepID  _rep_ID) const
inherited

get pointer to BasisPermute representation corresponding to _rep_ID

Definition at line 36 of file SymOpRepresentation.cc.

◆ get_matrix_rep()

Eigen::MatrixXd const * CASM::SymOpRepresentation::get_matrix_rep ( SymGroupRepID  _rep_ID) const
inherited

get pointer to matrix representation corresponding to rep_ID

Definition at line 28 of file SymOpRepresentation.cc.

◆ get_matrix_reps()

Array< Eigen::MatrixXd const * > CASM::SymOpRepresentation::get_matrix_reps ( Array< SymGroupRepID _rep_IDs) const
inherited

get array of pointers to matrix representations for representations corresponding to _rep_IDs

Definition at line 51 of file SymOpRepresentation.cc.

◆ get_permutation_rep()

Permutation const * CASM::SymOpRepresentation::get_permutation_rep ( SymGroupRepID  _rep_ID) const
inherited

get pointer to permutation representation corresponding to _rep_ID

Definition at line 43 of file SymOpRepresentation.cc.

◆ has_valid_master()

bool CASM::SymOpRepresentation::has_valid_master ( ) const
inlineinherited

check if this representation is registered with a MasterSymGroup

Definition at line 91 of file SymOpRepresentation.hh.

◆ ind_inverse()

Index CASM::SymOpRepresentation::ind_inverse ( ) const
inherited

Get the operation index of the inverse of this operation, using the master_group's multiplication table

Definition at line 101 of file SymOpRepresentation.cc.

◆ ind_prod()

Index CASM::SymOpRepresentation::ind_prod ( const SymOpRepresentation RHS) const
inherited

Get the operation index of operation that is the product of this operation and

Parameters
RHS,usingthe master_group's multiplication table

Definition at line 110 of file SymOpRepresentation.cc.

◆ index()

Index CASM::SymOpRepresentation::index ( ) const
inlineinherited

Index of this operation within the master_group (equivalent to master_group_index)

Definition at line 97 of file SymOpRepresentation.hh.

◆ invalidate_index()

void CASM::SymOpRepresentation::invalidate_index ( )
inlineinherited

Definition at line 93 of file SymOpRepresentation.hh.

◆ inverse()

std::unique_ptr< SymOpRepresentation > CASM::SymOpRepresentation::inverse ( ) const
inherited

Definition at line 12 of file SymOpRepresentation.cc.

◆ inverse_impl()

virtual SymOpRepresentation* CASM::SymOpRepresentation::inverse_impl ( ) const
inlineprotectedvirtualinherited

Reimplemented in CASM::SymPermutation.

Definition at line 124 of file SymOpRepresentation.hh.

◆ master_group()

const MasterSymGroup& CASM::SymOpRepresentation::master_group ( ) const
inlineinherited

const access of head group

Definition at line 85 of file SymOpRepresentation.hh.

◆ master_group_index()

Index CASM::SymOpRepresentation::master_group_index ( ) const
inlineinherited

Index of this operation within the master_group.

Definition at line 100 of file SymOpRepresentation.hh.

◆ matrix()

const Eigen::Matrix3l& CASM::SymBasisPermute::matrix ( ) const
inline

Get underlying integer transformation amtrix.

Definition at line 90 of file SymBasisPermute.hh.

◆ MatrixXd()

virtual Eigen::MatrixXd const* CASM::SymOpRepresentation::MatrixXd ( ) const
inlinevirtualinherited

Reimplemented in CASM::SymPermutation, and CASM::SymMatrixXd.

Definition at line 51 of file SymOpRepresentation.hh.

◆ operator[]()

UnitCellCoord CASM::SymBasisPermute::operator[] ( Index  b) const
inline

Return UnitCellCoord that (b,0,0,0) transforms to.

Definition at line 78 of file SymBasisPermute.hh.

◆ permutation()

virtual Permutation const* CASM::SymOpRepresentation::permutation ( ) const
inlinevirtualinherited

Reimplemented in CASM::SymPermutation.

Definition at line 49 of file SymOpRepresentation.hh.

◆ rep_ID()

SymGroupRepID CASM::SymOpRepresentation::rep_ID ( ) const
inlineinherited

ID of representation that this operation belongs to within the master_group

Definition at line 104 of file SymOpRepresentation.hh.

◆ representation()

SymOpRepresentation const & CASM::SymOpRepresentation::representation ( SymGroupRepID  _rep_ID) const
inherited

Definition at line 21 of file SymOpRepresentation.cc.

◆ set_identifiers() [1/2]

void CASM::SymOpRepresentation::set_identifiers ( const MasterSymGroup new_group,
SymGroupRepID  new_rep_ID 
)
inherited

Change m_master_group and determine op_index.

Definition at line 69 of file SymOpRepresentation.cc.

◆ set_identifiers() [2/2]

void CASM::SymOpRepresentation::set_identifiers ( const MasterSymGroup new_group,
SymGroupRepID  new_rep_ID,
Index  new_op_index 
)
inherited

Set m_master_group, _rep_ID, and op_index.

Definition at line 89 of file SymOpRepresentation.cc.

◆ set_rep()

void CASM::SymOpRepresentation::set_rep ( SymGroupRepID  _rep_ID,
const SymOpRepresentation op_rep 
) const
inherited

set representation for SymOp corresponding to _rep_ID

Definition at line 61 of file SymOpRepresentation.cc.

◆ size()

size_type CASM::SymBasisPermute::size ( ) const
inline

Return number of basis sites.

Definition at line 75 of file SymBasisPermute.hh.

◆ ucc_permutation()

SymBasisPermute const* CASM::SymBasisPermute::ucc_permutation ( ) const
inlineoverridevirtual

Get this from a SymOp.

Reimplemented from CASM::SymOpRepresentation.

Definition at line 84 of file SymBasisPermute.hh.

Member Data Documentation

◆ m_master_group

MasterSymGroup const* CASM::SymOpRepresentation::m_master_group
protectedinherited

Pointer to the MasterSymGroup where prototype of this SymOp lives.

Definition at line 133 of file SymOpRepresentation.hh.

◆ m_op_index

Index CASM::SymOpRepresentation::m_op_index
protectedinherited

Index into MasterSymGroup that specifies the operation.

Definition at line 140 of file SymOpRepresentation.hh.

◆ m_point_mat

Eigen::Matrix3l CASM::SymBasisPermute::m_point_mat
private

Transform fractional coordinates, integer version of SymOp::matrix()

Definition at line 60 of file SymBasisPermute.hh.

◆ m_rep_ID

SymGroupRepID CASM::SymOpRepresentation::m_rep_ID
protectedinherited

ID of this representation within the master_group. Default is uninitialized.

Definition at line 137 of file SymOpRepresentation.hh.

◆ m_ucc_permute

std::vector<UnitCellCoord> CASM::SymBasisPermute::m_ucc_permute
private

vector of UnitCellCoords, of length basis.size(). Site (b,0,0,0) goes to (b_new,i,j,k)==m_ucc_permute[b] after application of symmetry.

Definition at line 57 of file SymBasisPermute.hh.


The documentation for this class was generated from the following files: