28 return (name ==
"VA" || name ==
"va" || name ==
"Va");
36 explicit Specie(std::string init_name) : name(init_name) { };
50 jsonParser &
to_json(
const Specie &specie, jsonParser &json);
52 void from_json(Specie &specie,
const jsonParser &json);
70 sd_type _SD_flag = sd_type {{
false,
false,
false}}) :
71 Coordinate(elem1, elem2, elem3, init_lattice, mode),
78 void print(std::ostream &stream,
const Coordinate &trans,
int spaces,
bool SD_is_on =
false)
const;
87 jsonParser &
to_json(
const AtomPosition &apos, jsonParser &json);
90 void from_json(AtomPosition &apos,
const jsonParser &json);
139 bool contains(
const std::string &name)
const;
141 void read(std::istream &stream);
142 void print(std::ostream &stream,
const Coordinate &trans,
int spaces,
char delim,
bool SD_is_on =
false)
const;
150 Molecule
operator*(
const SymOp &LHS,
const Molecule &RHS);
151 Molecule
operator+(
const Coordinate &LHS,
const Molecule &RHS);
152 Molecule
operator+(
const Molecule &LHS,
const Coordinate &RHS);
155 Molecule
make_atom(std::string atom_name,
const Lattice &lat);
164 jsonParser &
to_json(
const Molecule &mol, jsonParser &json);
167 void from_json(Molecule &mol,
const jsonParser &json);
Molecule & apply_sym(const SymOp &op)
void from_json(ClexDescription &desc, const jsonParser &json)
Molecule & apply_sym_no_trans(const SymOp &op)
AtomPosition & apply_sym_no_trans(const SymOp &op)
bool is_vacancy(const std::string &name)
A vacancy is any Specie/Molecule with (name == "VA" || name == "va" || name == "Va") ...
bool operator==(const AtomPosition &RHS) const
bool operator==(const Specie &RHS) const
void set_lattice(const Lattice &new_lat, COORD_TYPE invariant_mode)
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
Array< SymOp > point_group
OccupantDoF< Molecule > MoleculeOccupant
bool is_molecule_name(const Molecule &mol, std::string name)
Return true if Molecule name matches 'name', including Va checks.
Molecule get_union(const Molecule &RHS)
void print(std::ostream &stream, const Coordinate &trans, int spaces, char delim, bool SD_is_on=false) const
Molecule make_atom(std::string atom_name, const Lattice &lat)
Return an atomic Molecule with specified name and Lattice.
bool contains(const std::string &name) const
GenericCluster< CoordType > operator+(const GenericCluster< CoordType > &LHS, const Coordinate &RHS)
create translated cluster
Specie(std::string init_name)
void print(std::ostream &stream, const Coordinate &trans, int spaces, bool SD_is_on=false) const
jsonParser & to_json(jsonParser &json) const
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
BasisSet operator*(const SymOp &LHS, const BasisSet &RHS)
Represents cartesian and fractional coordinates.
Molecule(const Lattice &init_home)
void read(std::istream &stream)
Molecule & operator+=(const Coordinate &RHS)
Lattice const * home() const
std::array< bool, 3 > sd_type
void generate_point_group()
bool operator==(const Molecule &RHS) const
Molecule make_vacancy(const Lattice &lat)
Return an vacancy Molecule with specified Lattice.
AtomPosition(const Lattice &init_lattice)
void from_json(const jsonParser &json)
Molecule & operator*=(const SymOp &RHS)
Basic std::vector like container (deprecated)
AtomPosition(double elem1, double elem2, double elem3, std::string sp_name, const Lattice &init_lattice, COORD_TYPE mode, sd_type _SD_flag=sd_type{{false, false, false}})
Coordinate(const Lattice &_home)
Minimal constructor only takes a lattice.
AtomPosition & apply_sym(const SymOp &op)