CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
Enumerator

Detailed Description

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:

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< ScelEnumCASM::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 Documentation

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.

Function Documentation

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.

Parameters
methodEnumerator name, printed to screen
primclexPrimClex to add Configurations to
begin,endIterators over Supercell
fA function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator
filter_exprAn vector of Configuration filtering expressions. No filtering if empty.
primitive_onlyIf true, only insert primitive Configurations; else both primitive and non-primitive.
Returns
0 if success, ERR_INVALID_ARG if filter_expr cannot be parsed

Definition at line 100 of file Enumerator_impl.hh.

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.

Parameters
methodEnumerator name, printed to screen
primclexPrimClex to add Configurations to
begin,endIterators over lattice (need not be canonical), to be used for Supercell
fA function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator
filter_exprAn vector of Configuration filtering expressions. No filtering if empty.
primitive_onlyIf true, only insert primitive Configurations; else both primitive and non-primitive.
Returns
0 if success, ERR_INVALID_ARG if filter_expr cannot be parsed

Definition at line 182 of file Enumerator_impl.hh.

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.

Parameters
methodEnumerator name, printed to screen
primclexPrimClex to add Configurations to
begin,endIterators over canonical Supercell
fA function that signature std::unique_ptr<EnumMethod> f(Supercell&) that returns a std::unique_ptr owning a Configuration enumerator
filter_exprAn vector of Configuration filtering expressions. No filtering if empty.
Returns
0 if success, ERR_INVALID_ARG if filter_expr cannot be parsed

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.

EnumeratorMap CASM::make_enumerator_map ( )
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.