CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::HyperPlaneReferenceBase Class Referenceabstract

#include <Reference.hh>

+ Inheritance diagram for CASM::HyperPlaneReferenceBase:

Detailed Description

Maps a Configuration to a scalar value via a hyperplane.

A hyperplane reference, R, maps input vector coordinates, x, to output scalar value, y:

  • y = R.dot(x)

A HyperPlaneReference is constructed with a global reference, but may be specialized to give a different R for a particular Supercell or Configuration.

Definition at line 74 of file Reference.hh.

Public Types

typedef std::map< std::string,
Eigen::VectorXd > 
SpecializedRef
 
typedef std::function
< Eigen::VectorXd(const
Configuration &)> 
InputFunction
 
enum  FormatterType
 
typedef DataObject DataObject
 
typedef long difference_type
 
typedef
DataFormatterDictionary
< DataObject,
BaseDatumFormatter< DataObject > > 
DictType
 

Public Member Functions

 HyperPlaneReferenceBase (std::string _name, std::string _desc, const Eigen::VectorXd &_global_ref, InputFunction _input, SpecializedRef _supercell_ref=SpecializedRef(), SpecializedRef _config_ref=SpecializedRef())
 Constructor. More...
 
virtual ~HyperPlaneReferenceBase ()
 
std::unique_ptr
< HyperPlaneReferenceBase
clone () const
 Clone. More...
 
const Eigen::VectorXd & global () const
 const Access the global reference More...
 
const std::map< std::string,
Eigen::VectorXd > & 
supercell () const
 const Access a map of scelname to reference 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...
 
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 operator() (const DataObject &obj) const
 Return requested data from obj, throwing std::runtime_error if not valid. More...
 
virtual ValueType evaluate (const DataObject &obj) const =0
 
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 jsonParserto_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 FormatterType type () const
 
const DictTypehome () 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 void init (const DataObject &_template_obj) const
 
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)
 

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

virtual HyperPlaneReferenceBase_clone () const override
 Clone. More...
 

Private Attributes

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
 

Member Typedef Documentation

Definition at line 313 of file DataFormatter.hh.

Definition at line 315 of file DataFormatter.hh.

typedef multivector<Index>::X<2> CASM::BaseDatumFormatter< DataObject >::IndexContainer
protectedinherited

Definition at line 435 of file DataFormatter.hh.

typedef std::function<Eigen::VectorXd(const Configuration &)> CASM::HyperPlaneReferenceBase::InputFunction

Definition at line 79 of file Reference.hh.

typedef std::map<std::string, Eigen::VectorXd> CASM::HyperPlaneReferenceBase::SpecializedRef

Definition at line 78 of file Reference.hh.

Member Enumeration Documentation

Definition at line 314 of file DataFormatter.hh.

Constructor & Destructor Documentation

CASM::HyperPlaneReferenceBase::HyperPlaneReferenceBase ( std::string  _name,
std::string  _desc,
const Eigen::VectorXd &  _global_ref,
InputFunction  _input,
SpecializedRef  _supercell_ref = SpecializedRef(),
SpecializedRef  _config_ref = SpecializedRef() 
)
inline

Constructor.

Parameters
_global_refAn Eigen::VectorXd giving the intercepts of the hyperplane used for the global reference
_inputThe 'input' function maps a Configuration to an Eigen::VectorXd, typically the composition of a Configuration
_supercell_refA map of scelname to Eigen::VectorXd specializing the the reference value by Supercell
_config_refA map of configname to Eigen::VectorXd specializing the the reference value by Configuration

A hyperplane reference, R, maps input vector coordinates, x, to output scalar value, y:

  • y = R.dot(x)

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 99 of file Reference.hh.

virtual CASM::HyperPlaneReferenceBase::~HyperPlaneReferenceBase ( )
inlinevirtual

Definition at line 111 of file Reference.hh.

Member Function Documentation

void CASM::BaseDatumFormatter< DataObject >::_add_rule ( const std::vector< Index > &  new_rule) const
inlineprotectedinherited

Definition at line 447 of file DataFormatter.hh.

