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

#include <SymOp.hh>

+ Inheritance diagram for CASM::SymOp:

Detailed Description

SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian (CART) information about how a symetry operation transforms 3D spatial coordinates.

Definition at line 28 of file SymOp.hh.

Public Types

typedef Eigen::Matrix3d matrix_type
 
typedef Eigen::Vector3d vector_type
 

Public Member Functions

 SymOp ()
 
 SymOp (const Eigen::Ref< const matrix_type > &_mat, const Eigen::Ref< const vector_type > &_tau, bool _time_reversal, double _map_error)
 
const matrix_typematrix () const
 Const access of entire cartesian symmetry matrix. More...
 
const vector_typetau () const
 Const access of the cartesian translation vector, 'tau'. More...
 
bool time_reversal () const
 Const access of the time-reversal flag (true if operation reverses time) More...
 
const vector_typeintegral_tau () const
 Const access of the sym op's cartesian shift from its MasterSymGroup. More...
 
bool is_identity () const
 returns true if matrix part of operation is identity More...
 
void set_index (const MasterSymGroup &new_group, Index new_index)
 
const double & map_error () const
 Allows access to the map_error. More...
 
void set_map_error (const double &value)
 
SymOp operator* (const SymOp &RHS) const
 
SymOpoperator+= (const Eigen::Ref< const vector_type > &RHS)
 
SymOpoperator-= (const Eigen::Ref< const vector_type > &RHS)
 
SymOp inverse () const
 get the inverse of this SymOp More...
 
SymOp no_trans () const
 Get copy of the SymOp without translation. More...
 
bool operator== (const SymOp &RHS) const
 
SymOpapply_sym (const SymOp &op)
 
double character () const override
 calculate and return character of this SymOp (neglecting tau) More...
 
void print (std::ostream &stream, const Eigen::Ref< const matrix_type > &c2fmat=matrix_type::Identity()) const
 
void print_short (std::ostream &stream, const Eigen::Ref< const matrix_type > &c2fmat=matrix_type::Identity()) const
 
SymOpRepresentationcopy () const override
 Return pointer to a new copy of this SymOp. More...
 
SymOp unregistered_copy () const
 
virtual Permutation const * permutation () const
 
virtual Eigen::MatrixXd const * MatrixXd () const
 
virtual SymBasisPermute const * ucc_permutation () 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
 

Static Public Member Functions

static SymOp translation (const Eigen::Ref< const vector_type > &_tau)
 static method to create operation that describes pure translation More...
 
static SymOp time_reversal_op ()
 static method to create time_reversal operation More...
 
static SymOp point_op (const Eigen::Ref< const matrix_type > &_mat, double _map_error=TOL)
 static method to create point operation (no translation) More...
 

Protected Member Functions

virtual SymOpRepresentationinverse_impl () const
 

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 Member Functions

 SymOp (const Eigen::Ref< const matrix_type > &_mat, const Eigen::Ref< const vector_type > &_tau, bool _time_reversal, double _map_error, Index _op_index, MasterSymGroup const *_master_ptr)
 
void _set_integral_tau () override
 Set the difference between the translation of this compared to. More...
 

Private Attributes

matrix_type m_mat
 
vector_type m_tau
 
bool m_time_reversal
 
vector_type m_integral_tau
 
bool m_valid_integral_tau
 
double m_map_error
 

Member Typedef Documentation

◆ matrix_type

typedef Eigen::Matrix3d CASM::SymOp::matrix_type

Definition at line 30 of file SymOp.hh.

◆ vector_type

typedef Eigen::Vector3d CASM::SymOp::vector_type

Definition at line 31 of file SymOp.hh.

Constructor & Destructor Documentation

◆ SymOp() [1/3]

CASM::SymOp::SymOp ( )
inline

Definition at line 50 of file SymOp.hh.

◆ SymOp() [2/3]

CASM::SymOp::SymOp ( const Eigen::Ref< const matrix_type > &  _mat,
const Eigen::Ref< const vector_type > &  _tau,
bool  _time_reversal,
double  _map_error 
)
inline

