CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::xtal::LatticeMap Class Reference

#include <LatticeMap.hh>

Detailed Description

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 DMatTypematrixN () const
 
const DMatTypedeformation_gradient () const
 
const DMatTypeparent_matrix () const
 
const DMatTypechild_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
 

Member Typedef Documentation

◆ DMatType

typedef Eigen::Matrix<double, 3, 3, Eigen::DontAlign> CASM::xtal::LatticeMap::DMatType

Definition at line 80 of file LatticeMap.hh.

◆ IMatType

typedef Eigen::Matrix<int, 3, 3, Eigen::DontAlign> CASM::xtal::LatticeMap::IMatType

Definition at line 81 of file LatticeMap.hh.

Constructor & Destructor Documentation

◆ LatticeMap() [1/2]

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.

◆ LatticeMap() [2/2]

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 
)

Member Function Documentation

◆ _calc_strain_cost()

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

◆ _check_canonical()

bool CASM::xtal::LatticeMap::_check_canonical ( ) const
private

Returns true if current transformation is the canonical equivalent.

Definition at line 359 of file LatticeMap.cc.

◆ _next_mapping_better_than()

const LatticeMap & CASM::xtal::LatticeMap::_next_mapping_better_than ( double  max_cost) const
private

Definition at line 315 of file LatticeMap.cc.

◆ best_strain_mapping()

const LatticeMap & CASM::xtal::LatticeMap::best_strain_mapping ( ) const

Definition at line 275 of file LatticeMap.cc.

◆ calc_strain_cost()

double CASM::xtal::LatticeMap::calc_strain_cost ( const Eigen::Matrix3d &  deformation_gradient) const

Definition at line 296 of file LatticeMap.cc.

◆ child_matrix()

const DMatType& CASM::xtal::LatticeMap::child_matrix ( ) const
inline

Definition at line 120 of file LatticeMap.hh.

◆ deformation_gradient()

const DMatType& CASM::xtal::LatticeMap::deformation_gradient ( ) const
inline

Definition at line 114 of file LatticeMap.hh.

◆ inv_mat()

Eigen::Matrix3i const& CASM::xtal::LatticeMap::inv_mat ( ) const
inlineprivate

Returns the inverse of the current transformation matrix under consideration.

Definition at line 165 of file LatticeMap.hh.

◆ matrixN()

const DMatType& CASM::xtal::LatticeMap::matrixN ( ) const
inline

Definition at line 112 of file LatticeMap.hh.

◆ n_mat()

Index CASM::xtal::LatticeMap::n_mat ( ) const
inlineprivate

Number of unimodular matrices.

Definition at line 168 of file LatticeMap.hh.

◆ next_mapping_better_than()

const LatticeMap & CASM::xtal::LatticeMap::next_mapping_better_than ( double  max_cost) const

Definition at line 306 of file LatticeMap.cc.

◆ parent_matrix()

const DMatType& CASM::xtal::LatticeMap::parent_matrix ( ) const
inline

Definition at line 118 of file LatticeMap.hh.

◆ reset()

void CASM::xtal::LatticeMap::reset ( double  _better_than = 1e20)

Definition at line 219 of file LatticeMap.cc.

◆ strain_cost()

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

Definition at line 108 of file LatticeMap.hh.

◆ symmetrize_strain_cost()

bool CASM::xtal::LatticeMap::symmetrize_strain_cost ( ) const
inline

Definition at line 123 of file LatticeMap.hh.

◆ xtal_tol()

double CASM::xtal::LatticeMap::xtal_tol ( ) const
inline

Definition at line 122 of file LatticeMap.hh.

Member Data Documentation

◆ m_calc

StrainCostCalculator CASM::xtal::LatticeMap::m_calc
private

Definition at line 131 of file LatticeMap.hh.

◆ m_child

DMatType CASM::xtal::LatticeMap::m_child
private

Definition at line 126 of file LatticeMap.hh.

◆ m_child_fsym_mats

std::vector<Eigen::Matrix3i> CASM::xtal::LatticeMap::m_child_fsym_mats
private

Definition at line 149 of file LatticeMap.hh.

◆ m_cost

double CASM::xtal::LatticeMap::m_cost
mutableprivate

Definition at line 156 of file LatticeMap.hh.

◆ m_currmat

Index CASM::xtal::LatticeMap::m_currmat
mutableprivate

Definition at line 157 of file LatticeMap.hh.

◆ m_dcache

DMatType CASM::xtal::LatticeMap::m_dcache
private

Definition at line 158 of file LatticeMap.hh.

◆ m_deformation_gradient

DMatType CASM::xtal::LatticeMap::m_deformation_gradient
mutableprivate

Definition at line 158 of file LatticeMap.hh.

◆ m_icache

IMatType CASM::xtal::LatticeMap::m_icache
mutableprivate

Definition at line 159 of file LatticeMap.hh.

◆ m_mvec_ptr

std::vector<Eigen::Matrix3i> const* CASM::xtal::LatticeMap::m_mvec_ptr
private

Definition at line 140 of file LatticeMap.hh.

◆ m_N

DMatType CASM::xtal::LatticeMap::m_N
private

Definition at line 158 of file LatticeMap.hh.

◆ m_parent

DMatType CASM::xtal::LatticeMap::m_parent
private

Definition at line 126 of file LatticeMap.hh.

◆ m_parent_fsym_mats

std::vector<Eigen::Matrix3i> CASM::xtal::LatticeMap::m_parent_fsym_mats
private

Definition at line 143 of file LatticeMap.hh.

◆ m_parent_point_group

SymOpVector CASM::xtal::LatticeMap::m_parent_point_group
private

Definition at line 146 of file LatticeMap.hh.

◆ m_range

int CASM::xtal::LatticeMap::m_range
private

Definition at line 137 of file LatticeMap.hh.

◆ m_symmetrize_strain_cost

bool CASM::xtal::LatticeMap::m_symmetrize_strain_cost
private

Definition at line 153 of file LatticeMap.hh.

◆ m_U

DMatType CASM::xtal::LatticeMap::m_U
private

Definition at line 129 of file LatticeMap.hh.

◆ m_V_inv

DMatType CASM::xtal::LatticeMap::m_V_inv
private

Definition at line 129 of file LatticeMap.hh.

◆ m_vol_factor

double CASM::xtal::LatticeMap::m_vol_factor
private

Definition at line 135 of file LatticeMap.hh.

◆ m_xtal_tol

double CASM::xtal::LatticeMap::m_xtal_tol
private

Definition at line 154 of file LatticeMap.hh.


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