CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::LatticeMap Class Reference

#include <LatticeMap.hh>

Detailed Description

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 LatticeMapbest_strain_mapping () const
 
const LatticeMapnext_mapping_better_than (double max_cost) const
 
double strain_cost () const
 
const DMatTypematrixN () const
 
const DMatTypematrixF () 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< IMatTypem_inv_count
 
DMatType m_F
 
DMatType m_N
 
DMatType m_cache
 

Member Typedef Documentation

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.

Constructor & Destructor Documentation

CASM::LatticeMap::LatticeMap ( const Lattice _ideal,
const Lattice _strained,
Index  _num_atoms,
double  _tol,
int  _range 
)

Definition at line 4 of file LatticeMap.cc.

Member Function Documentation

double CASM::LatticeMap::_calc_strain_cost ( ) const
private

Definition at line 126 of file LatticeMap.cc.

const LatticeMap & CASM::LatticeMap::_next_mapping_better_than ( double  max_cost) const
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.

double CASM::LatticeMap::calc_strain_cost ( const Eigen::Matrix3d &  F,
double  relaxed_atomic_vol 
)
static

Definition at line 118 of file LatticeMap.cc.

const DMatType& CASM::LatticeMap::matrixF ( ) const
inline

Definition at line 41 of file LatticeMap.hh.

const DMatType& CASM::LatticeMap::matrixN ( ) const
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.

double CASM::LatticeMap::strain_cost ( ) const
inline

Definition at line 35 of file LatticeMap.hh.

Member Data Documentation

double CASM::LatticeMap::m_atomic_vol
private

Definition at line 53 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_cache
mutableprivate

Definition at line 58 of file LatticeMap.hh.

double CASM::LatticeMap::m_cost
mutableprivate

Definition at line 56 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_F
mutableprivate

Definition at line 58 of file LatticeMap.hh.

EigenCounter<IMatType> CASM::LatticeMap::m_inv_count
mutableprivate

Definition at line 57 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_L1
private

Definition at line 48 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_L2
private

Definition at line 48 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_N
mutableprivate

Definition at line 58 of file LatticeMap.hh.

double CASM::LatticeMap::m_scale
private

Definition at line 53 of file LatticeMap.hh.

double CASM::LatticeMap::m_tol
private

Definition at line 54 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_U
private

Definition at line 51 of file LatticeMap.hh.

DMatType CASM::LatticeMap::m_V_inv
private

Definition at line 51 of file LatticeMap.hh.


The documentation for this class was generated from the following files: