CASM
AClustersApproachtoStatisticalMechanics
|
#include <LatticeMap.hh>
Find the ideal mapping of Lattice _ideal onto Lattice _strained Denoting _ideal.lat_column_mat() as 'L1' and _strained.lat_column_mat() as 'L2', we want a mapping L2 = F*L1*N where F is an arbitrary 3x3 matrix and 'N' is a 3x3 unimodular (i.e., determinant=+/-1) integer matrix such that cost(F) is minimized with respect to the matrix 'N' For the cost function we use: cost(F) = (_strained.volume()/num_atoms)^(2/3) * trace(D.transpose()*D) / g where 'D' is the isovolumetric strain D = F/det(F)^(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=_strained.volume()/num_atoms (i.e., the atomic volume of the strained crystal) when the sphere is deformed at constant volume by F/det(F)^(1/3)
Definition at line 26 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 (const Lattice &_ideal, const Lattice &_strained, Index _num_atoms, double _tol, int _range) | |
const LatticeMap & | best_strain_mapping () const |
const LatticeMap & | next_mapping_better_than (double max_cost) const |
double | strain_cost () const |
const DMatType & | matrixN () const |
const DMatType & | matrixF () const |
Static Public Member Functions | |
static double | calc_strain_cost (const Eigen::Matrix3d &F, double relaxed_atomic_vol) |
Private Member Functions | |
const LatticeMap & | _next_mapping_better_than (double max_cost) const |
double | _calc_strain_cost () const |
Private Attributes | |
DMatType | m_L1 |
DMatType | m_L2 |
DMatType | m_U |
DMatType | m_V_inv |
double | m_scale |
double | m_atomic_vol |
double | m_tol |
double | m_cost |
EigenCounter< IMatType > | m_inv_count |
DMatType | m_F |
DMatType | m_N |
DMatType | m_cache |
typedef Eigen::Matrix<double, 3, 3, Eigen::DontAlign> CASM::LatticeMap::DMatType |
Definition at line 28 of file LatticeMap.hh.
typedef Eigen::Matrix<int, 3, 3, Eigen::DontAlign> CASM::LatticeMap::IMatType |
Definition at line 29 of file LatticeMap.hh.
CASM::LatticeMap::LatticeMap | ( | const Lattice & | _ideal, |
const Lattice & | _strained, | ||
Index | _num_atoms, | ||
double | _tol, | ||
int | _range | ||
) |
Definition at line 4 of file LatticeMap.cc.
|
private |
Definition at line 126 of file LatticeMap.cc.
|
private |
Definition at line 78 of file LatticeMap.cc.
const LatticeMap & CASM::LatticeMap::best_strain_mapping | ( | ) | const |
Definition at line 47 of file LatticeMap.cc.
|
static |
Definition at line 118 of file LatticeMap.cc.
|
inline |
Definition at line 41 of file LatticeMap.hh.
|
inline |
Definition at line 38 of file LatticeMap.hh.
const LatticeMap & CASM::LatticeMap::next_mapping_better_than | ( | double | max_cost | ) | const |
Definition at line 70 of file LatticeMap.cc.
|
inline |
Definition at line 35 of file LatticeMap.hh.
|
private |
Definition at line 53 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 58 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 56 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 58 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 57 of file LatticeMap.hh.
|
private |
Definition at line 48 of file LatticeMap.hh.
|
private |
Definition at line 48 of file LatticeMap.hh.
|
mutableprivate |
Definition at line 58 of file LatticeMap.hh.
|
private |
Definition at line 53 of file LatticeMap.hh.
|
private |
Definition at line 54 of file LatticeMap.hh.
|
private |
Definition at line 51 of file LatticeMap.hh.
|
private |
Definition at line 51 of file LatticeMap.hh.