1 #ifndef OCCUPANTFUNCTION_HH
2 #define OCCUPANTFUNCTION_HH
15 class FunctionOperation;
17 class OccupantFunction;
27 public DerivedID<OccupantFunction, Function> {
41 std::string
type_name()
const override {
return "OccupantFunction"; }
63 void scale(
double scale_factor)
override;
67 const std::vector<DoF::RemoteHandle> &remote_handles)
override;
69 std::set<Index>
dof_IDs()
const override {
70 return std::set<Index>({
dof().
ID()});
96 BasisSet const *home_basis_ptr = NULL)
override;
99 BasisSet const *home_basis_ptr = NULL)
const override;
102 const std::vector<Index> &after_IDs)
override;
Index ID() const
Const access of integer ID.
bool compare(Function const *LHS, Function const *RHS) const
const DiscreteDoF & dof() const
void small_to_zero(double tol=TOL) override
Eigen::VectorXd const * get_eigen_coeffs() const override
double get_coefficient(Index i) const override
std::string type_name() const override
Eigen::VectorXd m_eval_table
jsonParser & to_json(jsonParser &json) const override
bool _update_dof_IDs(const std::vector< Index > &before_IDs, const std::vector< Index > &after_IDs) override
notstd::cloneable_ptr< DiscreteDoF > m_var
double cache_deval(const DoF::RemoteHandle &dvar) const override
void from_json(const jsonParser &json)
void scale(double scale_factor) override
int class_ID() const override
double discrete_eval(int state) const
Index occ_func_ind() const
int register_remotes(const std::vector< DoF::RemoteHandle > &remote_handles) override
Function * _apply_sym(const SymOp &op) override
void make_formula() const override
double leading_coefficient() const override
void set_basis_ind(int new_ind)
bool compare(const OccupantFunction *RHS) const
SymGroupRepID m_sym_rep_ID
bool is_zero() const override
const Eigen::VectorXd & eval_table() const
bool _accept(const FunctionVisitor &visitor, BasisSet const *home_basis_ptr=NULL) override
Function * copy() const override
std::set< Index > dof_IDs() const override
double cache_eval() const override
OccupantFunction(const DiscreteDoF &init_var, const Eigen::VectorXd &init_eval, int _occ_func_ind, int _basis_ind, SymGroupRepID _sym_rep_ID)
static void fill_dispatch_table()
Index num_terms() const override
double remote_eval() const override
double remote_deval(const DoF::RemoteHandle &dvar) const override
Type-safe ID object for communicating and accessing Symmetry representation info.
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
A 'cloneable_ptr' can be used in place of 'unique_ptr'.
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
void from_json(ClexDescription &desc, const jsonParser &json)
INDEX_TYPE Index
For long integer indexing:
std::unique_ptr< T > clone(const T &obj)