Create new SymOp from Matrix3 and tau translation by default, assume no translation

Definition at line 54 of file SymOp.hh.

◆ SymOp() [3/3]

CASM::SymOp::SymOp ( const Eigen::Ref< const matrix_type > &  _mat,
const Eigen::Ref< const vector_type > &  _tau,
bool  _time_reversal,
double  _map_error,
Index  _op_index,
MasterSymGroup const *  _master_ptr 
)
inlineprivate

Create new SymOp from Matrix3 and tau translation by default, assume no translation

Definition at line 143 of file SymOp.hh.

Member Function Documentation

◆ _set_integral_tau()

void CASM::SymOp::_set_integral_tau ( )
overrideprivatevirtual

Set the difference between the translation of this compared to.

Reimplemented from CASM::SymOpRepresentation.

Definition at line 173 of file SymOp.cc.

◆ apply_sym()

SymOp & CASM::SymOp::apply_sym ( const SymOp op)

Performs conjugation of this SymOp with SymOp 'op' In other words, transforms coordinates of this SymOp by transformation specified by 'op': op.inverse()*(*this)*op

Definition at line 117 of file SymOp.cc.

◆ character()

double CASM::SymOp::character ( ) const
inlineoverridevirtual

calculate and return character of this SymOp (neglecting tau)

Reimplemented from CASM::SymOpRepresentation.

Definition at line 117 of file SymOp.hh.

◆ copy()

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

Return pointer to a new copy of this SymOp.

Implements CASM::SymOpRepresentation.

Definition at line 134 of file SymOp.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.

◆ integral_tau()

const vector_type& CASM::SymOp::integral_tau ( ) const
inline

Const access of the sym op's cartesian shift from its MasterSymGroup.

Definition at line 69 of file SymOp.hh.

◆ invalidate_index()

void CASM::SymOpRepresentation::invalidate_index ( )
inlineinherited

Definition at line 93 of file SymOpRepresentation.hh.

◆ inverse()

SymOp CASM::SymOp::inverse ( ) const

get the inverse of this SymOp

Definition at line 87 of file SymOp.cc.

◆ inverse_impl()

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

Reimplemented in CASM::SymPermutation.

Definition at line 124 of file SymOpRepresentation.hh.

◆ is_identity()

bool CASM::SymOp::is_identity ( ) const
inline

returns true if matrix part of operation is identity

Definition at line 78 of file SymOp.hh.

◆ map_error()

const double & CASM::SymOp::map_error ( ) const

Allows access to the map_error.

Definition at line 12 of file SymOp.cc.

◆ 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 matrix_type& CASM::SymOp::matrix ( ) const
inline

Const access of entire cartesian symmetry matrix.

Definition at line 60 of file SymOp.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.

◆ no_trans()

SymOp CASM::SymOp::no_trans ( ) const

Get copy of the SymOp without translation.

Definition at line 102 of file SymOp.cc.

◆ operator*()

SymOp CASM::SymOp::operator* ( const SymOp RHS) const

get a new SymOp that is equivalent to subsequent application of both SymOps

Definition at line 40 of file SymOp.cc.

◆ operator+=()

SymOp & CASM::SymOp::operator+= ( const Eigen::Ref< const vector_type > &  RHS)

Cartesian translation of the origin of the symmetry operation by Coordinate RHS

Definition at line 71 of file SymOp.cc.

◆ operator-=()

SymOp & CASM::SymOp::operator-= ( const Eigen::Ref< const vector_type > &  RHS)

Definition at line 78 of file SymOp.cc.

◆ operator==()

bool CASM::SymOp::operator== ( const SymOp RHS) const

Check equality of SymOps, (matrix and translation). Does not necessarily return true for translational equivalents

Definition at line 109 of file SymOp.cc.

◆ permutation()

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

Reimplemented in CASM::SymPermutation.

Definition at line 49 of file SymOpRepresentation.hh.

