CASM
AClustersApproachtoStatisticalMechanics
|
#include <iostream>
#include <iomanip>
#include <cmath>
#include <complex>
#include <cassert>
#include <boost/math/special_functions/round.hpp>
#include "casm/external/Eigen/Dense"
#include "casm/external/Eigen/Eigenvalues"
#include "casm/container/Array.hh"
#include "casm/misc/CASM_math.hh"
Go to the source code of this file.
Namespaces | |
CASM | |
Main CASM namespace. | |
CASM::normal_form_impl | |
Functions | |
void | CASM::get_Hermitian (Eigen::MatrixXcd &original_mat, Eigen::MatrixXcd &hermitian_mat, Eigen::MatrixXcd &antihermitian_mat) |
bool | CASM::is_Hermitian (Eigen::MatrixXcd &mat) |
void | CASM::poly_fit (Eigen::VectorXcd &xvec, Eigen::VectorXcd &yvec, Eigen::VectorXcd &coeffs, int degree) |
std::pair< Eigen::MatrixXi, Eigen::MatrixXi > | CASM::hermite_normal_form (const Eigen::MatrixXi &M) |
Return the hermite normal form, M == H*V. More... | |
double | CASM::angle (const Eigen::Ref< const Eigen::Vector3d > &a, const Eigen::Ref< const Eigen::Vector3d > &b) |
Get angle, in radians, between two vectors on range [0,pi]. More... | |
double | CASM::signed_angle (const Eigen::Ref< const Eigen::Vector3d > &a, const Eigen::Ref< const Eigen::Vector3d > &b, const Eigen::Ref< const Eigen::Vector3d > &pos_ref) |
signed angle, in radians, between -pi and pi that describe separation in direction of two vectors More... | |
Eigen::MatrixXd | CASM::pretty (const Eigen::MatrixXd &M, double tol) |
Round entries that are within tol of being integer to that integer value. More... | |
template<typename Derived > | |
Derived::Scalar | CASM::triple_prod (const Derived &vec0, const Derived &vec1, const Derived &vec2) |
template<typename Derived > | |
bool | CASM::is_integer (const Eigen::MatrixBase< Derived > &M, double tol) |
Check if Eigen::Matrix is integer. More... | |
template<typename Derived > | |
bool | CASM::is_unimodular (const Eigen::MatrixBase< Derived > &M, double tol) |
Check if Eigen::Matrix is unimodular. More... | |
template<typename Derived > | |
bool | CASM::is_diagonal (const Eigen::MatrixBase< Derived > &M, double tol=TOL) |
Check if Eigen::Matrix is diagonal. More... | |
template<typename Derived > | |
Eigen::CwiseUnaryOp< decltype(std::ptr_fun(boost::math::iround < typename Derived::Scalar > )), const Derived > | CASM::iround (const Eigen::MatrixBase< Derived > &val) |
Round Eigen::MatrixXd to Eigen::MatrixXi. More... | |
template<typename Derived > | |
Eigen::CwiseUnaryOp< decltype(std::ptr_fun(boost::math::lround < typename Derived::Scalar > )), const Derived > | CASM::lround (const Eigen::MatrixBase< Derived > &val) |
Round Eigen::MatrixXd to Eigen::MatrixXl. More... | |
template<typename Derived > | |
Derived::Scalar | CASM::matrix_minor (const Eigen::MatrixBase< Derived > &M, int row, int col) |
Return the minor of integer Matrix M element row, col. More... | |
template<typename Derived > | |
Eigen::Matrix< typename Derived::Scalar, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > | CASM::cofactor (const Eigen::MatrixBase< Derived > &M) |
Return cofactor matrix. More... | |
template<typename Derived > | |
Eigen::Matrix< typename Derived::Scalar, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > | CASM::adjugate (const Eigen::MatrixBase< Derived > &M) |
Return adjugate matrix. More... | |
template<typename Scalar > | |
Eigen::Matrix< Scalar, 3, 3 > | CASM::normal_form_impl::_elementary_hermite_op (Scalar a, Scalar b, Scalar i, Scalar j) |
Return an elementary hermite transformation. More... | |
template<typename Derived > | |
Eigen::Matrix< typename Derived::Scalar, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > | CASM::inverse (const Eigen::MatrixBase< Derived > &M) |
Return the integer inverse matrix of an invertible integer matrix. More... | |
template<typename DerivedIn , typename DerivedOut > | |
void | CASM::smith_normal_form (const Eigen::MatrixBase< DerivedIn > &M, Eigen::MatrixBase< DerivedOut > &U, Eigen::MatrixBase< DerivedOut > &S, Eigen::MatrixBase< DerivedOut > &V) |
Return the smith normal form, M == U*S*V. More... | |
std::vector< Eigen::Matrix3i > | CASM::_unimodular_matrices (bool positive, bool negative) |
const std::vector < Eigen::Matrix3i > & | CASM::positive_unimodular_matrices () |
const std::vector < Eigen::Matrix3i > & | CASM::negative_unimodular_matrices () |
const std::vector < Eigen::Matrix3i > & | CASM::unimodular_matrices () |