CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <ChemicalReference.hh>
Definition at line 39 of file ChemicalReference.hh.
Public Types | |
typedef std::vector< ChemicalReferenceState > | RefStateVec |
typedef std::map< std::string, RefStateVec > | RefStateMap |
typedef Index | size_type |
typedef std::map< std::string, Eigen::VectorXd > | SpecializedRef |
typedef std::function< Eigen::VectorXd(const Configuration &)> | InputFunction |
typedef DataObject | DataObject |
typedef long | difference_type |
typedef DataFormatterDictionary< DataObject, BaseDatumFormatter< DataObject > > | DictType |
Public Member Functions | |
ChemicalReference (const BasicStructure &prim, const Eigen::VectorXd &_global_ref, SpecializedRef _supercell_ref=SpecializedRef(), SpecializedRef _config_ref=SpecializedRef()) | |
Constructor. More... | |
template<typename RefStateIterator > | |
ChemicalReference (const BasicStructure &prim, RefStateIterator begin, RefStateIterator end, double tol) | |
Construct global reference via range ChemicalReferenceState. More... | |
std::unique_ptr< ChemicalReference > | clone () const |
Clone. More... | |
const BasicStructure & | prim () const |
Get primitive BasicStructure. More... | |
const Eigen::VectorXd & | global () const |
const Access the global reference More... | |
void | set_global (const Eigen::VectorXd &ref) |
Set global hyperplane reference. More... | |
template<typename RefStateIterator > | |
void | set_global (RefStateIterator begin, RefStateIterator end, double tol) |
Set global hyperplane reference. More... | |
const RefStateVec & | global_ref_states () const |
const Access a map of configname to RefStateVec for Supercell specialized references More... | |
const std::map< std::string, Eigen::VectorXd > & | supercell () const |
const Access a map of scelname to reference for Supercell specialized references More... | |
void | set_supercell (const std::string &scelname, const Eigen::VectorXd &ref) |
Set hyperplane reference specialized for a Supercell. More... | |
template<typename RefStateIterator > | |
void | set_supercell (const std::string &scelname, RefStateIterator begin, RefStateIterator end, double tol) |
Set hyperplane reference specialized for a Supercell. More... | |
size_type | erase_supercell (const std::string &scelname) |
Erase hyperplane reference specialized for a Supercell. More... | |
const RefStateMap & | supercell_ref_states () const |
const Access a map of configname to RefStateVec for Supercell specialized references More... | |
const std::map< std::string, Eigen::VectorXd > & | config () const |
const Access a map of configname to reference for Configuration specialized references More... | |
void | set_config (const std::string &configname, const Eigen::VectorXd &ref) |
Set hyperplane reference specialized for a Configuration. More... | |
template<typename RefStateIterator > | |
void | set_config (const std::string &configname, RefStateIterator begin, RefStateIterator end, double tol) |
Set hyperplane reference specialized for a Configuration. More... | |
size_type | erase_config (const std::string &configname) |
Erase hyperplane reference specialized for a Configuration. More... | |
const RefStateMap & | config_ref_states () const |
const Access a map of configname to RefStateVec for Configuration specialized references More... | |
std::function< Eigen::VectorXd(const Configuration &)> | input () const |
Return the 'input' function that maps a Configuration to coordinates. More... | |
Eigen::VectorXd | input (const Configuration &config) const |
Return the 'input' coordinates that a Configuration is mapped to. More... | |
Eigen::VectorXd | hyperplane (const Configuration &config) const |
Return the reference hyperplane used for a particular configuration. More... | |
double | evaluate (const Configuration &config) const override |
Return the reference for a particular configuration. More... | |
virtual ValueType | evaluate (const DataObject &obj) const =0 |
virtual ValueType | operator() (const DataObject &obj) const |
Return requested data from obj, throwing std::runtime_error if not valid. More... | |
virtual void | inject (const DataObject &_data_obj, DataStream &_stream, Index pass_index=0) const override |
Default implementation injects each element, via operator<<. More... | |
virtual void | print (const DataObject &_data_obj, std::ostream &_stream, Index pass_index=0) const override |
Default implementation prints each element in a column, via operator<<. More... | |
virtual jsonParser & | to_json (const DataObject &_data_obj, jsonParser &json) const override |
Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&) More... | |
const std::string & | name () const |
Returns a name for the formatter, which becomes the tag used for parsing. More... | |
const std::string & | description () const |
Returns a short description of the formatter and its allowed arguments (if any). This description is used to automatically generate help screens. More... | |
virtual DatumFormatterClass | type () const |
const DictType & | home () const |
const Access the dictionary containing this formatter, set during DictType::lookup More... | |
void | set_home (const DictType &home) const |
Set the dictionary containing this formatter, set during DictType::lookup. More... | |
virtual bool | init (const DataObject &_template_obj) const |
Perform all initialization steps using _template_obj. Returns true if initialization is successful and false if _template_obj has insufficient data to complete initialization. More... | |
virtual bool | validate (const DataObject &_data_obj) const |
Returns true if _data_obj has valid values for requested data. More... | |
virtual std::vector< std::string > | col_header (const DataObject &_template_obj) const |
Returns a header string for each scalar produced by the formatter parsing the entries in the col_header should reproduce the exact query described by the formatter. Ex: "clex(formation_energy)" or "comp(a)", "comp(c)". More... | |
virtual std::string | long_header (const DataObject &_template_obj) const |
Returns a long expression for each scalar produced by the formatter parsing the long_header should reproduce the exact query described by the formatter Ex: "clex(formation_energy)" or "comp(a) comp(c)". More... | |
virtual std::string | short_header (const DataObject &_template_obj) const |
Returns a short expression for the formatter parsing the short_header should allow the formatter to be recreated (but the short header does not specify a subset of the elements) Ex: "clex(formation_energy)" or "comp". More... | |
virtual Index | num_passes (const DataObject &_data_obj) const |
virtual bool | parse_args (const std::string &args) |
Static Public Member Functions | |
template<typename RefStateIterator > | |
static Eigen::VectorXd | hyperplane (const BasicStructure &prim, RefStateIterator begin, RefStateIterator end, double tol) |
Convert a set of ChemicalReferenceState to a hyperplane, including checks. More... | |
Static Public Attributes | |
static const std::string | Name = "chem_ref" |
static const std::string | Desc |
Protected Types | |
typedef multivector< Index >::X< 2 > | IndexContainer |
Protected Member Functions | |
Eigen::VectorXd & | global () |
Access the global reference. More... | |
std::map< std::string, Eigen::VectorXd > & | supercell () |
Access a map of scelname to reference for Supercell specialized references. More... | |
std::map< std::string, Eigen::VectorXd > & | config () |
Access a map of configname to reference for Configuration specialized references. More... | |
void | _parse_index_expression (const std::string &_expr) |
void | _add_rule (const std::vector< Index > &new_rule) const |
const IndexContainer & | _index_rules () const |
Private Member Functions | |
Eigen::VectorXd & | _global () |
Access the global reference. More... | |
std::map< std::string, Eigen::VectorXd > & | _supercell () |
const Access a map of scelname to reference for Supercell specialized references More... | |
std::map< std::string, Eigen::VectorXd > & | _config () |
const Access a map of configname to reference for Configuration specialized references More... | |
ChemicalReference * | _clone () const |
Clone. More... | |
Static Private Member Functions | |
static Eigen::VectorXd | _calc_hyperplane (const BasicStructure &prim, const std::vector< std::string > &struc_mol_name, Eigen::MatrixXd N, Eigen::VectorXd E, double tol) |
Convert a set of ChemicalReferenceState to a hyperplane, including checks. More... | |
Private Attributes | |
const BasicStructure * | m_prim |
RefStateVec | m_global_ref_vec |
RefStateMap | m_supercell_ref_map |
RefStateMap | m_config_ref_map |
InputFunction | m_input |
std::map< std::string, Eigen::VectorXd > | m_config_ref |
std::map< std::string, Eigen::VectorXd > | m_supercell_ref |
Eigen::VectorXd | m_global_ref |
std::string | m_name |
std::string | m_description |
IndexContainer | m_index_rules |
const DictType * | m_home |
|
inherited |
Definition at line 334 of file DataFormatter.hh.
|
inherited |
Definition at line 337 of file DataFormatter.hh.
|
inherited |
Definition at line 335 of file DataFormatter.hh.
|
protectedinherited |
Definition at line 459 of file DataFormatter.hh.
|
inherited |
Definition at line 71 of file Reference.hh.
typedef std::map<std::string, RefStateVec> CASM::ChemicalReference::RefStateMap |
Definition at line 42 of file ChemicalReference.hh.
typedef std::vector<ChemicalReferenceState> CASM::ChemicalReference::RefStateVec |
Definition at line 41 of file ChemicalReference.hh.
Definition at line 43 of file ChemicalReference.hh.
|
inherited |
Definition at line 70 of file Reference.hh.
|
explicit |
Constructor.
_global_ref | An Eigen::VectorXd giving the intercepts of the hyperplane used for the global reference |
_supercell_ref | A map of scelname to Eigen::VectorXd specializing the the reference value by Supercell |
_config_ref | A map of configname to Eigen::VectorXd specializing the the reference value by Configuration |
A hyperplane reference, R, maps vector species_frac, x, to output energy_per_species, y:
The global reference, '_global_ref', is required, but may be specialized to give a different R for a particular Supercell or Configuration via optional '_supercell_ref' and '_config_ref'.
Definition at line 145 of file ChemicalReference.cc.
|
explicit |
Construct global reference via range ChemicalReferenceState.
Definition at line 14 of file ChemicalReference_impl.hh.
|
inlineprotectedinherited |
Definition at line 472 of file DataFormatter.hh.
|
staticprivate |
Convert a set of ChemicalReferenceState to a hyperplane, including checks.
Definition at line 290 of file ChemicalReference.cc.
|
privatevirtual |
Clone.
Reimplemented from CASM::HyperPlaneReferenceBase.
Definition at line 284 of file ChemicalReference.cc.
|
private |
const Access a map of configname to reference for Configuration specialized references
Definition at line 277 of file ChemicalReference.cc.
|
private |
Access the global reference.
Definition at line 263 of file ChemicalReference.cc.
|
inlineprotectedinherited |
Definition at line 476 of file DataFormatter.hh.
|
protectedinherited |
Derived DatumFormatters have some optional functionality for parsing index expressions in order to make it easy to handle ranges such as:
in which case, DerivedDatumFormatter::parse_args() is called with the string "3,4:8" by dispatching that string to BaseDatumFormatter::_parse_index_expression(), m_index_rules will be populated with {{3,4},{3,5},{3,6},{3,7},{3,8}}
Definition at line 470 of file DataFormatter_impl.hh.
|
private |
const Access a map of scelname to reference for Supercell specialized references
Definition at line 270 of file ChemicalReference.cc.
std::unique_ptr< ChemicalReference > CASM::ChemicalReference::clone | ( | ) | const |
Clone.
Definition at line 154 of file ChemicalReference.cc.
|
inlinevirtualinherited |
Returns a header string for each scalar produced by the formatter parsing the entries in the col_header should reproduce the exact query described by the formatter. Ex: "clex(formation_energy)" or "comp(a)", "comp(c)".
Reimplemented in CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.
Definition at line 389 of file DataFormatter.hh.
|
inlineprotectedinherited |
Access a map of configname to reference for Configuration specialized references.
Definition at line 172 of file Reference.hh.
const std::map< std::string, Eigen::VectorXd > & CASM::ChemicalReference::config | ( | ) | const |
const Access a map of configname to reference for Configuration specialized references
Definition at line 229 of file ChemicalReference.cc.
const ChemicalReference::RefStateMap & CASM::ChemicalReference::config_ref_states | ( | ) | const |
const Access a map of configname to RefStateVec for Configuration specialized references
Definition at line 256 of file ChemicalReference.cc.
|
inlineinherited |
Returns a short description of the formatter and its allowed arguments (if any). This description is used to automatically generate help screens.
Definition at line 352 of file DataFormatter.hh.
ChemicalReference::size_type CASM::ChemicalReference::erase_config | ( | const std::string & | configname | ) |
Erase hyperplane reference specialized for a Configuration.
Definition at line 244 of file ChemicalReference.cc.
ChemicalReference::size_type CASM::ChemicalReference::erase_supercell | ( | const std::string & | scelname | ) |
Erase hyperplane reference specialized for a Supercell.
Definition at line 207 of file ChemicalReference.cc.
|
inlineoverrideinherited |
Return the reference for a particular configuration.
Definition at line 153 of file Reference.hh.
|
pure virtualinherited |
|
inlineprotectedinherited |
Access the global reference.
Definition at line 160 of file Reference.hh.
const Eigen::VectorXd & CASM::ChemicalReference::global | ( | ) | const |
const Access the global reference
Definition at line 165 of file ChemicalReference.cc.
const ChemicalReference::RefStateVec & CASM::ChemicalReference::global_ref_states | ( | ) | const |
const Access a map of configname to RefStateVec for Supercell specialized references
Definition at line 182 of file ChemicalReference.cc.
|
inlineinherited |
const Access the dictionary containing this formatter, set during DictType::lookup
Definition at line 360 of file DataFormatter.hh.
|
static |
Convert a set of ChemicalReferenceState to a hyperplane, including checks.
prim | The Structure defining the composition space the reference should span |
begin,end | Iterators over a range of ChemicalReferenceState |
tol | Tolerance for checking that input spans the prim composition space and a solution for the hyperplane is found |
Definition at line 81 of file ChemicalReference_impl.hh.
|
inherited |
Return the reference hyperplane used for a particular configuration.
Returns the Configuration specific hyperplane if it exists, else the Supercell specific hyperplane if it exists, else the global hyperplane.
Definition at line 20 of file Reference.cc.
|
inlinevirtualinherited |
Perform all initialization steps using _template_obj. Returns true if initialization is successful and false if _template_obj has insufficient data to complete initialization.
Reimplemented in CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.
Definition at line 376 of file DataFormatter.hh.
|
inlineoverridevirtualinherited |
Default implementation injects each element, via operator<<.
Implements CASM::BaseDatumFormatter< DataObject >.
Reimplemented in CASM::Base2DDatumFormatter< Container, DataObject >, and CASM::Base1DDatumFormatter< Container, DataObject >.
Definition at line 821 of file DataFormatterTools.hh.
|
inlineinherited |
Return the 'input' function that maps a Configuration to coordinates.
Definition at line 132 of file Reference.hh.
|
inlineinherited |
Return the 'input' coordinates that a Configuration is mapped to.
Definition at line 137 of file Reference.hh.
|
inlinevirtualinherited |
Returns a long expression for each scalar produced by the formatter parsing the long_header should reproduce the exact query described by the formatter Ex: "clex(formation_energy)" or "comp(a) comp(c)".
Definition at line 399 of file DataFormatter.hh.
|
inlineinherited |
Returns a name for the formatter, which becomes the tag used for parsing.
Definition at line 347 of file DataFormatter.hh.
|
inlinevirtualinherited |
If data must be printed on multiple rows, returns number of rows needed to output all data from _data_obj DataFormatter class will subsequently pass over _data_obj multiple times to complete printing (if necessary)
Reimplemented in CASM::Base2DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.
Definition at line 424 of file DataFormatter.hh.
|
inlinevirtualinherited |
Return requested data from obj, throwing std::runtime_error if not valid.
Definition at line 803 of file DataFormatterTools.hh.
|
inlinevirtualinherited |
If DatumFormatter accepts arguments, parse them here. Arguments are assumed to be passed from the command line via: formattername(argument1,argument2,...)
from which DerivedDatumFormatter::parse_args() receives the string "argument1,argument2,..." Returns true if parse is successful, false if not (e.g., takes no arguments, already initialized, malformed input, etc).
Reimplemented in CASM::ConfigIO::StrucScore, CASM::DB::Selected< ObjType >, CASM::ScelIO::ConfigCountBase, CASM::ScelIO::TransfMat, CASM::ScelIO::SupercellCheckBase< VectorXiAttribute< Supercell > >, CASM::ScelIO::SupercellCheckBase< BooleanAttribute< Supercell > >, CASM::ConfigIO::DoFStrain, CASM::ConfigIO::RelaxationStrain, CASM::ConfigIO::Novelty, CASM::ConfigIO::BaseHull< double >, CASM::ConfigIO::BaseHull< bool >, CASM::ConfigIO::Clex, CASM::ConfigIO::GradCorr, CASM::ConfigIO::PointCorr, CASM::ConfigIO::CorrContribution, CASM::ConfigIO::Corr, CASM::ConfigIO::Comp, CASM::ConfigIO_impl::MolDependent, CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 456 of file DataFormatter.hh.
const BasicStructure & CASM::ChemicalReference::prim | ( | ) | const |
Get primitive BasicStructure.
Definition at line 159 of file ChemicalReference.cc.
|
inlineoverridevirtualinherited |
Default implementation prints each element in a column, via operator<<.
Implements CASM::BaseDatumFormatter< DataObject >.
Reimplemented in CASM::Base2DDatumFormatter< Container, DataObject >, and CASM::Base1DDatumFormatter< Container, DataObject >.
Definition at line 833 of file DataFormatterTools.hh.
void CASM::ChemicalReference::set_config | ( | const std::string & | configname, |
const Eigen::VectorXd & | ref | ||
) |
Set hyperplane reference specialized for a Configuration.
Definition at line 237 of file ChemicalReference.cc.
void CASM::ChemicalReference::set_config | ( | const std::string & | configname, |
RefStateIterator | begin, | ||
RefStateIterator | end, | ||
double | tol | ||
) |
Set hyperplane reference specialized for a Configuration.
Definition at line 60 of file ChemicalReference_impl.hh.
void CASM::ChemicalReference::set_global | ( | const Eigen::VectorXd & | ref | ) |
Set global hyperplane reference.
Definition at line 172 of file ChemicalReference.cc.
void CASM::ChemicalReference::set_global | ( | RefStateIterator | begin, |
RefStateIterator | end, | ||
double | tol | ||
) |
Set global hyperplane reference.
prim | The Structure defining the composition space the reference should span |
begin,end | Iterators over a range of ChemicalReferenceState |
tol | Tolerance for checking that input spans the prim composition space and a solution for the hyperplane is found |
sets global refrence to be the Eigen::VectorXd, R, that solves:
for each ChemicalReferenceState
Definition at line 37 of file ChemicalReference_impl.hh.
|
inlineinherited |
Set the dictionary containing this formatter, set during DictType::lookup.
Definition at line 364 of file DataFormatter.hh.
void CASM::ChemicalReference::set_supercell | ( | const std::string & | scelname, |
const Eigen::VectorXd & | ref | ||
) |
Set hyperplane reference specialized for a Supercell.
Definition at line 200 of file ChemicalReference.cc.
void CASM::ChemicalReference::set_supercell | ( | const std::string & | scelname, |
RefStateIterator | begin, | ||
RefStateIterator | end, | ||
double | tol | ||
) |
Set hyperplane reference specialized for a Supercell.
Definition at line 48 of file ChemicalReference_impl.hh.
|
inlinevirtualinherited |
Returns a short expression for the formatter parsing the short_header should allow the formatter to be recreated (but the short header does not specify a subset of the elements) Ex: "clex(formation_energy)" or "comp".
Reimplemented in CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 417 of file DataFormatter.hh.
|
inlineprotectedinherited |
Access a map of scelname to reference for Supercell specialized references.
Definition at line 165 of file Reference.hh.
const std::map< std::string, Eigen::VectorXd > & CASM::ChemicalReference::supercell | ( | ) | const |
const Access a map of scelname to reference for Supercell specialized references
Definition at line 192 of file ChemicalReference.cc.
const ChemicalReference::RefStateMap & CASM::ChemicalReference::supercell_ref_states | ( | ) | const |
const Access a map of configname to RefStateVec for Supercell specialized references
Definition at line 219 of file ChemicalReference.cc.
|
inlineoverridevirtualinherited |
Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&)
Implements CASM::BaseDatumFormatter< DataObject >.
Definition at line 847 of file DataFormatterTools.hh.
|
inlinevirtualinherited |
Reimplemented in CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 354 of file DataFormatter.hh.
|
inlinevirtualinherited |
Returns true if _data_obj has valid values for requested data.
Default implementation always returns true
Reimplemented in CASM::Generic2DDatumFormatter< Container, DataObject >, CASM::Generic1DDatumFormatter< Container, DataObject >, CASM::GenericDatumFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 381 of file DataFormatter.hh.
|
static |
Definition at line 46 of file ChemicalReference.hh.
|
privateinherited |
Definition at line 182 of file Reference.hh.
|
private |
Definition at line 168 of file ChemicalReference.hh.
|
privateinherited |
Definition at line 486 of file DataFormatter.hh.
|
privateinherited |
Definition at line 186 of file Reference.hh.
|
private |
Definition at line 166 of file ChemicalReference.hh.
|
mutableprivateinherited |
Definition at line 488 of file DataFormatter.hh.
|
mutableprivateinherited |
Definition at line 487 of file DataFormatter.hh.
|
privateinherited |
Definition at line 180 of file Reference.hh.
|
privateinherited |
{ return notstd::make_unique<DerivedDatumFormatter>(*this);}
Definition at line 485 of file DataFormatter.hh.
|
private |
Definition at line 162 of file ChemicalReference.hh.
|
privateinherited |
Definition at line 184 of file Reference.hh.
|
private |
Definition at line 167 of file ChemicalReference.hh.
|
static |
Definition at line 45 of file ChemicalReference.hh.