CASM  1.1.0
A Clusters Approach to Statistical Mechanics
ScelEnum.hh
Go to the documentation of this file.
1 #ifndef CASM_ScelEnum
2 #define CASM_ScelEnum
3 
4 #include "casm/clex/Supercell.hh"
8 
17 namespace CASM {
18 
19 class ScelEnumByProps;
20 
22 template <>
23 bool is_guaranteed_for_database_insert(ScelEnumByProps const &enumerator);
24 
33 class ScelEnumByProps : public InputEnumeratorBase<Supercell> {
34  public:
36  ScelEnumByProps(std::shared_ptr<const Structure> const &shared_prim,
37  const xtal::ScelEnumProps &enum_props);
38 
39  ScelEnumByProps(const ScelEnumByProps &) = delete;
42 
43  std::string name() const override;
44 
45  static const std::string enumerator_name;
46 
47  private:
49  void increment() override;
50 
51  std::shared_ptr<Structure const> m_shared_prim;
53 
54  std::unique_ptr<xtal::SuperlatticeEnumerator> m_lattice_enum;
57 };
58 
59 } // namespace CASM
60 
63 #endif
std::shared_ptr< Structure const > shared_prim
Base class for implementing specialized input enumerators.
ScelEnumByProps(const ScelEnumByProps &)=delete
notstd::cloneable_ptr< Supercell > m_current
Definition: ScelEnum.hh:52
std::unique_ptr< xtal::SuperlatticeEnumerator > m_lattice_enum
Definition: ScelEnum.hh:54
xtal::SuperlatticeEnumerator::const_iterator m_lat_it
Definition: ScelEnum.hh:55
ScelEnumByProps(std::shared_ptr< const Structure > const &shared_prim, const xtal::ScelEnumProps &enum_props)
Construct with shared prim Structure and ScelEnumProps settings.
Definition: ScelEnum.cc:25
std::string name() const override
Derived enumerators must implement name, via ENUM_MEMBERS.
Definition: ScelEnum.cc:48
std::shared_ptr< Structure const > m_shared_prim
Definition: ScelEnum.hh:51
ScelEnumByProps & operator=(const ScelEnumByProps &)=delete
void increment() override
Implements increment over supercells.
Definition: ScelEnum.cc:55
static const std::string enumerator_name
Definition: ScelEnum.hh:45
xtal::SuperlatticeEnumerator::const_iterator m_lat_end
Definition: ScelEnum.hh:56
Data structure for holding supercell enumeration properties.
Iterators used with SuperlatticeEnumerator.
A 'cloneable_ptr' can be used in place of 'unique_ptr'.
bool is_guaranteed_for_database_insert(ConfigEnumAllOccupations const &enumerator)
Main CASM namespace.
Definition: APICommand.hh:8