24 if ((
valid_index(new_index) && new_index < new_group.size()) &&
25 (
this == &(new_group[new_index]) ||
118 (*this) = op * (*this) * (op.
inverse());
125 std::ostream &stream,
126 const Eigen::Ref<const SymOp::matrix_type> &c2f_mat)
const {
127 print(stream, c2f_mat);
133 const Eigen::Ref<const SymOp::matrix_type> &c2f_mat)
const {
134 int tprec = stream.precision();
135 std::ios::fmtflags tflags = stream.flags();
139 stream.flags(std::ios::left);
141 << std::setw(53) <<
"Symmetry Operation Matrix"
146 stream.flags(std::ios::showpoint | std::ios::fixed | std::ios::right);
150 for (
int i = 0; i < 3; i++) {
152 for (
int j = 0; j < 3; j++) {
153 stream << std::setw(14) << tmat(i, j);
156 stream << std::setw(22) << ttau(i) <<
"\n";
159 stream <<
"Time Reversal: " << (
time_reversal() ?
"yes" :
"no") <<
"\n";
160 stream.precision(tprec);
161 stream.flags(tflags);
199 Eigen::IOFormat fmt1(prec, w1);
203 Eigen::IOFormat fmt2(prec, w2);
205 std::string header = std::string(2 + w1 * 3 - 6,
' ') +
"Matrix | " +
206 std::string(w2 - 3,
' ') +
"Tau";
209 << op.
tau().row(0).format(fmt2) << std::endl;
211 << op.
tau().row(1).format(fmt2) << std::endl;
213 << op.
tau().row(2).format(fmt2) << std::endl;
std::string indent_str() const
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
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)
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
bool operator==(const SymOp &RHS) const
void set_map_error(const double &value)
SymOp inverse() const
get the inverse 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'.
SymOp & apply_sym(const SymOp &op)
bool m_valid_integral_tau
MasterSymGroup const * m_master_group
Pointer to the MasterSymGroup where prototype of this SymOp lives.
const MasterSymGroup & master_group() const
const access of head group
Index ind_prod(const SymOpRepresentation &RHS) const
Index ind_inverse() const
bool has_valid_master() const
check if this representation is registered with a MasterSymGroup
Index m_op_index
Index into MasterSymGroup that specifies the 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.
bool almost_equal(ClusterInvariants const &A, ClusterInvariants const &B, double tol)
Check if ClusterInvariants are equal.
bool valid_index(Index i)
INDEX_TYPE Index
For long integer indexing:
Index print_matrix_width(std::ostream &s, const Derived &m, Index width)