CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <LatticeMap.hh>
Find the parent mapping of Lattice _parent onto Lattice _child Denoting _parent.lat_column_mat() as 'parent' and _child.lat_column_mat() as 'child', we want a mapping child = deformation_gradient*parent*N where deformation_gradient is an arbitrary 3x3 matrix and 'N' is a 3x3 unimodular (i.e., determinant=+/-1) integer matrix such that cost(deformation_gradient) is minimized with respect to the matrix 'N' For the cost function we use: cost(deformation_gradient) = (_child.volume()/num_atoms)^(2/3) * trace(D.transpose()*D) / g where 'D' is the isovolumetric strain D = deformation_gradient/det(deformation_gradient)^(1/3)-Identity and 'g' is a const geometric factor. The cost function corresponds to the mean-square displacement of a point on the surface of a sphere having V=_child.volume()/num_atoms (i.e., the atomic volume of the child crystal) when the sphere is deformed at constant volume by deformation_gradient/det(deformation_gradient)^(1/3)
Definition at line 78 of file LatticeMap.hh.
Public Types | |
typedef Eigen::Matrix< double, 3, 3, Eigen::DontAlign > | DMatType |
typedef Eigen::Matrix< int, 3, 3, Eigen::DontAlign > | IMatType |
Public Member Functions | |
LatticeMap (Lattice const &_parent, Lattice const &_child, Index _num_atoms, int _range, SymOpVector const &_parent_point_group, SymOpVector const &_child_point_group, Eigen::Ref< const Eigen::MatrixXd > const &strain_gram_mat=Eigen::MatrixXd::Identity(9, 9), double _init_better_than=1e20, bool _symmetrize_strain_cost=false, double _xtal_tol=TOL) | |
LatticeMap (Eigen::Ref< const DMatType > const &_parent, Eigen::Ref< const DMatType > const &_child, Index _num_atoms, int _range, SymOpVector const &_parent_point_group, SymOpVector const &_child_point_group, Eigen::Ref< const Eigen::MatrixXd > const &strain_gram_mat=Eigen::MatrixXd::Identity(9, 9), double _init_better_than=1e20, bool _symmetrize_strain_cost=false, double _xtal_tol=TOL) | |
void | reset (double _better_than=1e20) |
LatticeMap const & | best_strain_mapping () const |
LatticeMap const & | next_mapping_better_than (double max_cost) const |
double | strain_cost () const |
double | calc_strain_cost (const Eigen::Matrix3d &deformation_gradient) const |
const DMatType & | matrixN () const |
const DMatType & | deformation_gradient () const |
const DMatType & | parent_matrix () const |
const DMatType & | child_matrix () const |
double | xtal_tol () const |
bool | symmetrize_strain_cost () const |
Private Member Functions | |
Eigen::Matrix3i const & | inv_mat () const |
Returns the inverse of the current transformation matrix under consideration. More... | |
Index | n_mat () const |
Number of unimodular matrices. More... | |
bool | _check_canonical () const |
Returns true if current transformation is the canonical equivalent. More... | |
LatticeMap const & | _next_mapping_better_than (double max_cost) const |
double | _calc_strain_cost () const |
Private Attributes | |
DMatType | m_parent |
DMatType | m_child |
DMatType | m_U |
DMatType | m_V_inv |
StrainCostCalculator | m_calc |
double | m_vol_factor |
int | m_range |
std::vector< Eigen::Matrix3i > const * | m_mvec_ptr |
std::vector< Eigen::Matrix3i > | m_parent_fsym_mats |
SymOpVector | m_parent_point_group |
std::vector< Eigen::Matrix3i > | m_child_fsym_mats |
bool | m_symmetrize_strain_cost |
double | m_xtal_tol |
double | m_cost |
Index | m_currmat |
DMatType | m_deformation_gradient |
DMatType | m_N |
DMatType | m_dcache |
IMatType | m_icache |
typedef Eigen::Matrix<double, 3, 3, Eigen::DontAlign> CASM::xtal::LatticeMap::DMatType |
Definition at line 80 of file LatticeMap.hh.
typedef Eigen::Matrix<int, 3, 3, Eigen::DontAlign> CASM::xtal::LatticeMap::IMatType |
Definition at line 81 of file LatticeMap.hh.
CASM::xtal::LatticeMap::LatticeMap | ( | Lattice const & | _parent, |
Lattice const & | _child, | ||
Index | _num_atoms, | ||
int | _range, | ||
SymOpVector const & | _parent_point_group, | ||
SymOpVector const & | _child_point_group, | ||
Eigen::Ref< const Eigen::MatrixXd > const & | strain_gram_mat = Eigen::MatrixXd::Identity(9, 9) , |
||
double | _init_better_than = 1e20 , |
||
bool | _symmetrize_strain_cost = false , |
||
double | _xtal_tol = TOL |
||
) |
Definition at line 129 of file LatticeMap.cc.
CASM::xtal::LatticeMap::LatticeMap | ( | Eigen::Ref< const DMatType > const & | _parent, |
Eigen::Ref< const DMatType > const & | _child, | ||
Index | _num_atoms, | ||
int | _range, | ||
SymOpVector const & | _parent_point_group, | ||
SymOpVector const & | _child_point_group, | ||
Eigen::Ref< const Eigen::MatrixXd > const & | strain_gram_mat = Eigen::MatrixXd::Identity(9, 9) , |
||
double | _init_better_than = 1e20 , |
||
bool | _symmetrize_strain_cost = false , |
||
double | _xtal_tol = TOL |
||
) |
|
private |
|
private |
Returns true if current transformation is the canonical equivalent.
Definition at line 359 of file LatticeMap.cc.
|
private |
Definition at line 315 of file LatticeMap.cc.
const LatticeMap & CASM::xtal::LatticeMap::best_strain_mapping | ( | ) | const |
Definition at line 275 of file LatticeMap.cc.
double CASM::xtal::LatticeMap::calc_strain_cost | ( | const Eigen::Matrix3d & | deformation_gradient | ) | const |
Definition at line 296 of file LatticeMap.cc.
|
inline |
Definition at line 120 of file LatticeMap.hh.
|
inline |
Definition at line 114 of file LatticeMap.hh.
|
inlineprivate |
Returns the inverse of the current transformation matrix under consideration.
Definition at line 165 of file LatticeMap.hh.
|
inline |
Definition at line 112 of file LatticeMap.hh.
|
inlineprivate |
Number of unimodular matrices.
Definition at line 168 of file LatticeMap.hh.
const LatticeMap & CASM::xtal::LatticeMap::next_mapping_better_than | ( | double | max_cost | ) | const |
Definition at line 306 of file LatticeMap.cc.
|
inline |
Definition at line 118 of file LatticeMap.hh.
void CASM::xtal::LatticeMap::reset | ( | double | _better_than = 1e20 | ) |
Definition at line 219 of file LatticeMap.cc.
|
inline |
Definition at line 108 of file LatticeMap.hh.
|
inline |
Definition at line 123 of file LatticeMap.hh.
|
inline |
Definition at line 122 of file LatticeMap.hh.
|
private |
Definition at line 131 of file LatticeMap.hh.
|
private |
Definition at line 126 of file LatticeMap.hh.
|
private |
Definition at line 149 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 156 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 157 of file LatticeMap.hh.
|
private |
Definition at line 158 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 158 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 159 of file LatticeMap.hh.
|
private |
Definition at line 140 of file LatticeMap.hh.
|
private |
Definition at line 158 of file LatticeMap.hh.
|
private |
Definition at line 126 of file LatticeMap.hh.
|
private |
Definition at line 143 of file LatticeMap.hh.
|
private |
Definition at line 146 of file LatticeMap.hh.
|
private |
Definition at line 137 of file LatticeMap.hh.
|
private |
Definition at line 153 of file LatticeMap.hh.
|
private |
Definition at line 129 of file LatticeMap.hh.
|
private |
Definition at line 129 of file LatticeMap.hh.
|
private |
Definition at line 135 of file LatticeMap.hh.
|
private |
Definition at line 154 of file LatticeMap.hh.