CASM
AClustersApproachtoStatisticalMechanics
|
Algorithms for enumerating objects such as Lattice, Supercell, Configuration.
Enumerators are classes that implement methods to enumerate Supercells, Configurations, and other objects by providing iterators over a range of enumerated objects. The objects are not usually stored in the enumerators but constructed as iterators are modified or dereferenced. New enumerators can be created by inheriting from:
Some example enumerators are:
Enumerators are required to "know" their own name by implementing a traits class with 'name' as a const std::string member. For enumerators meant to be accessible via the 'casm enum' API, the traits class must also have a 'help' const std::string member explaining the enumerator and the input parameters, and a 'CASM::EnumInterface<EnumMethod>::run' method which implements collecting input parameters from the CLI, executing the enumerator and saving the resulting objects. Some helper functions exist to make parsing input and saving results easier:
For Enumerators only meant to be used internally the required members are:
Variables:
Functions:
For Enumerators to be added to the API the required members are:
Variables:
Functions:
To enable use as a plugin:
.casm/enumerators
directory in a file named EnumMethodName.cc
, where EnumMethod
is the name of the enumerator class. Modules | |
Configuration Enumerators | |
Enumerates Configuration. | |
Supercell Enumerators | |
Enumerates Supercell. | |
Lattice Enumerators | |
Enumerates Lattice. | |
EnumEquivalents | |
Enumerate equivalent objects. | |
Classes | |
class | CASM::ValEnumerator< ValueType, IsConst > |
class | CASM::EnumeratorBase |
Abstract base class for enumerators. More... | |
class | CASM::EnumIteratorBase |
class | CASM::ValEnumIterator< ValueType, IsConst > |
class | CASM::EnumInterfaceBase |
Base class for generic use of enumerators that may be accessed through the API. More... | |
class | CASM::EnumInterface< Derived > |
Template class to be specialized for each enumerator that may be accessed via the API. More... | |
Typedefs | |
typedef notstd::unique_cloneable_map < std::string, EnumInterfaceBase > | CASM::EnumeratorMap |
Used to hold a list of all enumerators that may be accessed via the API. More... | |
Functions | |
EnumeratorMap | CASM::make_enumerator_map () |
Use to construct an EnumeratorMap. More... | |
jsonParser | CASM::make_enumerator_scel_enum_input (const jsonParser &_kwargs, const Completer::EnumOption &enum_opt) |
Standardizes parsing casm enum input options to make ScelEnum JSON input. More... | |
ScelEnumProps | CASM::make_enumerator_scel_enum_props (PrimClex &primclex, const jsonParser &_kwargs, const Completer::EnumOption &enum_opt) |
Standardizes parsing casm enum input options to make an ScelEnumProps. More... | |
std::unique_ptr < SupercellEnumerator< Lattice > > | CASM::make_enumerator_superlat_enum (PrimClex &primclex, const jsonParser &_kwargs, const Completer::EnumOption &enum_opt) |
Standardizes parsing casm enum input options to make an SupercellEnumerator<Lattice> More... | |
std::unique_ptr< ScelEnum > | CASM::make_enumerator_scel_enum (PrimClex &primclex, const jsonParser &_kwargs, const Completer::EnumOption &enum_opt) |
Standardizes parsing casm enum input options to make an ScelEnum. More... | |
std::vector< std::string > | CASM::make_enumerator_filter_expr (const jsonParser &_kwargs, const Completer::EnumOption &enum_opt) |
Standardizes parsing casm enum filter expressions. More... | |
template<typename ScelIterator , typename ConfigEnumConstructor > | |
int | CASM::insert_unique_canon_configs (std::string method, PrimClex &primclex, ScelIterator begin, ScelIterator end, ConfigEnumConstructor f, std::vector< std::string > filter_expr) |
Standardizes insertion from enumerators that construct unique primitive canonical configurations. More... | |
template<typename ScelIterator , typename ConfigEnumConstructor > | |
int | CASM::insert_configs (std::string method, PrimClex &primclex, ScelIterator begin, ScelIterator end, ConfigEnumConstructor f, std::vector< std::string > filter_expr, bool primitive_only) |
Standardizes insertion from enumerators that construct configurations. More... | |
template<typename LatticeIterator , typename ConfigEnumConstructor > | |
int | CASM::insert_configs_via_lattice_enum (std::string method, PrimClex &primclex, LatticeIterator begin, LatticeIterator end, ConfigEnumConstructor f, std::vector< std::string > filter_expr, bool primitive_only) |
Standardizes insertion from enumerators that construct configurations. More... | |
typedef notstd::unique_cloneable_map<std::string, EnumInterfaceBase> CASM::EnumeratorMap |
Used to hold a list of all enumerators that may be accessed via the API.
Definition at line 444 of file Enumerator.hh.
int CASM::insert_configs | ( | std::string | method, |
PrimClex & | primclex, | ||
ScelIterator | begin, | ||
ScelIterator | end, | ||
ConfigEnumConstructor | f, | ||
std::vector< std::string > | filter_expr, | ||
bool | primitive_only | ||
) |
Standardizes insertion from enumerators that construct configurations.
method | Enumerator name, printed to screen |
primclex | PrimClex to add Configurations to |
begin,end | Iterators over Supercell |
f | A function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator |
filter_expr | An vector of Configuration filtering expressions. No filtering if empty. |
primitive_only | If true, only insert primitive Configurations; else both primitive and non-primitive. |
Definition at line 100 of file Enumerator_impl.hh.
int CASM::insert_configs_via_lattice_enum | ( | std::string | method, |
PrimClex & | primclex, | ||
LatticeIterator | begin, | ||
LatticeIterator | end, | ||
ConfigEnumConstructor | f, | ||
std::vector< std::string > | filter_expr, | ||
bool | primitive_only | ||
) |
Standardizes insertion from enumerators that construct configurations.
method | Enumerator name, printed to screen |
primclex | PrimClex to add Configurations to |
begin,end | Iterators over lattice (need not be canonical), to be used for Supercell |
f | A function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator |
filter_expr | An vector of Configuration filtering expressions. No filtering if empty. |
primitive_only | If true, only insert primitive Configurations; else both primitive and non-primitive. |
Definition at line 182 of file Enumerator_impl.hh.
int CASM::insert_unique_canon_configs | ( | std::string | method, |
PrimClex & | primclex, | ||
ScelIterator | begin, | ||
ScelIterator | end, | ||
ConfigEnumConstructor | f, | ||
std::vector< std::string > | filter_expr | ||
) |
Standardizes insertion from enumerators that construct unique primitive canonical configurations.
method | Enumerator name, printed to screen |
primclex | PrimClex to add Configurations to |
begin,end | Iterators over canonical Supercell |
f | A function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator |
filter_expr | An vector of Configuration filtering expressions. No filtering if empty. |
Definition at line 24 of file Enumerator_impl.hh.
std::vector< std::string > CASM::make_enumerator_filter_expr | ( | const jsonParser & | _kwargs, |
const Completer::EnumOption & | enum_opt | ||
) |
Standardizes parsing casm enum filter expressions.
See ConfigEnumAllOccupations for example documentation
Definition at line 91 of file Enumerator.cc.
|
inline |
Use to construct an EnumeratorMap.
Definition at line 447 of file Enumerator.hh.
std::unique_ptr< ScelEnum > CASM::make_enumerator_scel_enum | ( | PrimClex & | primclex, |
const jsonParser & | _kwargs, | ||
const Completer::EnumOption & | enum_opt | ||
) |
Standardizes parsing casm enum input options to make an ScelEnum.
See ConfigEnumAllOccupations for example documentation
Definition at line 78 of file Enumerator.cc.
jsonParser CASM::make_enumerator_scel_enum_input | ( | const jsonParser & | _kwargs, |
const Completer::EnumOption & | enum_opt | ||
) |
Standardizes parsing casm enum input options to make ScelEnum JSON input.
Definition at line 8 of file Enumerator.cc.
ScelEnumProps CASM::make_enumerator_scel_enum_props | ( | PrimClex & | primclex, |
const jsonParser & | _kwargs, | ||
const Completer::EnumOption & | enum_opt | ||
) |
Standardizes parsing casm enum input options to make an ScelEnumProps.
Definition at line 44 of file Enumerator.cc.
std::unique_ptr< SupercellEnumerator< Lattice > > CASM::make_enumerator_superlat_enum | ( | PrimClex & | primclex, |
const jsonParser & | _kwargs, | ||
const Completer::EnumOption & | enum_opt | ||
) |
Standardizes parsing casm enum input options to make an SupercellEnumerator<Lattice>
See SuperConfigEnum for example documentation
Definition at line 57 of file Enumerator.cc.