1 #ifndef CASM_OrbitFunctionTraits
2 #define CASM_OrbitFunctionTraits
18 using xtal::UnitCellCoord;
22 class IntegralCluster;
23 class PrimNeighborList;
38 std::vector<DoFKey>
const &_dof_types) {
46 std::vector<BasisSet const *>
const &_arg_bases,
48 Index min_poly_order)
const = 0;
50 std::unique_ptr<ClexBasisBuilder>
clone()
const {
51 return std::unique_ptr<ClexBasisBuilder>(
_clone());
65 static std::string
class_desc() {
return "Orbit Function Traits"; }
68 std::string
const &_long_desc)
85 std::map<
UnitCellCoord, std::set<UnitCellCoord> >
const &_nhood,
92 std::map<
UnitCellCoord, std::set<UnitCellCoord> >
const &_nhood,
96 virtual void print_typedefs(std::ostream &out, std::string
const &class_name,
97 std::string
const &indent)
const {}
100 std::string
const &class_name,
102 std::string
const &indent)
const {}
121 std::vector<BasisSet const *>
const &_arg_bases,
122 Index max_poly_order,
123 Index min_poly_order)
const override;
137 "Orbit functions are constructed as invariant "
138 "polynomials of site basis functions.") {}
141 return std::unique_ptr<ClexBasisBuilder>(
std::unique_ptr< ClexBasisBuilder > clone() const
virtual void prepare(Structure const &_prim)
std::string const & name() const
ClexBasisBuilder(std::string const &_name)
virtual BasisSet build_proto(IntegralCluster const &_prototype, SymGroup const &_generating_group, std::vector< BasisSet const * > const &_arg_bases, Index max_poly_order, Index min_poly_order) const =0
virtual ClexBasisBuilder * _clone() const =0
virtual ~ClexBasisBuilder()
virtual void pre_generate()
virtual std::vector< DoFKey > filter_dof_types(std::vector< DoFKey > const &_dof_types)
ClexBasisBuilder * _clone() const override
InvariantPolyBasisBuilder(std::string const &_name)
BasisSet build_proto(IntegralCluster const &_prototype, SymGroup const &_generating_group, std::vector< BasisSet const * > const &_arg_bases, Index max_poly_order, Index min_poly_order) const override
InvariantPolyOrbitFunctionTraits()
std::unique_ptr< ClexBasisBuilder > basis_builder() const override
virtual base class for printing orbit functions of type specified by implementation.
virtual std::string clexulator_global_prepare_string(Structure const &_prim, std::map< UnitCellCoord, std::set< UnitCellCoord > > const &_nhood, PrimNeighborList &_nlist, std::string const &indent) const
virtual ~OrbitFunctionTraits()
std::string const & short_desc() const
virtual std::unique_ptr< ClexBasisBuilder > basis_builder() const =0
std::string const & long_desc() const
virtual void print_eval_table_declarations(std::ostream &out, std::string const &class_name, ClexBasis const &clex, std::string const &indent) const
std::string const & name() const
virtual std::string clexulator_point_prepare_string(Structure const &_prim, std::map< UnitCellCoord, std::set< UnitCellCoord > > const &_nhood, PrimNeighborList &_nlist, std::string const &indent) const
virtual void print_typedefs(std::ostream &out, std::string const &class_name, std::string const &indent) const
OrbitFunctionTraits(std::string const &_name, std::string const &_short_desc, std::string const &_long_desc)
virtual void print_param_pack_initilialization() const
static std::string class_desc()
The PrimNeighborList gives the coordinates of UnitCell that are neighbors of the origin UnitCell.
Structure specifies the lattice and atomic basis of a crystal.
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
INDEX_TYPE Index
For long integer indexing: