36 return SymOp(matrix_type::Identity(), _tau,
TOL, 0,
nullptr);
41 SymOp(
const Eigen::Ref<const matrix_type> &_mat = matrix_type::Identity(),
42 const Eigen::Ref<const vector_type> &_tau = vector_type::Zero(),
43 double _map_error =
TOL) :
44 SymOp(_mat, _tau, _map_error, -1, nullptr) {
49 SymOp(
const Eigen::Ref<const matrix_type> &_mat,
51 SymOp(_mat, vector_type::Zero(), _map_error) {
63 const vector_type &
tau()
const {
110 void print(std::ostream &stream,
const Eigen::Ref<const matrix_type> &c2fmat = matrix_type::Identity())
const;
115 void print_short(std::ostream &stream,
const Eigen::Ref<const matrix_type> &c2fmat = matrix_type::Identity())
const;
119 return new SymOp(*
this);
133 SymOp(
const Eigen::Ref<const matrix_type> &_mat,
134 const Eigen::Ref<const vector_type> &_tau,
SymOp(const Eigen::Ref< const matrix_type > &_mat=matrix_type::Identity(), const Eigen::Ref< const vector_type > &_tau=vector_type::Zero(), double _map_error=TOL)
SymOp operator*(const SymOp &RHS) const
get a new SymOp that is equivalent to subsequent application of both SymOps
static SymOp translation(const Eigen::Ref< const vector_type > &_tau)
static method to create operation that describes pure translation
void from_json(ClexDescription &desc, const jsonParser &json)
Type-safe ID object for communicating and accessing Symmetry representation info. ...
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
void set_index(const MasterSymGroup &new_group, Index new_index)
bool operator==(const SymOp &RHS) const
Check equality of SymOps, (matrix and translation). Does not necessarily return true for translationa...
SymOp & operator-=(const Eigen::Ref< const vector_type > &RHS)
bool is_identity() const
returns true if matrix part of operation is identity
void set_map_error(const double &value)
jsonParser & to_json(jsonParser &json) const override
const matrix_type & matrix() const
Const access of entire cartesian symmetry matrix.
Eigen::Vector3d vector_type
void from_json(const jsonParser &json) override
SymOp(const Eigen::Ref< const matrix_type > &_mat, const Eigen::Ref< const vector_type > &_tau, double _map_error, Index _op_index, MasterSymGroup const *_master_ptr)
const double & map_error() const
Allows access to the map_error.
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
EigenIndex Index
For long integer indexing:
void print_short(std::ostream &stream, const Eigen::Ref< const matrix_type > &c2fmat=matrix_type::Identity()) const
SymOp inverse() const
get the inverse of this SymOp
double character() const override
calculate and return character of this SymOp (neglecting tau)
SymOpRepresentation is the base class for anything describes a symmetry operation.
SymOp(const Eigen::Ref< const matrix_type > &_mat, double _map_error)
Eigen::Matrix3d matrix_type
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.
SymOp & apply_sym(const SymOp &op)
const vector_type & tau() const
Const access of the cartesian translation vector, 'tau'.
SymOp unregistered_copy() const
SymOp & operator+=(const Eigen::Ref< const vector_type > &RHS)
Cartesian translation of the origin of the symmetry operation by Coordinate RHS.
SymOpRepresentation * copy() const override
Return pointer to a new copy of this SymOp.