CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SymGroup.hh
Go to the documentation of this file.
1 #ifndef SYMGROUP_HH
2 #define SYMGROUP_HH
3 
4 #include <iomanip>
5 #include <iostream>
6 #include <map>
7 #include <set>
8 #include <string>
9 
11 #include "casm/global/enum.hh"
12 #include "casm/symmetry/SymOp.hh"
13 
14 namespace CASM {
15 namespace xtal {
16 class Lattice;
17 }
18 
19 using xtal::Lattice;
20 
21 class SymGroup;
22 class MasterSymGroup;
23 class SymGroupRep;
24 struct SymInfo;
25 
26 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 
42 class SymGroup : public std::vector<SymOp> {
43  public:
46 
47  static SymGroup lattice_point_group(Lattice const &_lat);
48 
51  : m_lat_ptr(nullptr), m_group_periodicity(init_type), m_max_error(-1) {}
52 
53  SymGroup(std::vector<SymOp> from_array, Lattice const *lat_ptr,
54  PERIODICITY_TYPE init_type = PERIODIC);
55 
56  template <typename IterType>
57  SymGroup(IterType begin, IterType end, PERIODICITY_TYPE init_type = PERIODIC);
58 
59  virtual ~SymGroup();
60 
61  virtual void push_back(const SymOp &new_op);
62  virtual void clear();
63  virtual void clear_tables();
64 
67  void set_lattice(const Lattice &new_lat);
68 
71  const Lattice &lattice() const;
72 
73  const MasterSymGroup &master_group() const {
74  assert(size() && at(0).has_valid_master());
75  return at(0).master_group();
76  }
77 
80  std::vector<Index> op_indices() const;
81 
83  std::vector<Index> master_group_indices() const;
84 
86  // maybe contains and find should account for group_periodicity
87  // bool contains(const SymOp &test_op) const; //Donghee
88 
89  bool contains_periodic(const SymOp &test_op, double tol = TOL) const;
90 
92  // Index find(const SymOp &test_op) const; //Donghee
93 
99  Index find_no_trans(const SymOp &test_op) const;
100 
105  Index find_periodic(const SymOp &test_op, double tol = TOL) const;
106  std::vector<Index> find_all_periodic(const std::vector<SymOp> &subgroup,
107  double tol = TOL) const;
108 
110  virtual void sort();
111 
113  // Should we change the name to something else?
114  SymGroup get_union(const SymGroup &other_group) const; // Ivy do this
115 
117  SymGroup &apply_sym(const SymOp &op);
118 
120  Index ind_prod(Index i, Index j) const;
121 
123  Index ind_inverse(Index i) const;
124 
126  Index class_of_op(Index i) const;
127 
129  void set_irrep_ID(Index i, SymGroupRepID ID) const;
130 
133 
136  SymGroupRepID coord_rep_ID() const;
137 
139  SymGroupRep const &get_irrep(Index i) const;
140 
143 
146  void calc_space_group_in_cell(SymGroup &space_group,
147  const Lattice &_cell) const;
148 
152  void calc_space_group_in_range(SymGroup &space_group, const Lattice &_cell,
153  Eigen::Vector3i min_trans,
154  Eigen::Vector3i max_trans) const;
155 
157  bool is_group(double tol = TOL) const;
159  void enforce_group(double tol = TOL, Index max_size = 200); // AAB
160 
162  void print_locations(std::ostream &stream) const;
163 
165  void write(std::string filename, COORD_TYPE mode) const;
166 
168  void print(std::ostream &out, COORD_TYPE mode) const;
169 
171  SymGroup &operator+=(const Eigen::Ref<const SymOp::vector_type> &shift);
172  SymGroup &operator-=(const Eigen::Ref<const SymOp::vector_type> &shift);
173 
175  double max_error();
176 
177  std::vector<std::vector<Index>> left_cosets(
178  const std::vector<SymOp> &subgroup, double tol = TOL) const;
179 
180  template <typename IterType>
181  std::vector<std::vector<Index>> left_cosets(IterType const &begin,
182  IterType const &end) const;
183 
184  const std::vector<std::vector<Index>> &get_multi_table() const;
185  const std::vector<std::vector<Index>> &get_alt_multi_table() const;
186  void invalidate_multi_tables() const;
187  const std::vector<std::vector<Index>> &get_conjugacy_classes() const;
188  const std::string &get_name() const;
189  const std::string &get_latex_name() const;
190 
192 
193  std::string possible_space_groups() const { return comment; }
194 
195  const std::vector<std::set<std::set<Index>>> &subgroups() const;
196 
197  bool is_irreducible() const;
198 
199  std::vector<SymGroup> unique_subgroups() const;
200 
202  SymGroup copy_no_trans(bool keep_repeated = false) const;
203 
204  SymInfo info(Index i) const;
205 
206  std::vector<std::set<std::set<Index>>> small_subgroups() const {
207  return _small_subgroups();
208  };
209 
210  protected:
211  void _generate_conjugacy_classes() const;
212  void _generate_centralizers() const;
213  void _generate_elem_order_table() const;
214  void _generate_class_names() const;
215  bool _generate_multi_table() const;
216  void _generate_alt_multi_table() const;
217  void _generate_subgroups() const;
218 
219  // small_groups are cyclic subgroups. Found by taking a group
220  // element and multiplying it by itself until a group is generated
221  // small_groups[i][j][k] is index of symop 'k' in subgroup (i,j) -- the
222  // equivalent subroup 'j' of an orbit 'i' of equivalent subgroups
223  std::vector<std::set<std::set<Index>>> _small_subgroups() const;
224 
227 
230 
233 
237 
238  // information about conjugacy classes
239  // conjugacy_classes[i][j] gives index of SymOp 'j' in class 'i'
240  mutable std::vector<std::vector<Index>> conjugacy_classes;
241  mutable std::vector<std::string> class_names;
242  mutable std::vector<Index> index2conjugacy_class;
243 
244  // Information about irreducible representations
245  mutable std::vector<SymGroupRepID> irrep_IDs;
246 
247  // subgroups are found by finding the closure for each possible union of
248  // small_subgroups organized the same way as small_subgroups
249  mutable std::vector<std::set<std::set<Index>>> m_subgroups;
250 
253 
254  mutable std::string name;
255  mutable std::string latex_name;
256  mutable std::string comment;
257 
258  mutable double m_max_error;
259 };
260 
273 std::map<std::string, std::string> point_group_info(SymGroup const &group);
274 
275 // return SymGroup with all molecular point group sym ops
276 // I will centerize your coord_map, fyi.
278  std::map<int, std::vector<Eigen::Vector3d>> coord_map);
279 
280 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
281 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
282 
283 class MasterSymGroup : public SymGroup {
284  // NOTE: It may be useful to store a user-specified set of "favored
285  // directions" in MasterSymGroup
286  // e.g., {(0,0,1), (1,0,0), (0,1,0)}, which would be used to arbitrate
287  // decisions in symmetry-related algorithms
288  // Relevant applications include
289  // - constucting orbit equivalence map
290  // - optimizing the coordinate system of irreps
291  // - deciding prototype cluster
292 
293  public:
295  : SymGroup(init_type), m_group_index(GROUP_COUNT++) {}
296 
297  MasterSymGroup(const MasterSymGroup &RHS);
298  ~MasterSymGroup();
299 
300  Index group_index() const { return m_group_index; }
301 
303 
306  void is_temporary_of(MasterSymGroup const &RHS) {
307  m_group_index = RHS.group_index();
308  }
309 
312  void push_back(const SymOp &op);
313 
316  void clear();
317 
318  void sort();
319  // void sort_by_class();
320 
321  const SymGroup &point_group() const;
322 
324  SymGroupRep const &representation(SymGroupRepID i) const;
325 
326  SymGroupRep const &reg_rep() const;
327 
328  SymGroupRep const &coord_rep() const;
329 
330  void set_rep(SymGroupRepID _rep_ID, SymOpRepresentation const &_op_rep,
331  Index op_index) const;
332 
335  SymGroupRepID add_representation(const SymGroupRep &new_rep) const;
336 
339 
340  SymGroupRepID reg_rep_ID() const;
341  SymGroupRepID coord_rep_ID() const;
345  const std::vector<SymGroupRepID> &rep_IDs) const;
347  const Eigen::MatrixXd &trans_mat) const;
349 
350  private:
352 
353  SymGroupRepID _add_reg_rep() const;
355 
360 
364 
368 
371  mutable std::vector<SymGroupRep *> m_rep_array;
372 
375 
379 
382  mutable std::vector<SymGroupRepID> m_identity_rep_IDs;
383 
386 };
387 
389  Lattice const &_lattice);
390 
391 bool compare_periodic(const SymOp &a, const SymOp &b, const Lattice &lat,
392  PERIODICITY_TYPE periodicity, double _tol);
393 
394 SymOp within_cell(const SymOp &a, const Lattice &lat,
395  PERIODICITY_TYPE periodicity);
396 
397 template <typename IterType>
398 SymGroup::SymGroup(IterType begin, IterType end, PERIODICITY_TYPE init_type)
399  : std::vector<SymOp>(begin, end),
400  m_lat_ptr(nullptr),
401  m_group_periodicity(init_type),
402  m_max_error(-1) {
403  if (size() && at(0).has_valid_master()) set_lattice(master_group().lattice());
404 }
405 
406 //*******************************************************************************************
407 // The set of left cosets is identical to the equivalence_map formed by
408 // partitioning (*this) w.r.t. 'subgroup' This version is overloaded to take
409 // only the indices of the operations that form the subgroup
410 template <typename IterType>
411 std::vector<std::vector<Index>> SymGroup::left_cosets(
412  IterType const &begin, IterType const &end) const {
413  Index N = std::distance(begin, end);
414  // std::cout << "N is " << N << " and size is " << size() << std::endl;
415  assert((size() % N) == 0 &&
416  "In SymGroup::left_cosets(), left cosets must be generated by a "
417  "subgroup of *this SymGroup.");
418 
419  if (N == 0) {
420  throw std::runtime_error(
421  "Error in SymGroup::left_cosets(): could not find subgroup within "
422  "*this group");
423  }
424  Index csize = size() / N;
425  // std::cout << "csize is " << csize << "\n";
426  std::vector<std::vector<Index>> tcosets;
427  tcosets.reserve(csize);
428 
429  std::vector<bool> check(size(), false);
430  Index prod;
431  for (Index i = 0; i < size() && tcosets.size() < csize; i++) {
432  if (check[i]) continue;
433  tcosets.push_back(std::vector<Index>());
434  for (IterType it = begin; it != end; ++it) {
435  prod = ind_prod(i, *it);
436  tcosets.back().push_back(prod);
437  check[prod] = true;
438  }
439  }
440  return tcosets;
441 }
442 
443 namespace adapter {
444 
445 template <typename ToType, typename FromType>
446 struct Adapter;
447 
450 template <typename FromType>
451 struct Adapter<SymGroup, FromType> {
452  template <typename FromTypeIt>
453  SymGroup operator()(FromTypeIt begin, FromTypeIt end,
454  const Lattice &group_home_lattice) {
455  std::vector<SymOp> casted_group_vector;
457  for (auto it = begin; it != end; ++it) {
458  casted_group_vector.emplace_back(to_symop_type(*it));
459  }
460  return SymGroup(casted_group_vector, &group_home_lattice);
461  }
462 
463  SymGroup operator()(const FromType &adaptable,
464  const Lattice &group_home_lattice) {
465  return this->operator()(adaptable.begin(), adaptable.end(),
466  group_home_lattice);
467  }
468 };
469 } // namespace adapter
470 
472 } // namespace CASM
473 
474 #endif
SymGroup m_point_group
Copy of *this with translations removed.
Definition: SymGroup.hh:385
SymGroupRepID allocate_representation() const
Add a new empty representation.
Definition: SymGroup.cc:694
SymGroupRepID add_kronecker_rep(SymGroupRepID ID1, SymGroupRepID ID2) const
Definition: SymGroup.cc:530
static Index GROUP_COUNT
Definition: SymGroup.hh:363
SymGroupRep * _representation_ptr(SymGroupRepID _id) const
Definition: SymGroup.cc:721
void sort()
Sort SymOp in the SymGroup.
Definition: SymGroup.cc:737
void set_rep(SymGroupRepID _rep_ID, SymOpRepresentation const &_op_rep, Index op_index) const
Definition: SymGroup.cc:479
SymGroupRepID reg_rep_ID() const
Definition: SymGroup.cc:446
void is_temporary_of(MasterSymGroup const &RHS)
Definition: SymGroup.hh:306
SymGroupRepID _add_representation(SymGroupRep *_rep_ptr) const
Definition: SymGroup.cc:709
const SymGroup & point_group() const
Definition: SymGroup.cc:409
void push_back(const SymOp &op)
Definition: SymGroup.cc:400
MasterSymGroup(PERIODICITY_TYPE init_type=PERIODIC)
Definition: SymGroup.hh:294
MasterSymGroup & operator=(const MasterSymGroup &RHS)
Definition: SymGroup.cc:385
SymGroupRep const & representation(SymGroupRepID i) const
Const access of alternate Representations of a SymGroup.
Definition: SymGroup.cc:717
SymGroupRepID identity_rep_ID(Index dim) const
Definition: SymGroup.cc:453
std::vector< SymGroupRepID > m_identity_rep_IDs
Definition: SymGroup.hh:382
SymGroupRepID coord_rep_ID() const
Definition: SymGroup.cc:439
SymGroupRepID add_representation(const SymGroupRep &new_rep) const
Definition: SymGroup.cc:702
SymGroupRepID add_rotation_rep() const
Definition: SymGroup.cc:586
std::vector< SymGroupRep * > m_rep_array
Definition: SymGroup.hh:371
SymGroupRep const & coord_rep() const
Definition: SymGroup.cc:472
SymGroupRepID add_direct_sum_rep(const std::vector< SymGroupRepID > &rep_IDs) const
Definition: SymGroup.cc:553
SymGroupRepID m_coord_rep_ID
ID of Cartesian representation.
Definition: SymGroup.hh:374
SymGroupRepID m_reg_rep_ID
Definition: SymGroup.hh:378
SymGroupRepID add_transformed_rep(SymGroupRepID orig_ID, const Eigen::MatrixXd &trans_mat) const
Definition: SymGroup.cc:685
SymGroupRepID _add_coord_rep() const
Definition: SymGroup.cc:494
Index group_index() const
Definition: SymGroup.hh:300
SymGroupRep const & reg_rep() const
Definition: SymGroup.cc:487
SymGroupRepID _add_reg_rep() const
Definition: SymGroup.cc:504
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
Definition: SymGroup.hh:42
Lattice const * m_lat_ptr
Pointer to a lattice for doing periodic comparisons.
Definition: SymGroup.hh:226
virtual void clear()
Definition: SymGroup.cc:871
std::vector< SymGroup > unique_subgroups() const
Definition: SymGroup.cc:1403
bool is_irreducible() const
Definition: SymGroup.cc:2116
const std::string & get_latex_name() const
Definition: SymGroup.cc:1687
std::vector< Index > op_indices() const
Definition: SymGroup.cc:850
SymGroup & apply_sym(const SymOp &op)
Calls 'apply_sym' on all SymOps in the group.
Definition: SymGroup.cc:1867
std::vector< std::set< std::set< Index > > > _small_subgroups() const
Definition: SymGroup.cc:1281
const std::vector< std::set< std::set< Index > > > & subgroups() const
Definition: SymGroup.cc:1695
PERIODICITY_TYPE periodicity() const
Definition: SymGroup.hh:191
double max_error()
This returns the group's max_error.
Definition: SymGroup.cc:946
SymGroup & operator-=(const Eigen::Ref< const SymOp::vector_type > &shift)
Definition: SymGroup.cc:2140
SymGroupRepID coord_rep_ID() const
Definition: SymGroup.cc:1589
const std::string & get_name() const
Definition: SymGroup.cc:1668
virtual void clear_tables()
Definition: SymGroup.cc:826
void _generate_subgroups() const
Definition: SymGroup.cc:1337
bool contains_periodic(const SymOp &test_op, double tol=TOL) const
Check to see if a SymOp is contained in in SymGroup.
Definition: SymGroup.cc:1861
multivector< Index >::X< 2 > alt_multi_table
Definition: SymGroup.hh:236
Index ind_inverse(Index i) const
Get index of operation that is inverse of operation at(i)
Definition: SymGroup.cc:1540
void print(std::ostream &out, COORD_TYPE mode) const
Print the SymGroup to a stream.
Definition: SymGroup.cc:1874
std::vector< std::vector< Index > > conjugacy_classes
Definition: SymGroup.hh:240
std::vector< SymGroupRepID > irrep_IDs
Definition: SymGroup.hh:245
bool _generate_multi_table() const
Definition: SymGroup.cc:1702
double m_max_error
Definition: SymGroup.hh:258
SymGroup get_union(const SymGroup &other_group) const
Adds SymOps from 'other_group' and enforces the group property.
void _generate_elem_order_table() const
Definition: SymGroup.cc:1253
SymGroup(PERIODICITY_TYPE init_type=PERIODIC)
Initialize by setting periodicity mode (default mode is PERIODIC)
Definition: SymGroup.hh:50
multivector< Index >::X< 2 > elem_order_table
Definition: SymGroup.hh:252
const std::vector< std::vector< Index > > & get_alt_multi_table() const
Definition: SymGroup.cc:1644
const std::vector< std::vector< Index > > & get_multi_table() const
Definition: SymGroup.cc:1633
virtual void sort()
Sort SymOp in the SymGroup.
Definition: SymGroup.cc:2016
std::vector< std::set< std::set< Index > > > small_subgroups() const
Definition: SymGroup.hh:206
PERIODICITY_TYPE m_group_periodicity
Specifies whether to use lattice periodicity when testing for equivalence.
Definition: SymGroup.hh:229
bool is_group(double tol=TOL) const
Check to see if SymGroup satisfies the group property.
Definition: SymGroup.cc:1805
Index ind_prod(Index i, Index j) const
Get index of operation that is result of multiplication of at(i)*at(j)
Definition: SymGroup.cc:1550
std::vector< std::string > class_names
Definition: SymGroup.hh:241
std::vector< Index > master_group_indices() const
Return the MasterSymGroup indices of the operations in this SymGroup.
Definition: SymGroup.cc:857
virtual void push_back(const SymOp &new_op)
Definition: SymGroup.cc:818
Index class_of_op(Index i) const
Get conjugacy class index of operation at(i)
Definition: SymGroup.cc:1565
void calc_space_group_in_range(SymGroup &space_group, const Lattice &_cell, Eigen::Vector3i min_trans, Eigen::Vector3i max_trans) const
Definition: SymGroup.cc:1931
SymGroup copy_no_trans(bool keep_repeated=false) const
Fill up a SymGroup with *this minus the shifts.
Definition: SymGroup.cc:928
void _generate_class_names() const
Definition: SymGroup.cc:972
Index find_periodic(const SymOp &test_op, double tol=TOL) const
Definition: SymGroup.cc:1779
const std::vector< std::vector< Index > > & get_conjugacy_classes() const
Definition: SymGroup.cc:1661
void set_lattice(const Lattice &new_lat)
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Definition: SymGroup.cc:814
std::string possible_space_groups() const
Definition: SymGroup.hh:193
std::vector< Index > find_all_periodic(const std::vector< SymOp > &subgroup, double tol=TOL) const
Definition: SymGroup.cc:1790
void enforce_group(double tol=TOL, Index max_size=200)
Enforce group property by adding products of operations to the group.
Definition: SymGroup.cc:1821
void _generate_centralizers() const
Definition: SymGroup.cc:1227
SymInfo info(Index i) const
Definition: SymGroup.cc:942
void set_irrep_ID(Index i, SymGroupRepID ID) const
set symrep ID of a particular irrep
Definition: SymGroup.cc:1572
void calc_space_group_in_cell(SymGroup &space_group, const Lattice &_cell) const
Definition: SymGroup.cc:1889
const MasterSymGroup & master_group() const
Definition: SymGroup.hh:73
std::string latex_name
Definition: SymGroup.hh:255
void print_locations(std::ostream &stream) const
print locations of the symmetry-generating element of each SymOp
Definition: SymGroup.cc:1958
void _generate_alt_multi_table() const
Definition: SymGroup.cc:1746
SymGroupRepID allocate_representation() const
Add a new empty representation.
Definition: SymGroup.cc:1601
Index find_no_trans(const SymOp &test_op) const
Check to see if a SymOp is contained in in SymGroup and return its index.
Definition: SymGroup.cc:1767
const Lattice & lattice() const
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Definition: SymGroup.cc:950
std::vector< std::vector< Index > > left_cosets(const std::vector< SymOp > &subgroup, double tol=TOL) const
Definition: SymGroup.cc:1625
multivector< Index >::X< 2 > multi_table
multi_table[i][j] gives index of operation that is result of at(i)*at(j)
Definition: SymGroup.hh:232
SymOp::matrix_type matrix_type
Definition: SymGroup.hh:45
multivector< Index >::X< 2 > centralizer_table
Definition: SymGroup.hh:251
std::vector< Index > index2conjugacy_class
Definition: SymGroup.hh:242
SymOp::vector_type vector_type
Definition: SymGroup.hh:44
static SymGroup lattice_point_group(Lattice const &_lat)
Definition: SymGroup.cc:779
SymGroupRepID get_irrep_ID(Index i) const
Get symrep ID of a particular irrep.
Definition: SymGroup.cc:1581
std::vector< std::set< std::set< Index > > > m_subgroups
Definition: SymGroup.hh:249
SymGroup & operator+=(const Eigen::Ref< const SymOp::vector_type > &shift)
Cartesian translation of SymGroup origin by vector 'shift'.
Definition: SymGroup.cc:2132
std::string comment
Definition: SymGroup.hh:256
void invalidate_multi_tables() const
Definition: SymGroup.cc:1654
virtual ~SymGroup()
Definition: SymGroup.cc:773
void _generate_conjugacy_classes() const
Definition: SymGroup.cc:1487
SymGroupRep const & get_irrep(Index i) const
Get symrep for a particular irrep.
Definition: SymGroup.cc:1614
std::string name
Definition: SymGroup.hh:254
void write(std::string filename, COORD_TYPE mode) const
Write the SymGroup to a file.
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
Definition: SymGroupRep.hh:31
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...
Definition: SymOp.hh:28
Eigen::Matrix3d matrix_type
Definition: SymOp.hh:30
Eigen::Vector3d vector_type
Definition: SymOp.hh:31
SymOpRepresentation is the base class for anything describes a symmetry operation.
bool compare_periodic(const SymOp &a, const SymOp &b, const Lattice &lat, PERIODICITY_TYPE periodicity, double _tol)
Definition: SymGroup.cc:2160
MasterSymGroup make_master_sym_group(SymGroup const &_group, Lattice const &_lattice)
Definition: SymGroup.cc:2148
SymOp within_cell(const SymOp &a, const Lattice &lat, PERIODICITY_TYPE periodicity)
Definition: SymGroup.cc:2178
std::map< std::string, std::string > point_group_info(SymGroup const &group)
return dictionary of point group info: result["centricity"] : "Centric" or "Acentric" result["crystal...
Definition: SymGroup.cc:882
SymGroup molecular_point_group(std::map< int, std::vector< Eigen::Vector3d >> coord_map)
bool check(const Lattice &lat)
Main CASM namespace.
Definition: APICommand.hh:8
Eigen::MatrixXd MatrixXd
COORD_TYPE
Definition: enum.hh:6
const double TOL
Definition: definitions.hh:30
const PERIODICITY_TYPE PERIODIC
Definition: enum.hh:20
PERIODICITY_TYPE
Definition: enum.hh:13
INDEX_TYPE Index
For long integer indexing:
Definition: definitions.hh:39
Definition: stream_io.hh:24
Simple struct to be used as return type for SymOp::info().
Definition: SymInfo.hh:26
SymGroup operator()(FromTypeIt begin, FromTypeIt end, const Lattice &group_home_lattice)
Definition: SymGroup.hh:453
SymGroup operator()(const FromType &adaptable, const Lattice &group_home_lattice)
Definition: SymGroup.hh:463
Shortcut for multidimensional vector (std::vector< std::vector< ...)
Definition: multivector.hh:26