19 template<
typename ClustType>
20 class GenericOrbitree;
28 class Structure :
public BasicStructure<Site> {
115 void fg_converge(
double small_tol,
double large_tol,
double increment);
213 jsonParser &
to_json(
const Structure &structure, jsonParser &json);
214 void from_json(Structure &structure,
const jsonParser &json);
216 Structure
operator*(
const Lattice &LHS,
const Structure &RHS);
219 Structure
operator+(
const Coordinate &LHS,
const Structure &RHS);
220 Structure
operator+(
const Structure &LHS,
const Coordinate &RHS);
223 Structure
operator+(
const Structure &LHS,
const Structure &RHS);
224 Structure
operator+(
const Structure &LHS,
const Lattice &RHS);
225 Structure
operator+(
const Lattice &LHS,
const Structure &RHS);
232 std::vector< std::vector<Index> >
get_index_converter(
const Structure &struc, std::vector<Molecule> mol_list);
236 std::vector< std::vector<Index> >
get_index_converter(
const Structure &struc, std::vector<std::string> mol_name_list);
SymGroupRepID basis_permutation_symrep_ID() const
Structure(const Lattice &init_lat)
MasterSymGroup m_factor_group
void from_json(ClexDescription &desc, const jsonParser &json)
Type-safe ID object for communicating and accessing Symmetry representation info. ...
void generate_flowertrees_safe(const SiteOrbitree &in_tree, Array< SiteOrbitree > &out_trees, double tol=TOL)
Gets clusters of every size radiating from one site and saves them to a flowertree. A garland for each site is constructed.
const SymGroup & point_group() const
Structure & operator+=(const Coordinate &shift)
Translates all atoms in cell.
Structure specifies the lattice and atomic basis of a crystal.
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
SymGroupRepID generate_basis_permutation_representation(bool verbose=false) const
Obtain the basis permutation representation of factor_group, returns its rep_id, and sets internal ba...
void generate_factor_group_slow(double map_tol=TOL) const
Obtain factor group by testing all operations of the lattice point_group and keep.
void copy_attributes_from(const Structure &RHS)
copy all non-derived members
void generate_flowertrees(const SiteOrbitree &in_tree, Array< SiteOrbitree > &out_trees, double tol=TOL)
BasicStructure specifies the lattice and atomic basis of a crystal.
std::vector< Molecule > get_struc_molecule() const
Returns an Array of each possible Molecule in this Structure.
Structure stack_on(const Structure &understruc, bool override=0) const
void main_print(std::ostream &stream, COORD_TYPE mode, bool version5, int option) const
*** Inherited from BasicStructure
void fg_converge(double large_tol)
generate factor groups for a range of tol values, prints results to screen (for now) ...
const Lattice & lattice() const
void symmetrize(const SymGroup &relaxed_factors)
GenericCluster< CoordType > operator+(const GenericCluster< CoordType > &LHS, const Coordinate &RHS)
create translated cluster
void sort_basis()
Rearrange basis by grouping atoms by type.
void generate_factor_group(double map_tol=TOL) const
SymGroupRepID basis_perm_rep_ID
This holds the representation id of the permutation representation.
std::vector< std::string > get_struc_molecule_name() const
Returns an Array of each possible Molecule in this Structure.
SymGroupRep const * basis_permutation_symrep() const
bool SD_flag
Specifies whether selectice dynamics is on or of for DFT calculations.
void reset()
clears symmetry, site internals, and other attributes
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
Structure(const BasicStructure< Site > &base)
GenericOrbitree< SiteCluster > SiteOrbitree
void assign_species(Array< std::string > &names, Array< double > &masses, Array< double > &magmoms, Array< double > &Us, Array< double > &Js)
const MasterSymGroup & factor_group() const
BasisSet operator*(const SymOp &LHS, const BasisSet &RHS)
Represents cartesian and fractional coordinates.
void add_vacuum_shift(Structure &new_surface_struc, double vacuum_thickness, Eigen::Vector3d shift, COORD_TYPE mode) const
Add vacuum and shift c vector. The vacuum is always added parallel to c, and the shift vector should ...
EigenIndex Index
For long integer indexing:
Structure & operator-=(const Coordinate &shift)
void fill_supercell(const Structure &prim, double map_tol=TOL)
fill an empty structure with the basis of its corresponding primitive cell - performs optimized facto...
void from_json(const jsonParser &json)
void add_vacuum(Structure &new_surface_struc, double vacuum_thickness) const
Adds vacuum layer on top of ab plane.
void generate_basis_bouquet(const SiteOrbitree &in_tree, SiteOrbitree &out_tree, Index num_sites, double tol)
Structure stamp_with(SiteCluster stamp, bool lat_override=0, bool im_override=0) const
void set_lattice(const Lattice &lattice, COORD_TYPE mode)
void generate_asym_bouquet(const SiteOrbitree &in_tree, SiteOrbitree &out_tree, Index num_sites, double tol)
Structure create_superstruc(const Lattice &scel_lat, double map_tol=TOL) const
Shortcut routine to create a supercell structure and fill it with sites.
std::vector< std::vector< Index > > get_index_converter(const Structure &struc, std::vector< Molecule > mol_list)
Helper Functions.
Structure get_reflection() const
Return reflection of structure.
void intpol(Structure end_struc, int Nofimag, PERIODICITY_TYPE mode, Array< Structure > &images)
std::vector< Specie > get_struc_specie() const
Returns an Array of each possible Specie in this Structure.
Array< Array< Array< double > > > get_NN_table(const double &maxr, SiteOrbitree &bouquet, double tol)
Array< Structure > bedazzle(Array< SiteCluster > stamps, bool lat_override=0, bool im_override=0) const
Structure & operator=(const Structure &RHS)
void set_occs(Array< int > occ_index)
Setting the current occupants of the structure to those specified by an array of integers.
Eigen::VectorXi get_num_each_molecule() const
std::vector< std::vector< Index > > get_index_converter_inverse(const Structure &struc, std::vector< std::string > mol_name_list)
void map_superstruc_to_prim(Structure &prim)
Figures out which prim basis each superstructure basis corresponds to.
SymGroupRep is an alternative representation of a SymGroup for something other than real space...
void print_site_symmetry(std::ostream &stream, COORD_TYPE mode, int shorttag, double tol)
For each symmetrically distinct site, print the symmetry operations that map it onto itself...
void clump_atoms(double maxdist, double tol)
If atoms are too close together, average their distance and make them one.
jsonParser & to_json(jsonParser &json) const
Eigen::VectorXi get_num_each_specie() const