1 #ifndef PARAMCOMPOSITION_HH
2 #define PARAMCOMPOSITION_HH
23 std::cerr <<
"WARNING in ParamComposition, you have not initialized a "
24 "PrimClex. Things could go horribly wrong if you dont. I hope "
25 "you know what you are doing."
40 const int &COMP_TYPE);
52 const std::vector<Eigen::VectorXd> tspanning);
69 stream <<
m_components << std::endl <<
"------" << std::endl;
80 const int &stream_width)
const;
82 const int &stream_width)
const;
84 const int &stream_width)
const;
86 const int &stream_width)
const;
89 stream <<
"components: ";
93 stream <<
"origin: " <<
m_origin << std::endl;
116 const std::vector<Eigen::MatrixXd> &
comp()
const {
return m_comp; }
void print_prim_end_members(std::ostream &stream) const
const std::vector< Eigen::MatrixXd > & comp() const
Eigen::VectorXd calc_num_atoms(const Eigen::VectorXd ¶m_composition) const
void print_origin_formula(std::ostream &stream, const int &stream_width) const
void select_composition_axes(const Index &choice)
Eigen::MatrixXd prim_end_members() const
Return all possible end members as row matrix.
static std::vector< std::string > string_components(ParamComposition::AllowedOccupants const &_allowed_occs)
AllowedOccupants m_allowed_occs
m_allowed_occs[b] is list of occupants allowed at site [b]
Eigen::VectorXd m_origin
The origin of the composition space.
void print_end_member_formula(const int &end_member_index, std::ostream &stream, const int &stream_width) const
void print_composition_matrices(std::ostream &stream) const
const std::vector< ParamComposition > & allowed_list() const
std::vector< Eigen::VectorXd > m_spanning_end_members
std::vector< std::string > m_components
The list of all allowed components, based on allowed_occs()
void print_composition_formula(std::ostream &stream, const int &stream_width) const
std::string composition_formula() const
Eigen::MatrixXd m_prim_end_members
void print_components(std::ostream &stream) const
std::vector< std::vector< std::string > > AllowedOccupants
const std::vector< std::vector< std::string > > & allowed_occs() const
For each sublattice, a list of occupants allowed on that sublattice.
std::vector< Eigen::MatrixXd > m_comp
const Eigen::VectorXd & origin() const
void print_member_formula(const Eigen::VectorXd &member, std::ostream &stream, const int &stream_width) const
void calc_transformation_matrices()
void print_composition_axes(std::ostream &stream) const
void generate_composition_transf()
void generate_prim_end_members()
const int & rank_of_space() const
Eigen::VectorXd calc_param_composition(const Eigen::VectorXd &num_atoms_per_prim) const
void generate_composition_space(bool verbose=false)
Eigen::VectorXd calc(const Eigen::VectorXd &tcomp, const int &MODE)
std::vector< ParamComposition > m_allowed_list
void print_curr_composition_axes(std::ostream &stream) const
const std::vector< std::string > & components() const
Components are in order of appearance precedence in allowed_occs()
const std::vector< Eigen::VectorXd > & spanning_end_members() const
const int & number_of_references() const
void calc_spanning_end_members()
ParamComposition calc_composition_object(const Eigen::VectorXd &torigin, const std::vector< Eigen::VectorXd > tspanning)
Eigen::Matrix3l transf_mat(const Lattice &prim_lat, const Lattice &super_lat)
INDEX_TYPE Index
For long integer indexing: