CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
Enumerates Lattice.
Classes | |
class | CASM::LatticeEnumEquivalents |
Enumerate equivalent Lattics, given a SymGroup. More... | |
class | CASM::xtal::ScelEnumProps |
Data structure for holding supercell enumeration properties. More... | |
class | CASM::xtal::SuperlatticeIterator |
Iterators used with SuperlatticeEnumerator. More... | |
class | CASM::xtal::SuperlatticeEnumerator |
A fake container of supercell matrices. More... | |
Typedefs | |
typedef long | CASM::xtal::ScelEnumProps::size_type |
typedef int | CASM::xtal::SuperlatticeIterator::difference_type |
typedef Lattice | CASM::xtal::SuperlatticeIterator::value_type |
typedef const Lattice & | CASM::xtal::SuperlatticeIterator::reference |
typedef const Lattice * | CASM::xtal::SuperlatticeIterator::pointer |
typedef long int | CASM::xtal::SuperlatticeEnumerator::size_type |
typedef SuperlatticeIterator | CASM::xtal::SuperlatticeEnumerator::const_iterator |
Functions | |
CASM::xtal::ScelEnumProps::ScelEnumProps (size_type begin_volume, size_type end_volume, std::string dirs="abc", Eigen::Matrix3i generating_matrix=Eigen::Matrix3i::Identity()) | |
Constructor. More... | |
size_type | CASM::xtal::ScelEnumProps::begin_volume () const |
size_type | CASM::xtal::ScelEnumProps::end_volume () const |
int | CASM::xtal::ScelEnumProps::dims () const |
std::string | CASM::xtal::ScelEnumProps::dirs () const |
Eigen::Matrix3i | CASM::xtal::ScelEnumProps::generating_matrix () const |
CASM::xtal::SuperlatticeIterator::SuperlatticeIterator () | |
CASM::xtal::SuperlatticeIterator::SuperlatticeIterator (const SuperlatticeEnumerator &enumerator, int volume, int dims) | |
SuperlatticeIterator & | CASM::xtal::SuperlatticeIterator::operator= (const SuperlatticeIterator &B) |
bool | CASM::xtal::SuperlatticeIterator::operator== (const SuperlatticeIterator &B) const |
Iterator comparison. More... | |
bool | CASM::xtal::SuperlatticeIterator::operator!= (const SuperlatticeIterator &B) const |
Iterator comparison. More... | |
reference | CASM::xtal::SuperlatticeIterator::operator* () const |
Access the supercell. More... | |
pointer | CASM::xtal::SuperlatticeIterator::operator-> () const |
Access the supercell. More... | |
Eigen::Matrix3i | CASM::xtal::SuperlatticeIterator::matrix () const |
constructed supercell matrix More... | |
HermiteCounter::value_type | CASM::xtal::SuperlatticeIterator::volume () const |
current volume More... | |
const SuperlatticeEnumerator & | CASM::xtal::SuperlatticeIterator::enumerator () const |
const reference to the SuperlatticeEnumerator this is iterating with More... | |
SuperlatticeIterator & | CASM::xtal::SuperlatticeIterator::operator++ () |
Prefix increment operator. Increment to next unique supercell. More... | |
void | CASM::xtal::SuperlatticeIterator::_increment () |
Postfix increment operator. Increment to next unique supercell. More... | |
void | CASM::xtal::SuperlatticeIterator::_try_increment () |
Check if the current supercell matrix hermite normal form is in a canonical form. More... | |
void | CASM::xtal::SuperlatticeIterator::_update_super () |
Update m_super when required. More... | |
CASM::xtal::SuperlatticeEnumerator::SuperlatticeEnumerator (const Lattice &unit, const SymOpVector &point_grp, const ScelEnumProps &enum_props) | |
Construct a SuperlatticeEnumerator using custom point group operations. More... | |
template<typename ExternSymGroupTypeIt > | |
CASM::xtal::SuperlatticeEnumerator::SuperlatticeEnumerator (ExternSymGroupTypeIt begin, ExternSymGroupTypeIt end, const Lattice &unit, const ScelEnumProps &enum_props) | |
const Lattice & | CASM::xtal::SuperlatticeEnumerator::unit () const |
Access the unit the is being made into superlattices. More... | |
const SymOpVector & | CASM::xtal::SuperlatticeEnumerator::point_group () const |
Access the unit point group. More... | |
void | CASM::xtal::SuperlatticeEnumerator::begin_volume (size_type _begin_volume) |
Set the beginning volume. More... | |
size_type | CASM::xtal::SuperlatticeEnumerator::begin_volume () const |
Get the beginning volume. More... | |
void | CASM::xtal::SuperlatticeEnumerator::end_volume (size_type _end_volume) |
Set the end volume. More... | |
size_type | CASM::xtal::SuperlatticeEnumerator::end_volume () const |
Get the end volume. More... | |
const Eigen::Matrix3i & | CASM::xtal::SuperlatticeEnumerator::gen_mat () const |
Get the transformation matrix that's being applied to the unit vectors. More... | |
int | CASM::xtal::SuperlatticeEnumerator::dimension () const |
Get the dimensions of the enumerator (1D, 2D or 3D) More... | |
const_iterator | CASM::xtal::SuperlatticeEnumerator::begin () const |
A const iterator to the beginning volume, specify here how the iterator should jump through the enumeration. More... | |
const_iterator | CASM::xtal::SuperlatticeEnumerator::end () const |
A const iterator to the past-the-last volume. More... | |
const_iterator | CASM::xtal::SuperlatticeEnumerator::cbegin () const |
A const iterator to the beginning volume. More... | |
const_iterator | CASM::xtal::SuperlatticeEnumerator::cend () const |
A const iterator to the past-the-last volume. More... | |
const_iterator | CASM::xtal::SuperlatticeEnumerator::citerator (size_type volume) const |
A const iterator to a specified volume. More... | |
Eigen::Matrix3i | CASM::xtal::enforce_min_volume (const Lattice &unit, const Eigen::Matrix3i &T, const SymOpVector &point_grp, Index volume, bool fix_shape=false) |
Return a transformation matrix that ensures a supercell of at least some volume. More... | |
template<typename ExternSymGroupTypeIt > | |
Eigen::Matrix3i | CASM::xtal::enforce_min_volume (ExternSymGroupTypeIt begin, ExternSymGroupTypeIt end, const Lattice &unit, const Eigen::Matrix3i &T, Index volume, bool fix_shape=false) |
Eigen::Matrix3i | CASM::xtal::canonical_hnf (const Eigen::Matrix3i &T, const SymOpVector &effective_pg, const Lattice &ref_lattice) |
Return canonical hermite normal form of the supercell matrix. More... | |
template<typename ExternSymGroupTypeIt > | |
Eigen::Matrix3i | CASM::xtal::canonical_hnf (ExternSymGroupTypeIt begin, ExternSymGroupTypeIt end, const Eigen::Matrix3i &T, const Lattice &ref_lattice) |
Eigen::Matrix3i | canonical_hnf (const Eigen::Matrix3i &T, const SymOpVector &effective_pg, const Lattice &ref_lattice) |
Return canonical hermite normal form of the supercell matrix. More... | |
Variables | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::forward_iterator_tag | CASM::xtal::SuperlatticeIterator::iterator_category |
fixes alignment of m_deformation More... | |
size_type | CASM::xtal::ScelEnumProps::m_begin_volume |
size_type | CASM::xtal::ScelEnumProps::m_end_volume |
int | CASM::xtal::ScelEnumProps::m_dims |
std::string | CASM::xtal::ScelEnumProps::m_dirs |
Eigen::Matrix3i | CASM::xtal::ScelEnumProps::m_gen_mat |
bool | CASM::xtal::SuperlatticeIterator::m_super_updated |
Indicates if m_super reflects the current m_current supercell matrix. More... | |
const SuperlatticeEnumerator * | CASM::xtal::SuperlatticeIterator::m_enum |
Pointer to SuperlatticeEnumerator which holds the unit cell and point group. More... | |
notstd::cloneable_ptr< HermiteCounter > | CASM::xtal::SuperlatticeIterator::m_current |
Current supercell matrix in HermitCounter form. More... | |
Lattice | CASM::xtal::SuperlatticeIterator::m_super |
A supercell, stored here so that iterator dereferencing will be OK. Only used when requested. More... | |
std::vector< Eigen::Matrix3i > | CASM::xtal::SuperlatticeIterator::m_canon_hist |
Keep track of the HNF matrices for the current determinant value. More... | |
const Lattice | CASM::xtal::SuperlatticeEnumerator::m_unit |
The unit cell of the supercells. More... | |
SymOpVector | CASM::xtal::SuperlatticeEnumerator::m_point_group |
The lattice of the unit cell. More... | |
const int | CASM::xtal::SuperlatticeEnumerator::m_begin_volume |
The first volume supercells to be iterated over (what cbegin uses) More... | |
const int | CASM::xtal::SuperlatticeEnumerator::m_end_volume |
The past-the-last volume supercells to be iterated over (what cend uses) More... | |
const Eigen::Matrix3i | CASM::xtal::SuperlatticeEnumerator::m_gen_mat |
This matrix (G) specifies new lattice vectors to enumerate over column-wise, such that the resulting transformation matrix is G*B, where B is the block matrix constructed out of the HermiteCounter matrix H. More... | |
const int | CASM::xtal::SuperlatticeEnumerator::m_dims |
The number of lattice directions the enumeration is being done in. More... | |
Definition at line 208 of file SuperlatticeEnumerator.hh.
Definition at line 122 of file SuperlatticeEnumerator.hh.
typedef const Lattice* CASM::xtal::SuperlatticeIterator::pointer |
Definition at line 125 of file SuperlatticeEnumerator.hh.
typedef const Lattice& CASM::xtal::SuperlatticeIterator::reference |
Definition at line 124 of file SuperlatticeEnumerator.hh.
typedef long CASM::xtal::ScelEnumProps::size_type |
Definition at line 31 of file SuperlatticeEnumerator.hh.
typedef long int CASM::xtal::SuperlatticeEnumerator::size_type |
Definition at line 206 of file SuperlatticeEnumerator.hh.
Definition at line 123 of file SuperlatticeEnumerator.hh.
|
private |
Postfix increment operator. Increment to next unique supercell.
Uses _try_increment until the next unique supercell is found.
Definition at line 83 of file SuperlatticeEnumerator.cc.
|
private |
Check if the current supercell matrix hermite normal form is in a canonical form.
Increment the supercell matrix by one (maintaining hermite normal form)
|
private |
Update m_super when required.
SuperlatticeEnumerator::const_iterator CASM::xtal::SuperlatticeEnumerator::begin | ( | ) | const |
A const iterator to the beginning volume, specify here how the iterator should jump through the enumeration.
Definition at line 149 of file SuperlatticeEnumerator.cc.
|
inline |
Definition at line 89 of file SuperlatticeEnumerator.hh.
SuperlatticeEnumerator::size_type CASM::xtal::SuperlatticeEnumerator::begin_volume | ( | ) | const |
Get the beginning volume.
Definition at line 140 of file SuperlatticeEnumerator.cc.
void CASM::xtal::SuperlatticeEnumerator::begin_volume | ( | size_type | _begin_volume | ) |
Set the beginning volume.
|
related |
Return canonical hermite normal form of the supercell matrix.
T | A supercell matrix (Eigen::Matrix3i), such that S = U*T, where S is the superlattice and U the unit lattice, as column vector matrices |
ref_lattice | The lattice the transformation matrix T is meant to be acting on |
effective_pg | Group of symmetry operations to use for determining whether a canonical HNF matrix has been found. This is probably the point group of a structure or configuration Canonical form is such that T is in Hermite normal form (as from CASM::hermite_normal_form), and the unrolled coefficients [a f e]
[0 b d] -> abcdef
[0 0 c]
|
Definition at line 211 of file SuperlatticeEnumerator.cc.
Eigen::Matrix3i CASM::xtal::canonical_hnf | ( | const Eigen::Matrix3i & | T, |
const SymOpVector & | effective_pg, | ||
const Lattice & | ref_lattice | ||
) |
Return canonical hermite normal form of the supercell matrix.
T | A supercell matrix (Eigen::Matrix3i), such that S = U*T, where S is the superlattice and U the unit lattice, as column vector matrices |
ref_lattice | The lattice the transformation matrix T is meant to be acting on |
effective_pg | Group of symmetry operations to use for determining whether a canonical HNF matrix has been found. This is probably the point group of a structure or configuration Canonical form is such that T is in Hermite normal form (as from CASM::hermite_normal_form), and the unrolled coefficients [a f e]
[0 b d] -> abcdef
[0 0 c]
|
Definition at line 211 of file SuperlatticeEnumerator.cc.
Eigen::Matrix3i CASM::xtal::canonical_hnf | ( | ExternSymGroupTypeIt | begin, |
ExternSymGroupTypeIt | end, | ||
const Eigen::Matrix3i & | T, | ||
const Lattice & | ref_lattice | ||
) |
Definition at line 383 of file SuperlatticeEnumerator.hh.
SuperlatticeEnumerator::const_iterator CASM::xtal::SuperlatticeEnumerator::cbegin | ( | ) | const |
A const iterator to the beginning volume.
Definition at line 159 of file SuperlatticeEnumerator.cc.
SuperlatticeEnumerator::const_iterator CASM::xtal::SuperlatticeEnumerator::cend | ( | ) | const |
A const iterator to the past-the-last volume.
Definition at line 164 of file SuperlatticeEnumerator.cc.
SuperlatticeEnumerator::const_iterator CASM::xtal::SuperlatticeEnumerator::citerator | ( | size_type | volume | ) | const |
A const iterator to a specified volume.
Definition at line 170 of file SuperlatticeEnumerator.cc.
int CASM::xtal::SuperlatticeEnumerator::dimension | ( | ) | const |
Get the dimensions of the enumerator (1D, 2D or 3D)
Definition at line 137 of file SuperlatticeEnumerator.cc.
|
inline |
Definition at line 93 of file SuperlatticeEnumerator.hh.
|
inline |
Definition at line 95 of file SuperlatticeEnumerator.hh.
SuperlatticeEnumerator::const_iterator CASM::xtal::SuperlatticeEnumerator::end | ( | ) | const |
A const iterator to the past-the-last volume.
Definition at line 154 of file SuperlatticeEnumerator.cc.
|
inline |
Definition at line 91 of file SuperlatticeEnumerator.hh.
SuperlatticeEnumerator::size_type CASM::xtal::SuperlatticeEnumerator::end_volume | ( | ) | const |
Get the end volume.
Definition at line 144 of file SuperlatticeEnumerator.cc.
void CASM::xtal::SuperlatticeEnumerator::end_volume | ( | size_type | _end_volume | ) |
Set the end volume.
Eigen::Matrix3i CASM::xtal::enforce_min_volume | ( | const Lattice & | unit, |
const Eigen::Matrix3i & | T, | ||
const SymOpVector & | point_grp, | ||
Index | volume, | ||
bool | fix_shape = false |
||
) |
Return a transformation matrix that ensures a supercell of at least some volume.
unit | The thing that is tiled to form supercells. May not be the primitive cell. |
T | The transformation matrix of the unit, relative the prim. The volume of the unit is determined from T.determinant(). |
point_grp | Point group operations to use for checking supercell uniqueness. |
volume | The beginning volume to enumerate |
end_volume | The past-the-last volume to enumerate |
fix_shape | If true, enforce that S = T*m*I, where m is a scalar and I is the identity matrix. |
Definition at line 177 of file SuperlatticeEnumerator.cc.
Eigen::Matrix3i CASM::xtal::enforce_min_volume | ( | ExternSymGroupTypeIt | begin, |
ExternSymGroupTypeIt | end, | ||
const Lattice & | unit, | ||
const Eigen::Matrix3i & | T, | ||
Index | volume, | ||
bool | fix_shape = false |
||
) |
Definition at line 327 of file SuperlatticeEnumerator.hh.
const SuperlatticeEnumerator & CASM::xtal::SuperlatticeIterator::enumerator | ( | ) | const |
const reference to the SuperlatticeEnumerator this is iterating with
Definition at line 73 of file SuperlatticeEnumerator.cc.
const Eigen::Matrix3i & CASM::xtal::SuperlatticeEnumerator::gen_mat | ( | ) | const |
Get the transformation matrix that's being applied to the unit vectors.
Definition at line 133 of file SuperlatticeEnumerator.cc.
|
inline |
Definition at line 97 of file SuperlatticeEnumerator.hh.
Eigen::Matrix3i CASM::xtal::SuperlatticeIterator::matrix | ( | ) | const |
constructed supercell matrix
Definition at line 100 of file SuperlatticeEnumerator.cc.
bool CASM::xtal::SuperlatticeIterator::operator!= | ( | const SuperlatticeIterator & | B | ) | const |
Iterator comparison.
Definition at line 47 of file SuperlatticeEnumerator.cc.
SuperlatticeIterator::reference CASM::xtal::SuperlatticeIterator::operator* | ( | ) | const |
Access the supercell.
Definition at line 51 of file SuperlatticeEnumerator.cc.
SuperlatticeIterator & CASM::xtal::SuperlatticeIterator::operator++ | ( | ) |
Prefix increment operator. Increment to next unique supercell.
Definition at line 78 of file SuperlatticeEnumerator.cc.
SuperlatticeIterator::pointer CASM::xtal::SuperlatticeIterator::operator-> | ( | ) | const |
Access the supercell.
Definition at line 60 of file SuperlatticeEnumerator.cc.
SuperlatticeIterator & CASM::xtal::SuperlatticeIterator::operator= | ( | const SuperlatticeIterator & | B | ) |
Definition at line 33 of file SuperlatticeEnumerator.cc.
bool CASM::xtal::SuperlatticeIterator::operator== | ( | const SuperlatticeIterator & | B | ) | const |
Iterator comparison.
Definition at line 43 of file SuperlatticeEnumerator.cc.
const SymOpVector & CASM::xtal::SuperlatticeEnumerator::point_group | ( | ) | const |
Access the unit point group.
Definition at line 129 of file SuperlatticeEnumerator.cc.
|
inline |
Constructor.
begin_volume | The beginning volume to enumerate |
end_volume | The past-the-last volume to enumerate |
dirs | String indicating which lattice vectors to enumerate over. Some combination of 'a', 'b', and 'c', where 'a' indicates the first lattice vector of the unit cell, 'b' the second, and 'c' the third. |
generating_matrix | This matrix, G, transforms the primitive lattice vectors into the unit cell lattice vectors which are used to generate supercells. So the generated supercells, S = P*G*T, where S and P are column vector matrices of the supercell and primitive cell, respectively, and G and T are integer tranformation matrices. |
Definition at line 47 of file SuperlatticeEnumerator.hh.
CASM::xtal::SuperlatticeEnumerator::SuperlatticeEnumerator | ( | const Lattice & | unit, |
const SymOpVector & | point_grp, | ||
const ScelEnumProps & | enum_props | ||
) |
Construct a SuperlatticeEnumerator using custom point group operations.
unit | The thing that is tiled to form supercells. For now Lattice. |
point_grp | Point group operations to use for checking supercell uniqueness. |
enum_props | Data structure specifying how to enumerate supercells |
Definition at line 111 of file SuperlatticeEnumerator.cc.
|
inline |
Initialize with the unit lattice to be tiled, and specification for how to enumerate the superlattices. The symmetry operations are given with an iterator range, whose type must either have an Adapter functor defined, or the same external accessors as SymOpType
Definition at line 228 of file SuperlatticeEnumerator.hh.
|
inline |
Definition at line 127 of file SuperlatticeEnumerator.hh.
CASM::xtal::SuperlatticeIterator::SuperlatticeIterator | ( | const SuperlatticeEnumerator & | enumerator, |
int | volume, | ||
int | dims | ||
) |
Definition at line 16 of file SuperlatticeEnumerator.cc.
const Lattice & CASM::xtal::SuperlatticeEnumerator::unit | ( | ) | const |
Access the unit the is being made into superlattices.
Definition at line 127 of file SuperlatticeEnumerator.cc.
HermiteCounter::value_type CASM::xtal::SuperlatticeIterator::volume | ( | ) | const |
current volume
Definition at line 69 of file SuperlatticeEnumerator.cc.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::forward_iterator_tag CASM::xtal::SuperlatticeIterator::iterator_category |
fixes alignment of m_deformation
Definition at line 121 of file SuperlatticeEnumerator.hh.
|
private |
Definition at line 100 of file SuperlatticeEnumerator.hh.
|
private |
The first volume supercells to be iterated over (what cbegin uses)
Definition at line 287 of file SuperlatticeEnumerator.hh.
|
private |
Keep track of the HNF matrices for the current determinant value.
Definition at line 197 of file SuperlatticeEnumerator.hh.
|
private |
Current supercell matrix in HermitCounter form.
Definition at line 190 of file SuperlatticeEnumerator.hh.
|
private |
Definition at line 102 of file SuperlatticeEnumerator.hh.
|
private |
The number of lattice directions the enumeration is being done in.
Definition at line 299 of file SuperlatticeEnumerator.hh.
|
private |
Definition at line 103 of file SuperlatticeEnumerator.hh.
|
private |
Definition at line 101 of file SuperlatticeEnumerator.hh.
|
private |
The past-the-last volume supercells to be iterated over (what cend uses)
Definition at line 291 of file SuperlatticeEnumerator.hh.
|
private |
Pointer to SuperlatticeEnumerator which holds the unit cell and point group.
Definition at line 187 of file SuperlatticeEnumerator.hh.
|
private |
Definition at line 104 of file SuperlatticeEnumerator.hh.
|
private |
This matrix (G) specifies new lattice vectors to enumerate over column-wise, such that the resulting transformation matrix is G*B, where B is the block matrix constructed out of the HermiteCounter matrix H.
Definition at line 296 of file SuperlatticeEnumerator.hh.
|
private |
The lattice of the unit cell.
The point group of the unit cell
Definition at line 284 of file SuperlatticeEnumerator.hh.
|
mutableprivate |
A supercell, stored here so that iterator dereferencing will be OK. Only used when requested.
Definition at line 194 of file SuperlatticeEnumerator.hh.
|
mutableprivate |
Indicates if m_super reflects the current m_current supercell matrix.
Definition at line 183 of file SuperlatticeEnumerator.hh.
|
private |
The unit cell of the supercells.
Definition at line 278 of file SuperlatticeEnumerator.hh.