1 #ifndef BASISFUNCTION_HH
2 #define BASISFUNCTION_HH
10 #include "casm/external/Eigen/Dense"
26 class FunctionVisitor;
27 class FunctionOperation;
51 Function(
const ArgumentContainer &_args);
71 void print(std::ostream &stream)
const;
72 void print_tex(std::ostream &stream)
const;
93 virtual std::string
type_name()
const = 0;
98 virtual bool is_zero()
const = 0;
102 return this == test_func;
114 virtual void scale(
double scale_factor) = 0;
195 for(
Index i = 0; i < inner_prod_table.
size(); i++) {
virtual double eval(const Array< Index > &dof_IDs, const Array< Index > &var_states) const
virtual double remote_eval() const =0
virtual Function * poly_quotient(Function const *LHS, Function const *RHS) const
int _dependency_layer() const
bool update_dof_IDs(const Array< Index > &before_IDs, const Array< Index > &after_IDs)
virtual Function * add_to(Function *LHS, Function const *RHS) const
bool accept(const FunctionVisitor &visitor, BasisSet const *home_basis_ptr=NULL)
std::string formula() const
virtual Function * apply_sym_coeffs(const SymOp &op, int dependency_layer=1)
void push_back(const T &toPush)
virtual jsonParser & to_json(jsonParser &json) const
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
Function * minus_in_place(Function const *RHS)
virtual bool depends_on(const Function *test_func) const
void print(std::ostream &stream) const
virtual int register_remotes(const std::string &dof_name, const Array< DoF::RemoteHandle > &remote_handles)
bool shallow_compare(Function const *RHS) const
virtual double get_coefficient(Index i) const =0
Function * minus(Function const *RHS) const
void set_arguments(const ArgumentContainer &new_arg)
virtual int class_ID() const =0
virtual SparseTensor< double > const * get_coeffs() const
Function const * _argument(Index i) const
static void extend_hierarchy()
static void print_table()
virtual Function * multiply(Function const *LHS, Function const *RHS) const
const std::string & label_format() const
virtual void scale(double scale_factor)=0
Function(const Function &RHS)
virtual Function * poly_remainder(Function const *LHS, Function const *RHS) const
virtual bool compare(Function const *LHS, Function const *RHS) const
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
virtual bool _update_dof_IDs(const Array< Index > &before_IDs, const Array< Index > &after_IDs)
Function * plus(Function const *RHS) const
virtual void small_to_zero(double tol=TOL)=0
virtual Function * copy() const =0
EigenIndex Index
For long integer indexing:
double _arg_deval_cache(Index i) const
virtual Function * subtract(Function const *LHS, Function const *RHS) const
virtual Function * subtract_from(Function *LHS, Function const *RHS) const
virtual std::string type_name() const =0
virtual double dot(Function const *LHS, Function const *RHS) const =0
virtual void make_formula() const =0
virtual Function * add(Function const *LHS, Function const *RHS) const
Function * sym_copy_coeffs(const SymOp &op, int dependency_layer=1) const
std::string m_label_format
void set_label_format(const std::string &format)
void set_tex_formula(const std::string &new_formula)
Function * poly_remainder(Function const *RHS) const
double dot(Function const *RHS) const
static Array< Array< InnerProduct * > > inner_prod_table
void set_formula(const std::string &new_formula)
virtual bool _accept(const FunctionVisitor &visitor, BasisSet const *home_basis_ptr=NULL)=0
ArgumentContainer m_argument
virtual Function * multiply_by(Function *LHS, Function const *RHS) const
virtual double remote_deval(const DoF::RemoteHandle &dvar) const =0
Function * poly_quotient(Function const *RHS) const
std::string tex_formula() const
Function * multiply(Function const *RHS) const
void print_tex(std::ostream &stream) const
std::string m_tex_formula
virtual double leading_coefficient() const =0
std::vector< std::shared_ptr< BasisSet > > ArgumentContainer
Function * plus_in_place(Function const *RHS)
virtual double cache_deval(const DoF::RemoteHandle &dvar) const =0
virtual bool is_zero() const =0
const ArgumentContainer & argument_bases() const
bool compare(Function const *RHS) const
static Array< Array< FunctionOperation * > > operation_table
virtual Function * _apply_sym(const SymOp &op)=0
ReturnArray< SymGroupRepID > _sub_sym_reps() const
virtual Eigen::VectorXd const * get_eigen_coeffs() const
virtual double cache_eval() const =0
virtual Index num_terms() const =0
double _arg_eval_cache(Index i) const