virtual HyperPlaneReferenceBase* CASM::HyperPlaneReferenceBase::_clone ( ) const
inlineoverrideprivatevirtual

Clone.

Implements CASM::BaseValueFormatter< ValueType, DataObject >.

Reimplemented in CASM::ChemicalReference, and CASM::HyperPlaneReference.

Definition at line 193 of file Reference.hh.

const IndexContainer& CASM::BaseDatumFormatter< DataObject >::_index_rules ( ) const
inlineprotectedinherited

Definition at line 451 of file DataFormatter.hh.

void CASM::BaseDatumFormatter< DataObject >::_parse_index_expression ( const std::string &  _expr)
protectedinherited

Derived DatumFormatters have some optional functionality for parsing index expressions in order to make it easy to handle ranges such as:

formatter_name(3,4:8)

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}}

std::unique_ptr<HyperPlaneReferenceBase> CASM::HyperPlaneReferenceBase::clone ( ) const
inline

Clone.

Definition at line 114 of file Reference.hh.

virtual std::vector<std::string> CASM::BaseDatumFormatter< DataObject >::col_header ( const DataObject _template_obj) const
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)".

  • Default uses col_header

Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 373 of file DataFormatter.hh.

const std::map<std::string, Eigen::VectorXd>& CASM::HyperPlaneReferenceBase::config ( ) const
inline

const Access a map of configname to reference for Configuration specialized references

Definition at line 135 of file Reference.hh.

std::map<std::string, Eigen::VectorXd>& CASM::HyperPlaneReferenceBase::config ( )
inlineprotected

Access a map of configname to reference for Configuration specialized references.

Definition at line 185 of file Reference.hh.

const std::string& CASM::BaseDatumFormatter< DataObject >::description ( ) const
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 332 of file DataFormatter.hh.

double CASM::HyperPlaneReferenceBase::evaluate ( const Configuration config) const
inlineoverride

Return the reference for a particular configuration.

Returns
hyperplane(config).dot(input(config));

Definition at line 162 of file Reference.hh.

template<typename ValueType, typename DataObject>
virtual ValueType CASM::BaseValueFormatter< ValueType, DataObject >::evaluate ( const DataObject obj) const
pure virtualinherited
const Eigen::VectorXd& CASM::HyperPlaneReferenceBase::global ( ) const
inline

const Access the global reference

Definition at line 120 of file Reference.hh.

Eigen::VectorXd& CASM::HyperPlaneReferenceBase::global ( )
inlineprotected

Access the global reference.

Definition at line 171 of file Reference.hh.

const DictType& CASM::BaseDatumFormatter< DataObject >::home ( ) const
inlineinherited

const Access the dictionary containing this formatter, set during DictType::lookup

Definition at line 341 of file DataFormatter.hh.

Eigen::VectorXd CASM::HyperPlaneReferenceBase::hyperplane ( const Configuration config) const

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 21 of file Reference.cc.

virtual void CASM::BaseDatumFormatter< DataObject >::init ( const DataObject _template_obj) const
inlinevirtualinherited
template<typename ValueType, typename DataObject>
virtual void CASM::BaseValueFormatter< ValueType, DataObject >::inject ( const DataObject _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
inlineoverridevirtualinherited

Default implementation injects each element, via operator<<.

Implements CASM::BaseDatumFormatter< DataObject >.

Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >.

Definition at line 747 of file DataFormatterTools.hh.

std::function<Eigen::VectorXd(const Configuration &)> CASM::HyperPlaneReferenceBase::input ( ) const
inline

Return the 'input' function that maps a Configuration to coordinates.

Definition at line 140 of file Reference.hh.

Eigen::VectorXd CASM::HyperPlaneReferenceBase::input ( const Configuration config) const
inline

Return the 'input' coordinates that a Configuration is mapped to.

Definition at line 145 of file Reference.hh.

virtual std::string CASM::BaseDatumFormatter< DataObject >::long_header ( const DataObject _template_obj) const
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)".

  • Default uses col_header

Definition at line 382 of file DataFormatter.hh.

