1 #ifndef POLYNOMIALFUNCTION_HH
2 #define POLYNOMIALFUNCTION_HH
17 class FunctionOperation;
18 class PolynomialFunction;
19 class OccupantFunction;
23 public DerivedID<PolynomialFunction, Function> {
43 std::string
type_name()
const override {
return "PolynomialFunction"; };
62 std::set<Index>
dof_IDs()
const override;
72 const std::vector<bool> &transform_flags);
76 void scale(
double scale_factor)
override;
80 double edge_length)
const;
82 double std_dev)
const;
130 std::vector<Index>
const &compatibility_map)
override;
134 const std::vector<bool> &transform_flags);
137 BasisSet const *home_basis_ptr = NULL)
override;
140 BasisSet const *home_basis_ptr = NULL)
const override;
double dot(Function const *LHS, Function const *RHS) const
static int get_class_ID()
std::vector< std::shared_ptr< BasisSet > > ArgumentContainer
Function * poly_quotient(Function const *LHS, Function const *RHS) const
Function * poly_remainder(Function const *LHS, Function const *RHS) const
Function * subtract(Function const *LHS, Function const *RHS) const
Function * add(Function const *LHS, Function const *RHS) const
Function * add_to(Function *LHS, Function const *RHS) const
Function * multiply(Function const *LHS, Function const *RHS) const
bool compare(Function const *LHS, Function const *RHS) const
Function * subtract_from(Function *LHS, Function const *RHS) const
Function * multiply_by(Function *LHS, Function const *RHS) const
Function * poly_remainder(Function const *LHS, Function const *RHS) const
Function * poly_quotient(Function const *LHS, Function const *RHS) const
void scale(double scale_factor) override
PolyTrie< double > m_coeffs
void make_formula(double prefactor) const
bool depends_on(const Function *test_func) const override
void make_formula() const override
double remote_deval(const DoF::RemoteHandle &dvar) const override
SparseTensor< double > const * get_coeffs() const override
std::set< Index > dof_IDs() const override
double cache_deval(const DoF::RemoteHandle &dvar) const override
Function * copy() const override
void _set_arguments(const ArgumentContainer &new_arg, std::vector< Index > const &compatibility_map) override
double frobenius_scalar_prod(const PolynomialFunction &RHS) const
Index num_terms() const override
double gaussian_integral_scalar_prod(const PolynomialFunction &RHS, double std_dev) const
Function * apply_sym_coeffs(const SymOp &op, int dependency_layer) override
double get_coefficient(Index i) const override
Function * poly_quotient(const Variable *RHS) const
double remote_eval() const override
double leading_coefficient() const override
static void fill_dispatch_table()
double cache_eval() const override
double box_integral_scalar_prod(const PolynomialFunction &RHS, double edge_length) const
Function * _apply_sym(const SymOp &op) override
const PolyTrie< double > & poly_coeffs() const
Function * transform_monomial_and_add(double prefactor, const Array< Index > &ind, const SymOp &op)
Function * poly_remainder(const Variable *RHS) const
Function * plus_equals(const PolynomialFunction *RHS)
std::string type_name() const override
bool compare(const PolynomialFunction *RHS) const
void small_to_zero(double tol=TOL) override
Function * minus_equals(const PolynomialFunction *RHS)
int class_ID() const override
Function * transform_monomial_and_add_new(double prefactor, const Array< Index > &ind, const SymOp &op, const std::vector< bool > &transform_flags)
bool _accept(const FunctionVisitor &visitor, BasisSet const *home_basis_ptr=NULL) override
bool is_zero() const override
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
INDEX_TYPE Index
For long integer indexing: