46 double _map_error =
TOL) {
47 return SymOp(_mat, vector_type::Zero(),
false, _map_error, -1,
nullptr);
54 SymOp(
const Eigen::Ref<const matrix_type> &_mat,
55 const Eigen::Ref<const vector_type> &_tau,
bool _time_reversal,
57 :
SymOp(_mat, _tau, _time_reversal, _map_error, -1, nullptr) {}
74 throw std::runtime_error(
"Error in SymOp::integral_tau(), not valid");
122 void print(std::ostream &stream,
const Eigen::Ref<const matrix_type> &c2fmat =
130 const Eigen::Ref<const matrix_type> &c2fmat =
143 SymOp(
const Eigen::Ref<const matrix_type> &_mat,
144 const Eigen::Ref<const vector_type> &_tau,
bool _time_reversal,
210 template <
typename ToType,
typename FromType>
222 template <
typename FromType>
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...
SymOp(const Eigen::Ref< const matrix_type > &_mat, const Eigen::Ref< const vector_type > &_tau, bool _time_reversal, double _map_error)
double character() const override
calculate and return character of this SymOp (neglecting tau)
void print(std::ostream &stream, const Eigen::Ref< const matrix_type > &c2fmat=matrix_type::Identity()) const
SymOp no_trans() const
Get copy of the SymOp without translation.
Eigen::Matrix3d matrix_type
SymOp & operator+=(const Eigen::Ref< const vector_type > &RHS)
SymOp operator*(const SymOp &RHS) const
const matrix_type & matrix() const
Const access of entire cartesian symmetry matrix.
Eigen::Vector3d vector_type
void set_index(const MasterSymGroup &new_group, Index new_index)
SymOp unregistered_copy() const
void print_short(std::ostream &stream, const Eigen::Ref< const matrix_type > &c2fmat=matrix_type::Identity()) const
bool is_identity() const
returns true if matrix part of operation is identity
const vector_type & integral_tau() const
Const access of the sym op's cartesian shift from its MasterSymGroup.
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)
bool operator==(const SymOp &RHS) const
void set_map_error(const double &value)
SymOp inverse() const
get the inverse of this SymOp
SymOpRepresentation * copy() const override
Return pointer to a new copy of this SymOp.
bool time_reversal() const
Const access of the time-reversal flag (true if operation reverses time)
vector_type m_integral_tau
const double & map_error() const
Allows access to the map_error.
void _set_integral_tau() override
Set the difference between the translation of this compared to.
SymOp & operator-=(const Eigen::Ref< const vector_type > &RHS)
const vector_type & tau() const
Const access of the cartesian translation vector, 'tau'.
static SymOp point_op(const Eigen::Ref< const matrix_type > &_mat, double _map_error=TOL)
static method to create point operation (no translation)
static SymOp translation(const Eigen::Ref< const vector_type > &_tau)
static method to create operation that describes pure translation
SymOp & apply_sym(const SymOp &op)
static SymOp time_reversal_op()
static method to create time_reversal operation
bool m_valid_integral_tau
SymOpRepresentation is the base class for anything describes a symmetry operation.
const SymOp::matrix_type & get_matrix(const SymOp &op)
bool get_time_reversal(const SymOp &op)
const SymOp::vector_type & get_translation(const SymOp &op)
void print_matrix_tau_col(Log &log, const SymOp &op, Index prec)
Print formatted SymOp matrix and tau.
IdentitySymRepBuilder Identity()
INDEX_TYPE Index
For long integer indexing:
SymOp operator()(const FromType &adaptable)
SymOp const & operator()(SymOp const &adaptable) const
SymOp & operator()(SymOp &adaptable) const