const std::string& CASM::BaseDatumFormatter< DataObject >::name ( ) const
inlineinherited

Returns a name for the formatter, which becomes the tag used for parsing.

Definition at line 326 of file DataFormatter.hh.

virtual Index CASM::BaseDatumFormatter< DataObject >::num_passes ( const DataObject _data_obj) const
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::DatumFormatterAlias< DataObject >.

Definition at line 406 of file DataFormatter.hh.

template<typename ValueType, typename DataObject>
virtual ValueType CASM::BaseValueFormatter< ValueType, DataObject >::operator() ( const DataObject obj) const
inlinevirtualinherited

Return requested data from obj, throwing std::runtime_error if not valid.

Definition at line 729 of file DataFormatterTools.hh.

virtual bool CASM::BaseDatumFormatter< DataObject >::parse_args ( const std::string &  args)
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::Base1DDatumFormatter< Container, DataObject >, CASM::DatumFormatterAlias< DataObject >, CASM::ConfigIO::Clex, CASM::ConfigIO::Corr, CASM::ConfigIO::DoFStrain, CASM::ConfigIO::Comp, CASM::ConfigIO::Novelty, CASM::ConfigIO::RelaxationStrain, CASM::ConfigIO::StrucScore, CASM::DataFormatterOperator< ValueType, ArgType, DataObject >, CASM::ConfigIO::Selected, and CASM::ConfigIO_impl::MolDependent.

Definition at line 431 of file DataFormatter.hh.

template<typename ValueType, typename DataObject>
virtual void CASM::BaseValueFormatter< ValueType, DataObject >::print ( const DataObject _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
inlineoverridevirtualinherited

Default implementation prints each element in a column, via operator<<.

  • Prints "unknown" if validation fails

Implements CASM::BaseDatumFormatter< DataObject >.

Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >.

Definition at line 757 of file DataFormatterTools.hh.

void CASM::BaseDatumFormatter< DataObject >::set_home ( const DictType home) const
inlineinherited

Set the dictionary containing this formatter, set during DictType::lookup.

Definition at line 346 of file DataFormatter.hh.

virtual std::string CASM::BaseDatumFormatter< DataObject >::short_header ( const DataObject _template_obj) const
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 400 of file DataFormatter.hh.

const std::map<std::string, Eigen::VectorXd>& CASM::HyperPlaneReferenceBase::supercell ( ) const
inline

const Access a map of scelname to reference for Supercell specialized references

Definition at line 128 of file Reference.hh.

std::map<std::string, Eigen::VectorXd>& CASM::HyperPlaneReferenceBase::supercell ( )
inlineprotected

Access a map of scelname to reference for Supercell specialized references.

Definition at line 178 of file Reference.hh.

template<typename ValueType, typename DataObject>
virtual jsonParser& CASM::BaseValueFormatter< ValueType, DataObject >::to_json ( const DataObject _data_obj,
jsonParser json 
) const
inlineoverridevirtualinherited

Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&)

  • Does nothing if validation fails

Implements CASM::BaseDatumFormatter< DataObject >.

Definition at line 769 of file DataFormatterTools.hh.

virtual bool CASM::BaseDatumFormatter< DataObject >::validate ( const DataObject _data_obj) const
inlinevirtualinherited

Returns true if _data_obj has valid values for requested data.

Default implementation always returns true

Reimplemented in CASM::Generic1DDatumFormatter< Container, DataObject >, CASM::GenericDatumFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

Definition at line 363 of file DataFormatter.hh.

Member Data Documentation

std::map<std::string, Eigen::VectorXd> CASM::HyperPlaneReferenceBase::m_config_ref
private

Definition at line 200 of file Reference.hh.

Eigen::VectorXd CASM::HyperPlaneReferenceBase::m_global_ref
private

Definition at line 204 of file Reference.hh.

InputFunction CASM::HyperPlaneReferenceBase::m_input
private

Definition at line 198 of file Reference.hh.

std::map<std::string, Eigen::VectorXd> CASM::HyperPlaneReferenceBase::m_supercell_ref
private

Definition at line 202 of file Reference.hh.


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