30 Site(
const Coordinate &init_pos,
const std::vector<Molecule> &site_occ);
34 Site(
const Coordinate &init_pos,
const std::vector<Molecule> &site_occ,
35 const std::map<std::string, SiteDoFSet> &site_dof);
39 Site(
const Coordinate &init_pos,
const std::vector<Molecule> &site_occ,
40 const std::vector<SiteDoFSet> &site_dof);
46 std::ostream &out_stream);
54 bool has_dof(std::string
const &_dof_type)
const;
56 std::vector<std::string>
dof_types()
const;
72 bool contains(
const std::string &
name,
int &index)
const;
76 void set_dofs(std::map<std::string, SiteDoFSet> _dofs);
78 std::map<std::string, SiteDoFSet>
const &
dofs()
const {
return m_dof_map; }
87 void read(std::istream &stream,
bool SD_is_on =
false);
88 void read(std::istream &stream, std::string &elem,
bool SD_is_on);
90 void print(std::ostream &stream,
91 Eigen::IOFormat format = Eigen::IOFormat(7, 12))
const;
99 static std::vector<Site> m_type_prototypes;
100 return m_type_prototypes;
127 template <
typename ExternSymOp>
141 xtal::Site &
apply(
const xtal::SymOp &op, xtal::Site &mutating_site);
144 xtal::Site
copy_apply(
const xtal::SymOp &op, xtal::Site site);
Represents cartesian and fractional coordinates.
bool _compare_type_no_ID(const Site &test_site) const
bool operator==(const Site &test_site) const
bool time_reversal_active() const
bool compare_type(const Site &test_site) const
std::map< std::string, SiteDoFSet > const & dofs() const
bool compare(const Coordinate &test_coord) const
Site(const Lattice &init_home)
bool has_dof(std::string const &_dof_type) const
void read(std::istream &stream, bool SD_is_on=false)
bool contains(const std::string &name) const
void set_dofs(std::map< std::string, SiteDoFSet > _dofs)
const std::vector< Molecule > & occupant_dof() const
Site & operator-=(const Coordinate &translation)
void print(std::ostream &stream, Eigen::IOFormat format=Eigen::IOFormat(7, 12)) const
SiteDoFSet const & dof(std::string const &_dof_type) const
void set_label(Index _new_label)
Index m_label
Integer label used to differentiate sites of otherwise identical type.
static std::vector< Site > & _type_prototypes()
std::vector< std::string > allowed_occupants() const
void set_allowed_occupants(const std::vector< Molecule > &new_occ_domain)
std::map< std::string, SiteDoFSet > m_dof_map
additional continuous degrees of freedom
Site & operator+=(const Coordinate &translation)
std::vector< std::string > dof_types() const
static void print_occupant_dof(const std::vector< Molecule > &allowed_occupants, std::ostream &out_stream)
std::vector< Molecule > m_occupant_dof
bool almost_equal(const Site &test_site) const
Index label() const
access m_label;
Coordinate operator*(const SymOp &LHS, const Coordinate &RHS)
Coordinate operator+(const Coordinate &LHS, const Coordinate &RHS)
xtal::Coordinate copy_apply(const xtal::SymOp &op, xtal::Coordinate coord)
Copy and apply SymOp to a Coordinate.
xtal::Coordinate & apply(const xtal::SymOp &op, xtal::Coordinate &coord)
apply SymOp to a Coordinate
std::ostream & operator<<(std::ostream &stream, const Site &site)
GenericDatumFormatter< std::string, DataObject > name()
INDEX_TYPE Index
For long integer indexing: