CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::SuperConfigEnum Class Reference

#include <SuperConfigEnum.hh>

+ Inheritance diagram for CASM::SuperConfigEnum:

Detailed Description

Given a selection of Configurations, enumerate all tilings into some supercell.

  • 'sub_config' is used to refer to the input 'building block' Configuration
    • sub_config must all have the same Supercell
  • 'target_scel' is used to refer to the Supercell that is being tiled by sub_config
  • enumerates all Configurations, including non-primitive and non-canonical

Notes:

  • Make use of is_valid_sub_configuration and make_all_super_configurations when preparing valid constructor inputs.

Definition at line 29 of file SuperConfigEnum.hh.

Public Types

typedef InputEnumIterator< Configuration, true > iterator
 
typedef ValueType value_type
 
typedef CASM_TMP::ConstSwitch< IsConst, ValueType > & reference
 
typedef long step_type
 

Public Member Functions

template<typename ConfigIterator >
 SuperConfigEnum (Supercell const &_target_scel, ConfigIterator sub_config_begin, ConfigIterator sub_config_end)
 Constructor, using all Supercell permutations. More...
 
std::string name () const override
 Derived enumerators must implement name, via ENUM_MEMBERS. More...
 
std::vector< Configuration > const & sub_config () const
 Access the sub-configurations. More...
 
Array< int > const & counter () const
 Access the current value of the counter. More...
 
iterator begin ()
 
iterator end ()
 
reference current () const
 Access the current ObjectType by reference. More...
 
virtual std::string name () const=0
 Derived enumerators must implement name, via ENUM_MEMBERS. More...
 
virtual jsonParser source (step_type step) const
 
virtual jsonParser source (step_type step) const
 
step_type step () const
 Increments with each enumerated object. More...
 
step_type step () const
 Increments with each enumerated object. More...
 
bool valid () const
 Returns false if enumeration is complete. More...
 
bool valid () const
 Returns false if enumeration is complete. More...
 

Static Public Attributes

static const std::string enumerator_name = "SuperConfigEnum"
 

Protected Member Functions

void _initialize (CASM_TMP::ConstSwitch< IsConst, value_type > *_initial)
 
void _initialize ()
 
void _set_current_ptr (CASM_TMP::ConstSwitch< IsConst, value_type > *_new)
 Change the pointer. More...
 
void _decrement_step ()
 Decrement current step value. More...
 
void _increment_step ()
 Increment current step value. More...
 
void _invalidate ()
 Call if enumeration complete. More...
 
void _set_step (step_type val)
 Set current step value. More...
 
void _set_step (step_type val)
 Set current step value. More...
 
void _validate ()
 Used if random access enumerator step is moved into valid range. More...
 

Private Member Functions

void increment () override
 Implement increment. More...
 
void _init ()
 Used by constructor. More...
 
bool _check_current () const
 Returns true if current() satisifies requested conditions. More...
 
Supercell const & _target_supercell ()
 Access the super-config supercell. More...
 
Supercell const & _sub_supercell () const
 Access the sub-config supercell. More...
 
std::vector< Configuration > & _sub_config ()
 Access the sub-configurations. More...
 
xtal::UnitCellIndexConverter_unitcell_index_converter ()
 Access the UnitCellIndexConverter. More...
 
void _fill (Array< int > const &counter_val, Configuration &config)
 

Private Attributes

Supercell const & m_target_scel
 The supercell being filled. More...
 
std::vector< Configurationm_sub_config
 A vector containing each possible sub_config. More...
 
Supercell const * m_sub_scel
 
notstd::cloneable_ptr< Configurationm_current
 The 'current' Configuration. More...
 
Counter< Array< int > > m_counter
 
notstd::cloneable_ptr< xtal::UnitCellIndexConverterm_unitcell_index_converter
 
std::vector< std::vector< Index > > m_index_map
 m_current->occ(m_index_map[i][j]) = m_sub_scel[i].occ(j) More...
 
friend InputEnumIteratorBase< ValueType, IsConst >
 
CASM_TMP::ConstSwitch< IsConst, value_type > * m_current_ptr
 
bool m_valid
 
step_type m_step
 

Member Typedef Documentation

◆ iterator

Definition at line 204 of file InputEnumerator.hh.

◆ reference

template<typename ValueType , bool IsConst = true>
typedef CASM_TMP::ConstSwitch<IsConst, ValueType>& CASM::ValEnumerator< ValueType, IsConst >::reference
inherited

Definition at line 174 of file Enumerator.hh.

◆ step_type

template<typename ValueType , bool IsConst = true>
typedef long CASM::EnumeratorBase::step_type
inherited

Definition at line 107 of file Enumerator.hh.

◆ value_type

template<typename ValueType , bool IsConst = true>
typedef ValueType CASM::ValEnumerator< ValueType, IsConst >::value_type
inherited

Definition at line 173 of file Enumerator.hh.

Constructor & Destructor Documentation

◆ SuperConfigEnum()

template<typename ConfigIterator >
CASM::SuperConfigEnum::SuperConfigEnum ( Supercell const &  _target_scel,
ConfigIterator  sub_config_begin,
ConfigIterator  sub_config_end 
)

Constructor, using all Supercell permutations.

Constructor

Definition at line 114 of file SuperConfigEnum.hh.

Member Function Documentation

◆ _check_current()

bool CASM::SuperConfigEnum::_check_current ( ) const
private

Returns true if current() satisifies requested conditions.

Returns true if current() satisfies requested conditions.

Definition at line 102 of file SuperConfigEnum.cc.

◆ _decrement_step()

template<typename ValueType , bool IsConst = true>
void CASM::EnumeratorBase::_decrement_step
inlineprotectedinherited

Decrement current step value.

Definition at line 156 of file Enumerator.hh.

◆ _fill()

void CASM::SuperConfigEnum::_fill ( Array< int > const &  counter_val,
Configuration super_config 
)
private

Fill DoF from sub_config into a Configuration

Parameters
summaryThe index of the sub_config on each lattice site

Fill DoF from sub_config into a super configuration

Parameters
counter_valThe index of the sub_config on each lattice point
super_configThe super configuration to set the DoF values

Definition at line 109 of file SuperConfigEnum.cc.

◆ _increment_step()

template<typename ValueType , bool IsConst = true>
void CASM::EnumeratorBase::_increment_step
inlineprotectedinherited

Increment current step value.

Definition at line 153 of file Enumerator.hh.

◆ _init()

void CASM::SuperConfigEnum::_init ( )
private

Used by constructor.

Definition at line 21 of file SuperConfigEnum.cc.

◆ _initialize() [1/2]

template<typename ValueType , bool IsConst = true>
void CASM::EnumeratorBase::_initialize
inlineprotectedinherited

Initialize

  • Sets step to 0
  • Sets valid to true

Definition at line 144 of file Enumerator.hh.

◆ _initialize() [2/2]

template<typename ValueType , bool IsConst = true>
void CASM::ValEnumerator< ValueType, IsConst >::_initialize ( CASM_TMP::ConstSwitch< IsConst, value_type > *  _initial)
inlineprotectedinherited

Initialize

  • Sets current to point at _initial
  • Sets step to 0
  • Sets valid to true

Definition at line 197 of file Enumerator.hh.

◆ _invalidate()

template<typename ValueType , bool IsConst = true>
void CASM::EnumeratorBase::_invalidate
inlineprotectedinherited

Call if enumeration complete.

Definition at line 159 of file Enumerator.hh.

◆ _set_current_ptr()

template<typename ValueType , bool IsConst = true>
void CASM::ValEnumerator< ValueType, IsConst >::_set_current_ptr ( CASM_TMP::ConstSwitch< IsConst, value_type > *  _new)
inlineprotectedinherited

Change the pointer.

Definition at line 215 of file Enumerator.hh.

◆ _set_step() [1/2]

void CASM::EnumeratorBase::_set_step ( step_type  val)
inlineprotectedinherited

Set current step value.

Definition at line 150 of file Enumerator.hh.

◆ _set_step() [2/2]

template<typename ValueType , bool IsConst = true>
void CASM::EnumeratorBase::_set_step
inlineprotectedinherited

Set current step value.

Definition at line 150 of file Enumerator.hh.

◆ _sub_config()

std::vector<Configuration>& CASM::SuperConfigEnum::_sub_config ( )
inlineprivate

Access the sub-configurations.

Definition at line 76 of file SuperConfigEnum.hh.

◆ _sub_supercell()

Supercell const& CASM::SuperConfigEnum::_sub_supercell ( ) const
inlineprivate

Access the sub-config supercell.

Definition at line 73 of file SuperConfigEnum.hh.

◆ _target_supercell()

Supercell const& CASM::SuperConfigEnum::_target_supercell ( )
inlineprivate

Access the super-config supercell.

Definition at line 70 of file SuperConfigEnum.hh.

◆ _unitcell_index_converter()

xtal::UnitCellIndexConverter& CASM::SuperConfigEnum::_unitcell_index_converter ( )
inlineprivate

Access the UnitCellIndexConverter.

Definition at line 79 of file SuperConfigEnum.hh.

◆ _validate()

void CASM::EnumeratorBase::_validate ( )
inlineprotectedinherited

Used if random access enumerator step is moved into valid range.

Definition at line 162 of file Enumerator.hh.

◆ begin()

iterator CASM::InputEnumeratorBase< Configuration , true >::begin ( )
inlineinherited

Definition at line 216 of file InputEnumerator.hh.

◆ counter()

Array<int> const& CASM::SuperConfigEnum::counter ( ) const
inline

Access the current value of the counter.

  • The counter indicates how the sub-configurations tile into the super-configuration
  • sub_config()[counter()[i]] is tiled into the i-th lattice point location

Definition at line 53 of file SuperConfigEnum.hh.

◆ current()

template<typename ValueType , bool IsConst = true>
reference CASM::ValEnumerator< ValueType, IsConst >::current ( ) const
inlineinherited

Access the current ObjectType by reference.

Definition at line 211 of file Enumerator.hh.

◆ end()

