CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::BasisFunctionSpecs Struct Reference

#include <BasisFunctionSpecs.hh>

Detailed Description

Specify how to construct basis functions.

Definition at line 43 of file BasisFunctionSpecs.hh.

Public Types

typedef Index MaxPolyOrder
 
typedef Index OrbitBranchSize
 

Public Member Functions

 BasisFunctionSpecs (std::vector< DoFKey > _dof_keys={}, std::vector< notstd::cloneable_ptr< DoFSpecs >> _dof_specs={}, MaxPolyOrder _global_max_poly_order=-1, std::map< OrbitBranchSize, MaxPolyOrder > _orbit_branch_max_poly_order={}, std::vector< Index > _include_functions={}, std::vector< Index > _exclude_functions={}, PARAM_PACK_TYPE _param_pack_type=PARAM_PACK_TYPE::DEFAULT)
 

Public Attributes

std::vector< DoFKeydof_keys
 Which DoF types to include in the basis functions. More...
 
std::vector< notstd::cloneable_ptr< DoFSpecs > > dof_specs
 Provides DoF-particular specifications for constructing basis functions. More...
 
MaxPolyOrder global_max_poly_order
 
std::map< OrbitBranchSize, MaxPolyOrderorbit_branch_max_poly_order
 
std::vector< Indexinclude_functions
 
std::vector< Indexexclude_functions
 
PARAM_PACK_TYPE param_pack_type
 Specify the Clexulator underlying data structure type. More...
 

Member Typedef Documentation

◆ MaxPolyOrder

◆ OrbitBranchSize

Constructor & Destructor Documentation

◆ BasisFunctionSpecs()

CASM::BasisFunctionSpecs::BasisFunctionSpecs ( std::vector< DoFKey _dof_keys = {},
std::vector< notstd::cloneable_ptr< DoFSpecs >>  _dof_specs = {},
MaxPolyOrder  _global_max_poly_order = -1,
std::map< OrbitBranchSize, MaxPolyOrder _orbit_branch_max_poly_order = {},
std::vector< Index _include_functions = {},
std::vector< Index _exclude_functions = {},
PARAM_PACK_TYPE  _param_pack_type = PARAM_PACK_TYPE::DEFAULT 
)
inline

Construct BasisFunctionSpecs

Parameters
_dof_keysNames of DoF types to include in basis functions.
_dof_specsProvides DoF-particular specifications for constructing basis functions.
_global_max_poly_orderMaximum polynomial order for cluster basis functions of continuous DoF. Use -1 for default behaviour: max_poly_order == cluster size.
_orbit_branch_max_poly_orderAllows specifying the max_poly_order per orbit branch. The key is the orbit branch index (equal to number of sites in a cluster), and the value is the maximum polynomial order for orbits in that branch.
_include_functionsAllows specifying that only ClexBasis functions with these indices should be written in the produced Clexulator. Generally, this requires generating the full ClexBasis once (without writing the Clexulator), inspecting the basis functions, and then specifying this value and re-generating the ClexBasis.
_exclude_functionsAllows specifying that ClexBasis functions with these indices should be not written in the produced Clexulator. Generally, this requires generating the full ClexBasis once (without writing the Clexulator), inspecting the basis functions, and then specifying this value and re-generating the ClexBasis.
_param_pack_typeSpecify the Clexulator underlying data structure type.

Notes on _dof_specs:

  • Not all DoF types require their own DoFSpecs. See documentation for a particular DoFTraits class to determine if it is required (i.e. OccupationDoFSpecs is required for OccupationDoFTraits) for the "construct_site_bases" method, which should throw an error message if required specs are not found.
  • Example: OccupationDoFSpecs allows specifying the type of basis functions to generate for occupation cluster functions from among CHEBYCHEV, OCCUPATION, COMPOSITION. It also allows specifying the particular sublat composition to expand about for COMPOSITION basis functions.

Notes on _include_functions and _exclude_functions:

  • These parameters should be seen as mutually exclusive. Including both will result in an error.

Notes on _param_pack_type choices:

  • DEFAULT: For BasisClexParamPack, the default.
  • DIFF: For DiffClexParamPack, to make use of FADBAD++ automatic differentiation library

Definition at line 153 of file BasisFunctionSpecs.hh.

Member Data Documentation

◆ dof_keys

std::vector<DoFKey> CASM::BasisFunctionSpecs::dof_keys

Which DoF types to include in the basis functions.

Definition at line 107 of file BasisFunctionSpecs.hh.

◆ dof_specs

std::vector<notstd::cloneable_ptr<DoFSpecs> > CASM::BasisFunctionSpecs::dof_specs

Provides DoF-particular specifications for constructing basis functions.

Definition at line 110 of file BasisFunctionSpecs.hh.

◆ exclude_functions

std::vector<Index> CASM::BasisFunctionSpecs::exclude_functions

If not empty, specifies that ClexBasis functions with these indices should be excluded from the produced Clexulator.

Definition at line 131 of file BasisFunctionSpecs.hh.

◆ global_max_poly_order

MaxPolyOrder CASM::BasisFunctionSpecs::global_max_poly_order

Maximum polynomial order for basis functions of continuous DoF. Use -1 for context-dependent default behaviour (usually max_poly_order == orbit branch cluster size) The global value can be overriden per orbit branch with orbit_branch_max_poly_order

Definition at line 116 of file BasisFunctionSpecs.hh.

◆ include_functions

std::vector<Index> CASM::BasisFunctionSpecs::include_functions

If not empty, specifies that only ClexBasis functions with these indices should be included in the produced Clexulator.

Definition at line 127 of file BasisFunctionSpecs.hh.

◆ orbit_branch_max_poly_order

std::map<OrbitBranchSize, MaxPolyOrder> CASM::BasisFunctionSpecs::orbit_branch_max_poly_order

Maximum polynomial order for basis functions of continuous DoF, by orbit branch.

Definition at line 120 of file BasisFunctionSpecs.hh.

◆ param_pack_type

PARAM_PACK_TYPE CASM::BasisFunctionSpecs::param_pack_type

Specify the Clexulator underlying data structure type.

Definition at line 134 of file BasisFunctionSpecs.hh.


The documentation for this struct was generated from the following file: