CASM  1.1.0
A Clusters Approach to Statistical Mechanics
HermiteCounter.cc File Reference

Go to the source code of this file.

Namespaces

 CASM
 Main CASM namespace.
 
 CASM::xtal
 
 CASM::xtal::HermiteCounter_impl
 

Functions

HermiteCounter::Index CASM::xtal::HermiteCounter_impl::_spill_factor (Eigen::VectorXi &diag, HermiteCounter::Index position, HermiteCounter::value_type attempt)
 Find the next factor of the specified position and share with next element. Use attempt as starting point. More...
 
HermiteCounter::Index CASM::xtal::HermiteCounter_impl::next_spill_position (Eigen::VectorXi &diag, HermiteCounter::Index position)
 Spill the next factor of the specified element with its neighbor, and return new position. More...
 
HermiteCounter::Index CASM::xtal::HermiteCounter_impl::upper_size (HermiteCounter::Index init_dim)
 Determine the number of elements in the upper triangular matrix (excluding diagonal) More...
 
EigenVectorXiCounter CASM::xtal::HermiteCounter_impl::_upper_tri_counter (const Eigen::VectorXi &current_diag)
 Create a counter for the elements above the diagonal based on the current diagonal value. More...
 
Eigen::MatrixXi CASM::xtal::HermiteCounter_impl::_zip_matrix (const Eigen::VectorXi &current_diag, const Eigen::VectorXi &current_upper_tri)
 Assemble a matrix diagonal and unrolled upper triangle values into a matrix. More...
 
Eigen::MatrixXi CASM::xtal::HermiteCounter_impl::_expand_dims_old (const Eigen::MatrixXi &hermit_mat, const Eigen::VectorXi &active_dims)
 Expand a n x n Hermite normal matrix into a m x m one (e.g. for 2D supercells) More...
 
Eigen::MatrixXi CASM::xtal::HermiteCounter_impl::_expand_dims (const Eigen::MatrixXi &H, const Eigen::MatrixXi &G)
 Expand a n x n Hermite normal matrix (H) into a m x m one through a m x m generating matrix (G) (e.g. for arbitrary 2D supercells) More...
 
Eigen::VectorXi CASM::xtal::HermiteCounter_impl::_canonical_unroll (const Eigen::MatrixXi &hermit_mat)
 Unroll a Hermit normal form square matrix into a vector such that it's canonical form is easy to compare. More...
 
bool CASM::xtal::HermiteCounter_impl::_canonical_compare (const Eigen::MatrixXi &H0, const Eigen::MatrixXi &H1)
 Compare two integer matrices and see which one is lexicographically greatest. Returns true if H0<H1. More...