CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
SiteCluster.hh
Go to the documentation of this file.
1 #ifndef SITECLUSTER_HH
2 #define SITECLUSTER_HH
3 
10 
11 namespace CASM {
12 
13  class Supercell;
14  class Site;
15  class SymOp;
16  class Permutation;
17  class jsonParser;
18 
19  // For future consideration - maybe we shouldn't allow non-const access of sites
20  class SiteCluster : public GenericCluster<Site> {
21  public:
23 
24  //~~~~~~~~~
25 
26  SiteCluster(const Lattice &init_home);
27 
28  SiteCluster &permute(const Array<Index> &iperm);
29  SiteCluster &permute(const Permutation &perm);
30  SiteCluster &apply_sym(const SymOp &op);
32 
33  void push_back(const Site &new_site);
34 
37  void set_nlist_inds(const Array<Index> &new_indices);
38 
41 
43  const Array<Array<Index> > &trans_nlists() const;
44  const Array<Index> &trans_nlist(Index i) const;
45  void add_trans_nlist(const Array<Index> &new_nlist);
46 
47  void generate_clust_basis(multivector<BasisSet const *>::X<2> const &local_args, std::vector<BasisSet const *> const &global_args, Index max_poly_order = -1);
48 
49  inline void decorate(const Array<int> decor);
53 
55  ReturnArray<int> get_occ_array(const Array<int> &bitstring) const;
56 
59  void print_clust_basis(std::ostream &stream, Index begin_ind = 0, int space = 18, char delim = 0, COORD_TYPE mode = COORD_DEFAULT) const;
60 
61  jsonParser &to_json(jsonParser &json) const;
62  void from_json(const jsonParser &json);
63  private:
65  };
66 
67  SiteCluster operator*(const SymOp &LHS, const SiteCluster &RHS);
68 
69  //*************************************************
70  /*
71  * set site_occupant for each site according to decor
72  */
73  //*************************************************
74 
75  inline void SiteCluster::decorate(const Array<int> decor) {
76  for(Index i = 0; i < decor.size(); i++) {
77  at(i).set_occ_value(decor[i]);
78  }
79  }
80 
81  jsonParser &to_json(const SiteCluster &clust, jsonParser &json);
82  void from_json(SiteCluster &clust, const jsonParser &json);
83 
84  namespace SiteCluster_impl {
85  BasisSet construct_clust_dof_basis(SiteCluster const &_clust, std::vector<BasisSet const *> const &site_dof_sets);
86  }
87 }
88 #endif
void from_json(ClexDescription &desc, const jsonParser &json)
Index size() const
Definition: Array.hh:145
SiteCluster & apply_sym(const SymOp &op)
Definition: SiteCluster.cc:318
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
void generate_clust_basis(multivector< BasisSet const * >::X< 2 > const &local_args, std::vector< BasisSet const * > const &global_args, Index max_poly_order=-1)
Definition: SiteCluster.cc:95
void from_json(const jsonParser &json)
Definition: SiteCluster.cc:381
ReturnArray< Array< int > > get_full_decor_map() const
Definition: SiteCluster.cc:205
void print_clust_basis(std::ostream &stream, Index begin_ind=0, int space=18, char delim=0, COORD_TYPE mode=COORD_DEFAULT) const
Definition: SiteCluster.cc:325
Main CASM namespace.
Definition: complete.cpp:8
void push_back(const Site &new_site)
Definition: SiteCluster.cc:11
SiteCluster(const Lattice &init_home)
Definition: SiteCluster.cc:6
Array< Array< Index > > m_trans_nlist_inds
Definition: SiteCluster.hh:64
ReturnArray< int > get_occ_array(const Array< int > &bitstring) const
Extracts bits in bitstring corresponding to the cluster and returns them as an array.
Definition: SiteCluster.cc:304
jsonParser & to_json(jsonParser &json) const
Definition: SiteCluster.cc:357
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
Definition: SymOp.hh:28
BasisSet operator*(const SymOp &LHS, const BasisSet &RHS)
Definition: BasisSet.cc:1154
SiteCluster & permute(const Array< Index > &iperm)
Definition: SiteCluster.cc:276
void decorate(const Array< int > decor)
Definition: SiteCluster.hh:75
EigenIndex Index
For long integer indexing:
const Array< Array< Index > > & trans_nlists() const
Access and assign trans_nlists.
Definition: SiteCluster.cc:43
Site & at(Index ind)
Definition: Array.hh:157
const Array< Index > & trans_nlist(Index i) const
Definition: SiteCluster.cc:49
ReturnArray< SiteCluster > get_decorations(const Array< Array< int > > &dmap) const
Definition: SiteCluster.cc:256
BasisSet clust_basis
Definition: SiteCluster.hh:22
SiteCluster & apply_sym_no_trans(const SymOp &op)
Definition: SiteCluster.cc:289
void set_nlist_inds(const Array< Index > &new_indices)
Definition: SiteCluster.cc:27
void set_occ_value(int new_val)
Definition: Site.hh:66
BasisSet construct_clust_dof_basis(SiteCluster const &_clust, std::vector< BasisSet const * > const &site_dof_sets)
Definition: SiteCluster.cc:431
ReturnArray< Array< int > > get_decor_map() const
Definition: SiteCluster.cc:154
void add_trans_nlist(const Array< Index > &new_nlist)
Definition: SiteCluster.cc:55
ReturnArray< Index > nlist_inds() const
Easily collect the current nlist_inds of the cluster's sites.
Definition: SiteCluster.cc:18
Shortcut for multidimensional vector (std::vector< std::vector< ...)
Definition: multivector.hh:26