35 return pow(std::abs(_deformation_gradient.determinant()), 1. / 3.);
45 double _vol_factor)
const;
80 typedef Eigen::Matrix<double, 3, 3, Eigen::DontAlign>
DMatType;
81 typedef Eigen::Matrix<int, 3, 3, Eigen::DontAlign>
IMatType;
86 Eigen::Ref<const Eigen::MatrixXd>
const &strain_gram_mat =
88 double _init_better_than = 1e20,
89 bool _symmetrize_strain_cost =
false,
double _xtal_tol =
TOL);
92 Eigen::Ref<const DMatType>
const &_child,
Index _num_atoms,
95 Eigen::Ref<const Eigen::MatrixXd>
const &strain_gram_mat =
97 double _init_better_than = 1e20,
98 bool _symmetrize_strain_cost =
false,
double _xtal_tol =
TOL);
100 void reset(
double _better_than = 1e20);
Eigen::Matrix< double, 3, 3, Eigen::DontAlign > DMatType
SymOpVector m_parent_point_group
Eigen::Matrix< int, 3, 3, Eigen::DontAlign > IMatType
double strain_cost() const
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)
Eigen::Matrix3i const & inv_mat() const
Returns the inverse of the current transformation matrix under consideration.
double _calc_strain_cost() const
const DMatType & parent_matrix() const
const DMatType & deformation_gradient() const
StrainCostCalculator m_calc
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)
LatticeMap const & next_mapping_better_than(double max_cost) const
bool symmetrize_strain_cost() const
Index n_mat() const
Number of unimodular matrices.
double calc_strain_cost(const Eigen::Matrix3d &deformation_gradient) const
void reset(double _better_than=1e20)
LatticeMap const & best_strain_mapping() const
bool m_symmetrize_strain_cost
DMatType m_deformation_gradient
const DMatType & child_matrix() const
const DMatType & matrixN() const
std::vector< Eigen::Matrix3i > const * m_mvec_ptr
std::vector< Eigen::Matrix3i > m_child_fsym_mats
LatticeMap const & _next_mapping_better_than(double max_cost) const
std::vector< Eigen::Matrix3i > m_parent_fsym_mats
bool _check_canonical() const
Returns true if current transformation is the canonical equivalent.
Eigen::MatrixXd m_gram_mat
Eigen::Matrix3d m_cache_inv
static double isotropic_strain_cost(Eigen::Matrix3d const &_deformation_gradient)
StrainCostCalculator(Eigen::Ref< const Eigen::MatrixXd > const &strain_gram_mat=Eigen::MatrixXd::Identity(9, 9))
double strain_cost(Eigen::Matrix3d const &_deformation_gradient) const
static double vol_factor(Eigen::Matrix3d const &_deformation_gradient)
IdentitySymRepBuilder Identity()
std::vector< SymOp > SymOpVector
INDEX_TYPE Index
For long integer indexing: