21 class IntegralCoordinateWithin_f;
23 using xtal::Coordinate;
25 using xtal::UnitCellCoord;
27 template <
typename T,
typename U>
38 class DatabaseIterator;
51 Comparisons<SupercellCanonicalForm<CRTPBase<Supercell>>>> {
59 Supercell(std::shared_ptr<Structure const>
const &_shared_prim,
61 Supercell(std::shared_ptr<Structure const>
const &_shared_prim,
66 const Eigen::Ref<const Eigen::Matrix3l> &superlattice_matrix);
96 std::shared_ptr<Structure const>
const &
shared_prim()
const;
145 std::pair<DB::DatabaseIterator<Supercell>,
bool>
insert()
const;
191 Structure const &prim, std::string supercell_name);
PrimClex is the top-level data structure for a CASM project.
The PrimNeighborList gives the coordinates of UnitCell that are neighbors of the origin UnitCell.
Structure specifies the lattice and atomic basis of a crystal.
Represents a supercell of the primitive parent crystal structure.
Index sublat(Index linear_index) const
Return the sublattice index for a linear index.
Index linear_index(const Coordinate &coord, double tol=TOL) const
Given a Coordinate and tolerance, return linear index into Configuration.
SupercellSymInfo m_sym_info
UnitCellCoord uccoord(Index linear_index) const
Return the integral coordinates corresponding to a linear index.
Eigen::VectorXi max_allowed_occupation() const
returns maximum allowed occupation bitstring – used for initializing enumeration counters
SymGroupRep const & permutation_symrep() const
const PrimClex & primclex() const
Use while transitioning Supercell to no longer need a PrimClex const *
double crystallography_tol() const
Coordinate coord(Index linear_index) const
Return the linear index corresponding to integral coordinates.
bool has_primclex() const
Use while transitioning Supercell to no longer need a PrimClex const *
bool operator<(const Supercell &B) const
Supercell(const Supercell &RHS)
const Lattice & lattice() const
The super lattice.
const SuperNeighborList & nlist() const
Returns the SuperNeighborList.
void set_primclex(PrimClex const *primclex_ptr) const
Use while transitioning Supercell to no longer need a PrimClex const *
Eigen::Matrix3l transf_mat() const
std::pair< DB::DatabaseIterator< Supercell >, bool > insert() const
Insert the canonical form of this into the database.
PrimClex const * m_primclex
Index m_nlist_size_at_construction
std::shared_ptr< Structure const > m_shared_prim
notstd::cloneable_ptr< SuperNeighborList > m_nlist
SuperNeighborList, mutable for lazy construction.
Index volume() const
Return number of primitive cells that fit inside of *this.
bool eq_impl(const Supercell &B) const
const SymGroup & factor_group() const
const Structure & prim() const
std::shared_ptr< Structure const > const & shared_prim() const
const SupercellSymInfo & sym_info() const
std::string generate_name_impl() const
Return supercell name.
A class that collects all symmetry information for for performing symmetry transformations on the sit...
PermuteIterator permute_const_iterator
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
Represents cartesian and fractional coordinates.
A 'cloneable_ptr' can be used in place of 'unique_ptr'.
std::shared_ptr< Supercell > make_shared_supercell(const PrimClex &primclex, std::string name)
std::string generate_name(const Eigen::Matrix3l &transf_mat)
Make hermite normal form name [deprecated].
const Supercell & make_supercell(const PrimClex &primclex, std::string name)
xtal::Superlattice make_superlattice_from_supercell_name(Structure const &prim, std::string supercell_name)
Construct a Superlattice from the supercell name.
std::string canonical_scelname(const Structure &prim, const Lattice &superlat)
Make canonical supercell name name [deprecated].
std::string scelname(const Structure &prim, const Lattice &superlat)
Make supercell name name [deprecated].
std::string make_canonical_supercell_name(Structure const &prim, xtal::Superlattice const &superlattice)
Make the canonical supercell name from a Superlattice.
std::string make_supercell_name(Structure const &prim, xtal::Superlattice const &superlattice)
Make the supercell name from a Superlattice.
Supercell & apply(const SymOp &op, Supercell &scel)
Apply symmetry operation to Supercell.
Eigen::Matrix3l transf_mat(const Lattice &prim_lat, const Lattice &super_lat)
IntegralCoordinateWithin_f make_bring_within_f(const Supercell &scel)
Make IntegralCoordinateWithin_f for Supercell [deprecated].
MappingNode copy_apply(PermuteIterator const &_it, MappingNode const &_node, bool transform_cost_mat=true)
Reorders the permutation and compounds the spatial isometry (rotation.
GenericDatumFormatter< std::string, DataObject > name()
INDEX_TYPE Index
For long integer indexing:
Matrix< long int, 3, 3 > Matrix3l
Implements other comparisons in terms of '<'.