CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
ConfigEnumStrain.hh
Go to the documentation of this file.
1 #ifndef CASM_ConfigEnumStrain
2 #define CASM_ConfigEnumStrain
3 
9 
10 extern "C" {
12 }
13 
14 namespace CASM {
15 
20  class ConfigEnumStrain : public InputEnumeratorBase<Configuration> {
21 
22  // -- Required members -------------------
23 
24  public:
25 
27  const Configuration &_init,
28  const std::vector<Index> &subspace_partitions,
29  const std::vector<double> &magnitudes,
30  std::string _mode);
31 
32  std::string name() const override {
33  return enumerator_name;
34  }
35 
36  static const std::string enumerator_name;
37  static const std::string interface_help;
38  static int run(PrimClex &primclex, const jsonParser &kwargs, const Completer::EnumOption &enum_opt);
39 
40  private:
41 
43  void increment() override;
44 
45 
46  // -- Unique -------------------
47 
49 
50  // counts over strain grid
52  // counts over transformation matrices
55  //set of non-equivalent transformation matrices matrices that, along with m_counter define irreducible space
56  std::vector<Eigen::MatrixXd> m_trans_mats;
59 
61  return m_perm_begin;
62  }
64  return m_perm_end;
65  }
66 
67  };
68 
69 }
70 
71 #endif
Eigen::MatrixXd MatrixXd
PermuteIterator m_perm_begin
A Counter allows looping over many incrementing variables in one loop.
Definition: Counter.hh:71
PrimClex * primclex
Definition: settings.cc:101
Base class for implementing specialized input enumerators.
const PermuteIterator & _perm_begin()
Base class for generic use of enumerators that may be accessed through the API.
Definition: Enumerator.hh:418
Eigen::MatrixXd m_shape_factor
Main CASM namespace.
Definition: complete.cpp:8
Represents a supercell of the primitive parent crystal structure.
Definition: Supercell.hh:37
const PermuteIterator & _perm_end()
void increment() override
Implements increment over all strain states.
std::string name() const override
Derived enumerators must implement name, via ENUM_MEMBERS.
static int run(PrimClex &primclex, const jsonParser &kwargs, const Completer::EnumOption &enum_opt)
EigenIndex Index
For long integer indexing:
ConfigEnumStrain(Supercell &scel, const Configuration &_init, const std::vector< Index > &subspace_partitions, const std::vector< double > &magnitudes, std::string _mode)
PrimClex is the top-level data structure for a CASM project.
Definition: PrimClex.hh:52
PermuteIterator m_perm_end
static const std::string interface_help
static const std::string enumerator_name
std::vector< Eigen::MatrixXd > m_trans_mats
StrainConverter m_strain_calc
CASM::EnumInterfaceBase * make_ConfigEnumStrain_interface()
EigenCounter< Eigen::VectorXd > m_counter
A Configuration represents the values of all degrees of freedom in a Supercell.