iterator CASM::InputEnumeratorBase< Configuration , true >::end ( )
inlineinherited

Definition at line 220 of file InputEnumerator.hh.

◆ increment()

void CASM::SuperConfigEnum::increment ( )
overrideprivatevirtual

Implement increment.

Implements CASM::InputEnumeratorBase< Configuration >.

Definition at line 86 of file SuperConfigEnum.cc.

◆ name() [1/2]

std::string CASM::SuperConfigEnum::name ( ) const
overridevirtual

Derived enumerators must implement name, via ENUM_MEMBERS.

Implements CASM::EnumeratorBase.

Definition at line 17 of file SuperConfigEnum.cc.

◆ name() [2/2]

template<typename ValueType , bool IsConst = true>
virtual std::string CASM::EnumeratorBase::name
inherited

Derived enumerators must implement name, via ENUM_MEMBERS.

◆ source() [1/2]

virtual jsonParser CASM::EnumeratorBase::source ( step_type  step) const
inlinevirtualinherited

Default Object source just uses step#

Returns:

{
"enumerated_by": "<enumerator_type>",
"step": <step #>
}
step_type step() const
Increments with each enumerated object.
Definition: Enumerator.hh:115

Definition at line 129 of file Enumerator.hh.

◆ source() [2/2]

template<typename ValueType , bool IsConst = true>
virtual jsonParser CASM::EnumeratorBase::source
inlineinherited

Default Object source just uses step#

Returns:

{
"enumerated_by": "<enumerator_type>",
"step": <step #>
}

Definition at line 129 of file Enumerator.hh.

◆ step() [1/2]

step_type CASM::EnumeratorBase::step ( ) const
inlineinherited

Increments with each enumerated object.

Definition at line 115 of file Enumerator.hh.

◆ step() [2/2]

template<typename ValueType , bool IsConst = true>
step_type CASM::EnumeratorBase::step
inlineinherited

Increments with each enumerated object.

Definition at line 115 of file Enumerator.hh.

◆ sub_config()

std::vector<Configuration> const& CASM::SuperConfigEnum::sub_config ( ) const
inline

Access the sub-configurations.

Definition at line 46 of file SuperConfigEnum.hh.

◆ valid() [1/2]

bool CASM::EnumeratorBase::valid ( ) const
inlineinherited

Returns false if enumeration is complete.

Definition at line 118 of file Enumerator.hh.

◆ valid() [2/2]

template<typename ValueType , bool IsConst = true>
bool CASM::EnumeratorBase::valid
inlineinherited

Returns false if enumeration is complete.

Definition at line 118 of file Enumerator.hh.

Member Data Documentation

◆ enumerator_name

const std::string CASM::SuperConfigEnum::enumerator_name = "SuperConfigEnum"
static

Definition at line 41 of file SuperConfigEnum.hh.

◆ InputEnumIteratorBase< ValueType, IsConst >

friend CASM::InputEnumeratorBase< Configuration , true >::InputEnumIteratorBase< Configuration , true >
privateinherited

Definition at line 198 of file InputEnumerator.hh.

◆ m_counter

Counter<Array<int> > CASM::SuperConfigEnum::m_counter
private

Definition at line 100 of file SuperConfigEnum.hh.

◆ m_current

notstd::cloneable_ptr<Configuration> CASM::SuperConfigEnum::m_current
private

The 'current' Configuration.

Definition at line 98 of file SuperConfigEnum.hh.

◆ m_current_ptr

template<typename ValueType , bool IsConst = true>
CASM_TMP::ConstSwitch<IsConst, value_type>* CASM::ValEnumerator< ValueType, IsConst >::m_current_ptr
privateinherited

Definition at line 220 of file Enumerator.hh.

◆ m_index_map

std::vector<std::vector<Index> > CASM::SuperConfigEnum::m_index_map
private

m_current->occ(m_index_map[i][j]) = m_sub_scel[i].occ(j)

Definition at line 108 of file SuperConfigEnum.hh.

◆ m_step

step_type CASM::EnumeratorBase::m_step
privateinherited

Definition at line 167 of file Enumerator.hh.

◆ m_sub_config

std::vector<Configuration> CASM::SuperConfigEnum::m_sub_config
private

A vector containing each possible sub_config.

Definition at line 92 of file SuperConfigEnum.hh.

◆ m_sub_scel

Supercell const* CASM::SuperConfigEnum::m_sub_scel
private

Definition at line 95 of file SuperConfigEnum.hh.

◆ m_target_scel

Supercell const& CASM::SuperConfigEnum::m_target_scel
private

The supercell being filled.

Definition at line 89 of file SuperConfigEnum.hh.

◆ m_unitcell_index_converter

notstd::cloneable_ptr<xtal::UnitCellIndexConverter> CASM::SuperConfigEnum::m_unitcell_index_converter
private

An ordered set of lattice points (UnitCell) that tile the sub_scel into the ref_scel

Definition at line 105 of file SuperConfigEnum.hh.

◆ m_valid

bool CASM::EnumeratorBase::m_valid
privateinherited

Definition at line 165 of file Enumerator.hh.


The documentation for this class was generated from the following files: