CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::ConfigIO::BaseHull< ValueType > Class Template Referenceabstract

#include <ConfigIOHull.hh>

+ Inheritance diagram for CASM::ConfigIO::BaseHull< ValueType >:

Detailed Description

template<typename ValueType>
class CASM::ConfigIO::BaseHull< ValueType >

Base class for hull info formatters.

Definition at line 29 of file ConfigIOHull.hh.

Public Types

typedef _DataObject DataObject
 
typedef long difference_type
 
typedef DataFormatterDictionary< DataObject, BaseDatumFormatter< DataObject > > DictType
 

Public Member Functions

 BaseHull (const std::string &_name, const std::string &_desc, const std::string &_default_selection="MASTER", const std::string &_default_composition_type=default_hull_calculator(), const Hull::CalculatorOptions &_calculator_map=hull_calculator_options(), double _singular_value_tol=1e-8, double _bottom_facet_tol=1e-8)
 Constructor. More...
 
bool init (const Configuration &_tmplt) const override
 Calculates the convex hull. More...
 
std::string short_header (const Configuration &_config) const override
 column header to use More...
 
bool parse_args (const std::string &args) override
 Determine the selection to use to generate the hull. More...
 
std::unique_ptr< BaseValueFormatterclone () const
 
virtual ValueType operator() (const Configuration &obj) const
 Return requested data from obj, throwing std::runtime_error if not valid. More...
 
virtual ValueType evaluate (const Configuration &obj) const=0
 
virtual void inject (const Configuration &_data_obj, DataStream &_stream, Index pass_index=0) const override
 Default implementation injects each element, via operator<<. More...
 
virtual void inject (const DataObject &_data_obj, DataStream &_stream, Index pass_index=0) const =0
 
virtual void print (const Configuration &_data_obj, std::ostream &_stream, Index pass_index=0) const override
 Default implementation prints each element in a column, via operator<<. More...
 
virtual void print (const DataObject &_data_obj, std::ostream &_stream, Index pass_index=0) const =0
 
virtual jsonParserto_json (const Configuration &_data_obj, jsonParser &json) const override
 Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&) More...
 
virtual jsonParserto_json (const DataObject &_data_obj, jsonParser &json) const =0
 
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 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 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
 

Protected Types

typedef multivector< Index >::X< 2 > IndexContainer
 

Protected Member Functions

const Hull_hull () const
 const Access the Hull object More...
 
void _parse_index_expression (const std::string &_expr)
 
void _add_rule (const std::vector< Index > &new_rule) const
 
const IndexContainer_index_rules () const
 

Protected Attributes

Hull::CalculatorOptions m_calculator_map
 

Static Protected Attributes

constexpr static double m_dist_to_hull_tol = 1e-14
 

Private Member Functions

virtual BaseValueFormatter_clone () const override=0
 Clone. More...
 

Private Attributes

double m_singular_value_tol
 
double m_bottom_facet_tol
 
std::shared_ptr< Hullm_hull
 
std::string m_selection
 
std::string m_composition_type
 
bool m_initialized
 
std::string m_name
 
std::string m_description
 
IndexContainer m_index_rules
 
const DictTypem_home
 

Member Typedef Documentation

◆ DataObject

template<typename _DataObject >
typedef _DataObject CASM::BaseDatumFormatter< _DataObject >::DataObject
inherited

Definition at line 334 of file DataFormatter.hh.

◆ DictType

template<typename _DataObject >
typedef DataFormatterDictionary<DataObject, BaseDatumFormatter<DataObject> > CASM::BaseDatumFormatter< _DataObject >::DictType
inherited

Definition at line 337 of file DataFormatter.hh.

◆ difference_type

template<typename _DataObject >
typedef long CASM::BaseDatumFormatter< _DataObject >::difference_type
inherited

Definition at line 335 of file DataFormatter.hh.

◆ IndexContainer

template<typename _DataObject >
typedef multivector<Index>::X<2> CASM::BaseDatumFormatter< _DataObject >::IndexContainer
protectedinherited

Definition at line 459 of file DataFormatter.hh.

Constructor & Destructor Documentation

◆ BaseHull()

template<typename ValueType >
CASM::ConfigIO::BaseHull< ValueType >::BaseHull ( const std::string &  _name,
const std::string &  _desc,
const std::string &  _default_selection = "MASTER",
const std::string &  _default_composition_type = default_hull_calculator(),
const Hull::CalculatorOptions _calculator_map = hull_calculator_options(),
double  _singular_value_tol = 1e-8,
double  _bottom_facet_tol = 1e-8 
)

Constructor.

Parameters
_nameFormatter name, e.g. "on_hull", "hull_dist", etc.
_descFormatter help description
_comp_calculatorFunction or functor that return the composition of a Configuration as a Eigen::VectorXd
_energy_calcuatorFunction or functor that return the energy of a Configuration as a double
_singular_value_tolUsed with CASM::almost_zero to detect zero-valued singular values
  • The selection of Configuration used to generate the hull is passed as an argument. See parse_args
  • The units of composition and energy are determined by the calculator parameters