◆ point_op()

static SymOp CASM::SymOp::point_op ( const Eigen::Ref< const matrix_type > &  _mat,
double  _map_error = TOL 
)
inlinestatic

static method to create point operation (no translation)

Definition at line 45 of file SymOp.hh.

◆ print()

void CASM::SymOp::print ( std::ostream &  stream,
const Eigen::Ref< const matrix_type > &  c2fmat = matrix_type::Identity() 
) const

Print this SymOP as header, followed by symmetry_mat and tau_vec (aligned vertically)

Parameters
c2fmatis a transformation matrix that can be passed to convert from Cartesian to fractional coordinates

Definition at line 132 of file SymOp.cc.

◆ print_short()

void CASM::SymOp::print_short ( std::ostream &  stream,
const Eigen::Ref< const matrix_type > &  c2fmat = matrix_type::Identity() 
) const

Prints abridged description of SymOp, including its type, angle, and eigenvector does NOT print out the entire symmetry operation matrix

Parameters
c2fmatis a transformation matrix that can be passed to convert from Cartesian to fractional coordinates

Definition at line 124 of file SymOp.cc.

◆ 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_index()

void CASM::SymOp::set_index ( const MasterSymGroup new_group,
Index  new_index 
)

set master_group and op_index for the SymOp Performs simple checks to ensure that (*this) is compatible with new_group[new_index]

Definition at line 23 of file SymOp.cc.

◆ set_map_error()

void CASM::SymOp::set_map_error ( const double &  value)

Definition at line 16 of file SymOp.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.

◆ tau()

const vector_type& CASM::SymOp::tau ( ) const
inline

Const access of the cartesian translation vector, 'tau'.

Definition at line 63 of file SymOp.hh.

◆ time_reversal()

bool CASM::SymOp::time_reversal ( ) const
inline

Const access of the time-reversal flag (true if operation reverses time)

Definition at line 66 of file SymOp.hh.

◆ time_reversal_op()

static SymOp CASM::SymOp::time_reversal_op ( )
inlinestatic

static method to create time_reversal operation

Definition at line 39 of file SymOp.hh.

◆ translation()

static SymOp CASM::SymOp::translation ( const Eigen::Ref< const vector_type > &  _tau)
inlinestatic

static method to create operation that describes pure translation

Definition at line 34 of file SymOp.hh.

◆ ucc_permutation()

virtual SymBasisPermute const* CASM::SymOpRepresentation::ucc_permutation ( ) const
inlinevirtualinherited

Reimplemented in CASM::SymBasisPermute.

Definition at line 53 of file SymOpRepresentation.hh.

◆ unregistered_copy()

SymOp CASM::SymOp::unregistered_copy ( ) const
inline

Definition at line 136 of file SymOp.hh.

Member Data Documentation

◆ m_integral_tau

vector_type CASM::SymOp::m_integral_tau
mutableprivate

translation vector that maps this op's correspondent in its Master Group to this

Definition at line 185 of file SymOp.hh.

◆ m_map_error

double CASM::SymOp::m_map_error
private

This stores the mapping error associated with this SymOp, which will depend on the tolerances you choose when you attempt to generate symmetry groups.

Definition at line 192 of file SymOp.hh.

◆ 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_mat

matrix_type CASM::SymOp::m_mat
private

matrix representation of symettry operation in Cartesian (symmetry_mat[CART]) Fractional (symmetry_mat[FRAC])

Definition at line 172 of file SymOp.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_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_tau

vector_type CASM::SymOp::m_tau
private

translation vector that is applied to a point after matrix transformation

Definition at line 176 of file SymOp.hh.

◆ m_time_reversal

bool CASM::SymOp::m_time_reversal
private

time-reversal bit true if operation includes time-reversal, false otherwise

Definition at line 181 of file SymOp.hh.

◆ m_valid_integral_tau

bool CASM::SymOp::m_valid_integral_tau
private

Definition at line 187 of file SymOp.hh.


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