CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SimpleStructureTools.hh
Go to the documentation of this file.
1 #ifndef SIMPLESTRUCTURETOOLS_HH
2 #define SIMPLESTRUCTURETOOLS_HH
3 
4 #include <set>
5 #include <string>
6 #include <vector>
7 
10 #include "casm/external/Eigen/Dense"
12 
13 namespace CASM {
14 
15 namespace xtal {
16 
21 // TODO: Move this into crystallography declarations or something of the sort
22 namespace SimpleStructureTools {
23 // Defined in SimpleStructure.hh
24 enum class SpeciesMode;
25 } // namespace SimpleStructureTools
26 
27 class SimpleStructure;
28 class Site;
29 class Molecule;
30 class BasicStructure;
31 
32 SimpleStructure make_superstructure(Eigen::Ref<const Eigen::Matrix3i> const &_T,
33  SimpleStructure const &_sstruc);
34 
37 std::vector<Index> superstructure_basis_idx(
38  Eigen::Ref<const Eigen::Matrix3i> const &_T,
39  SimpleStructure const &_sstruc);
40 
42 SimpleStructure make_simple_structure(BasicStructure const &_struc);
43 
47 std::vector<std::set<Index>> atom_site_compatibility(
48  SimpleStructure const &sstruc, BasicStructure const &_prim);
49 
53 std::vector<std::set<Index>> mol_site_compatibility(
54  SimpleStructure const &sstruc, BasicStructure const &_prim);
55 
57 void _atomize(SimpleStructure &_sstruc,
58  Eigen::Ref<const Eigen::VectorXi> const &_mol_occ,
59  BasicStructure const &_reference);
60 
69 BasicStructure make_basic_structure(
70  SimpleStructure const &_sstruc, std::vector<DoFKey> const &_all_dofs,
72  std::vector<std::vector<Molecule>> _allowed_occupants = {});
73 
74 std::vector<Eigen::MatrixXd> generate_invariant_shuffle_modes(
75  const std::vector<xtal::SymOp> &factor_group,
76  const std::vector<Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic,
77  Index>> &permute_group);
79 } // namespace xtal
80 
81 } // namespace CASM
82 #endif
SharedPrimFormatter< jsonParser > factor_group()
SpeciesMode
enum to refer to a particular representation of the occupants (atomic or molecular)
std::vector< Index > superstructure_basis_idx(Eigen::Ref< const Eigen::Matrix3i > const &_T, SimpleStructure const &_sstruc)
Constructs a vector containing the basis index of the ith site in the supercell.
SimpleStructure make_simple_structure(BasicStructure const &_struc)
Construct from decorated structure.
std::vector< std::set< Index > > mol_site_compatibility(SimpleStructure const &sstruc, BasicStructure const &_prim)
Determine which sites of a BasicStructure can host each molecule of a SimpleStructure result[i] is se...
void _atomize(SimpleStructure &_sstruc, Eigen::Ref< const Eigen::VectorXi > const &_mol_occ, BasicStructure const &_reference)
use information in _reference to initialize atom_info from mol_info
std::vector< Eigen::MatrixXd > generate_invariant_shuffle_modes(const std::vector< xtal::SymOp > &factor_group, const std::vector< Eigen::PermutationMatrix< Eigen::Dynamic, Eigen::Dynamic, Index >> &permute_group)
BasicStructure make_basic_structure(SimpleStructure const &_sstruc, std::vector< DoFKey > const &_all_dofs, SimpleStructureTools::SpeciesMode mode, std::vector< std::vector< Molecule >> _allowed_occupants={})
Construct BasicStructure from SimpleStructure.
std::vector< std::set< Index > > atom_site_compatibility(SimpleStructure const &sstruc, BasicStructure const &_prim)
Determine which sites of a BasicStructure can host each atom of a SimpleStructure result[i] is set of...
BasicStructure make_superstructure(const BasicStructure &tiling_unit, const Eigen::Matrix< IntegralType, 3, 3, Options > &transformation_matrix)
Main CASM namespace.
Definition: APICommand.hh:8
INDEX_TYPE Index
For long integer indexing:
Definition: definitions.hh:39