Definition at line 56 of file ConfigIOHull.cc.

Member Function Documentation

◆ _add_rule()

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

Definition at line 472 of file DataFormatter.hh.

◆ _clone()

virtual BaseValueFormatter* CASM::BaseValueFormatter< ValueType, Configuration >::_clone ( ) const
overrideprivatepure virtualinherited

◆ _hull()

template<typename ValueType >
const Hull & CASM::ConfigIO::BaseHull< ValueType >::_hull
protected

const Access the Hull object

Definition at line 186 of file ConfigIOHull.cc.

◆ _index_rules()

template<typename _DataObject >
const IndexContainer& CASM::BaseDatumFormatter< _DataObject >::_index_rules ( ) const
inlineprotectedinherited

Definition at line 476 of file DataFormatter.hh.

◆ _parse_index_expression()

template<typename DataObject >
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}}

Definition at line 15 of file DataFormatter_impl.hh.

◆ clone()

std::unique_ptr<BaseValueFormatter> CASM::BaseValueFormatter< ValueType, Configuration >::clone ( ) const
inlineinherited

Definition at line 797 of file DataFormatterTools.hh.

◆ col_header()

template<typename _DataObject >
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 short_header

Reimplemented in CASM::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 389 of file DataFormatter.hh.

◆ description()

template<typename _DataObject >
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 352 of file DataFormatter.hh.

◆ evaluate()

virtual ValueType CASM::BaseValueFormatter< ValueType, Configuration >::evaluate ( const Configuration obj) const
pure virtualinherited

◆ home()

template<typename _DataObject >
const DictType& CASM::BaseDatumFormatter< _DataObject >::home ( ) const
inlineinherited

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

Definition at line 360 of file DataFormatter.hh.

◆ init() [1/2]

template<typename ValueType >
bool CASM::ConfigIO::BaseHull< ValueType >::init ( const Configuration _tmplt) const
override

Calculates the convex hull.

  • Uses the parsed args to determine the selection to use to calculate the hull
  • Calls 'init' on the CompCalculator and EnergyCalculator
  • Constructs the hull

Definition at line 79 of file ConfigIOHull.cc.

◆ init() [2/2]

template<typename _DataObject >
virtual bool CASM::BaseDatumFormatter< _DataObject >::init ( const DataObject _template_obj) const
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::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 376 of file DataFormatter.hh.

◆ inject() [1/2]

virtual void CASM::BaseValueFormatter< ValueType, Configuration >::inject ( const Configuration _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
inlineoverridevirtualinherited

Default implementation injects each element, via operator<<.

Definition at line 821 of file DataFormatterTools.hh.

◆ inject() [2/2]

template<typename _DataObject >
virtual void CASM::BaseDatumFormatter< _DataObject >::inject ( const DataObject _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
pure virtualinherited

◆ long_header()

template<typename _DataObject >
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

Reimplemented in CASM::DatumFormatterAdapter< ExternalType, InternalType >.

Definition at line 399 of file DataFormatter.hh.

◆ name()

template<typename _DataObject >
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 347 of file DataFormatter.hh.

◆ num_passes()

template<typename _DataObject >
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::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 424 of file DataFormatter.hh.

◆ operator()()

virtual ValueType CASM::BaseValueFormatter< ValueType, Configuration >::operator() ( const Configuration obj) const
inlinevirtualinherited

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

Definition at line 803 of file DataFormatterTools.hh.

◆ parse_args()

template<typename ValueType >
bool CASM::ConfigIO::BaseHull< ValueType >::parse_args ( const std::string &  args)
overridevirtual

Determine the selection to use to generate the hull.

Args are: ($selection,$composition,$dim_tol,$bottom_tol)

Options for $selection are:

  • "ALL", use all configurations
  • "MASTER", use the current MASTER selection (default for no args)
  • "CALCULATED", use configurations for which is_calculated is true
  • other, assume the argument is the filename for a selection to use

Options for $composition are:

  • "atom_frac", (default) use atom_frac for the composition and "formation_energy_per_species" for the energy
  • "comp", use parametric composition for the composition and "formation_energy" for the energy

$dim_tol, default=1e-8

  • singular value tolerance used for detecting composition dimensions

$bottom_tol, default=1e-8

  • tolerance used for detecting facets on the convex hull bottom

Reimplemented from CASM::BaseDatumFormatter< _DataObject >.

Definition at line 136 of file ConfigIOHull.cc.

◆ print() [1/2]

virtual void CASM::BaseValueFormatter< ValueType, Configuration >::print ( const Configuration _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

Definition at line 833 of file DataFormatterTools.hh.

◆ print() [2/2]

template<typename _DataObject >
virtual void CASM::BaseDatumFormatter< _DataObject >::print ( const DataObject _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
pure virtualinherited

◆ set_home()

template<typename _DataObject >
void CASM::BaseDatumFormatter< _DataObject >::set_home ( const DictType home) const
inlineinherited

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

Definition at line 364 of file DataFormatter.hh.

◆ short_header() [1/2]

template<typename ValueType >
std::string CASM::ConfigIO::BaseHull< ValueType >::short_header ( const Configuration _config) const
override

column header to use

Returns
'name() + '(' + args + ')'
  • ex: 'on_hull(MASTER)' if name() is 'on_hull', and args is "MASTER"
  • ex: 'on_clex_hull(ALL,comp) if name() is 'on_clex_hull', and args is "ALL,comp"

Definition at line 105 of file ConfigIOHull.cc.

◆ short_header() [2/2]

template<typename _DataObject >
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::DatumFormatterAdapter< ExternalType, InternalType >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

Definition at line 417 of file DataFormatter.hh.

◆ to_json() [1/2]

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

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

  • Does nothing if validation fails

Definition at line 847 of file DataFormatterTools.hh.

◆ to_json() [2/2]

template<typename _DataObject >
virtual jsonParser& CASM::BaseDatumFormatter< _DataObject >::to_json ( const DataObject _data_obj,
jsonParser json 
) const
pure virtualinherited

Assumes that 'json' object is simply assigned, and it is the job of DataFormatter (or some other managing entity) to pass the correct 'json' object. Ex: DerivedDatumFormatter my_formatter; initialize(my_formatter); // does some set of initialization steps jsonParser my_big_data_object; my_formatter.to_json(my_data_object, my_big_data_object["place_to_write"]["my_formatter_data"]);

Implemented in CASM::DatumFormatterAdapter< ExternalType, InternalType >, CASM::BaseValueFormatter< ValueType, DataObject >, CASM::BaseValueFormatter< Container, DataObject >, CASM::ConstantValueFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

◆ type()

template<typename _DataObject >
virtual DatumFormatterClass CASM::BaseDatumFormatter< _DataObject >::type ( ) const
inlinevirtualinherited

◆ validate()

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

Member Data Documentation

◆ m_bottom_facet_tol

template<typename ValueType >
double CASM::ConfigIO::BaseHull< ValueType >::m_bottom_facet_tol
private

Definition at line 65 of file ConfigIOHull.hh.

◆ m_calculator_map

template<typename ValueType >
Hull::CalculatorOptions CASM::ConfigIO::BaseHull< ValueType >::m_calculator_map
protected

Definition at line 54 of file ConfigIOHull.hh.

◆ m_composition_type

template<typename ValueType >
std::string CASM::ConfigIO::BaseHull< ValueType >::m_composition_type
private

Definition at line 77 of file ConfigIOHull.hh.

◆ m_description

template<typename _DataObject >
std::string CASM::BaseDatumFormatter< _DataObject >::m_description
privateinherited

Definition at line 486 of file DataFormatter.hh.

◆ m_dist_to_hull_tol

template<typename ValueType >
constexpr static double CASM::ConfigIO::BaseHull< ValueType >::m_dist_to_hull_tol = 1e-14
staticconstexprprotected

Definition at line 57 of file ConfigIOHull.hh.

◆ m_home

template<typename _DataObject >
const DictType* CASM::BaseDatumFormatter< _DataObject >::m_home
mutableprivateinherited

Definition at line 488 of file DataFormatter.hh.

◆ m_hull

template<typename ValueType >
std::shared_ptr<Hull> CASM::ConfigIO::BaseHull< ValueType >::m_hull
mutableprivate

Definition at line 68 of file ConfigIOHull.hh.

◆ m_index_rules

template<typename _DataObject >
IndexContainer CASM::BaseDatumFormatter< _DataObject >::m_index_rules
mutableprivateinherited

Definition at line 487 of file DataFormatter.hh.

◆ m_initialized

template<typename ValueType >
bool CASM::ConfigIO::BaseHull< ValueType >::m_initialized
private

Definition at line 80 of file ConfigIOHull.hh.

◆ m_name

template<typename _DataObject >
std::string CASM::BaseDatumFormatter< _DataObject >::m_name
privateinherited

{ return notstd::make_unique<DerivedDatumFormatter>(*this);}

Definition at line 485 of file DataFormatter.hh.

◆ m_selection

template<typename ValueType >
std::string CASM::ConfigIO::BaseHull< ValueType >::m_selection
private

Definition at line 72 of file ConfigIOHull.hh.

◆ m_singular_value_tol

template<typename ValueType >
double CASM::ConfigIO::BaseHull< ValueType >::m_singular_value_tol
private

Definition at line 62 of file ConfigIOHull.hh.


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