48 return visitor.
visit(*
this, home_basis_ptr);
59 std::stringstream tformula, ttex;
91 if(var_ind.size() > 1) {
95 for(
Index i = 0; i < var_ind.size(); i++) {
121 if(var_ind.size() > 1) {
135 std::cerr <<
"CRITICAL ERROR: In OccupantFunction::register_remotes(), dof().ID() = " <<
dof().
ID() <<
" is out of bounds.\n"
151 if(
dof().is_locked())
return false;
155 if(ID_ind < after_IDs.
size()) {
271 std::cerr <<
"WARNING: Attempting to reference invalid symmetry matrix in OccupantFunction::apply_sym! Continuing...\n";
296 std::cerr <<
"CRITICAL ERROR: OccupantFunction::remote_deval() is not implemented! Exiting...\n";
307 if(which_state < var_states.
size())
310 std::cerr <<
"CRITICAL ERROR: In OccupantFunction::eval(), DoF ID of this OccupantFunction (" <<
dof().
ID() <<
") is not among specified IDs: " << dof_IDs <<
"\n"
static int get_class_ID()
void set_ID(Index new_ID)
virtual bool visit(Variable &host, BasisSet const *bset_ptr) const
bool almost_zero(const T &val, double tol=TOL)
If T is not integral, use std::abs(val) < tol;.
Function * _apply_sym(const SymOp &op)
double leading_coefficient() const
void make_formula() const
const int * i_ptr() const
bool compare(const OccupantFunction *RHS) const
void push_back(const T &toPush)
virtual jsonParser & to_json(jsonParser &json) const
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
void scale(double scale_factor)
bool is_identity() const
Returns true if SymGroupRepID corresponds to an Identity representation.
const std::string & type_name() const
double eval(const Array< Index > &dof_IDs, const Array< Index > &var_states) const
SymGroupRepID m_sym_rep_ID
Eigen::MatrixXd const * get_matrix_rep(SymGroupRepID _rep_ID) const
get pointer to matrix representation corresponding to rep_ID
Eigen::MatrixXd::Index EigenIndex
For integer indexing:
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
bool compare(Function const *LHS, Function const *RHS) const
EigenIndex Index
For long integer indexing:
virtual Index size() const =0
bool _accept(const FunctionVisitor &visitor, BasisSet const *home_basis_ptr=NULL)
std::string irrational_to_tex_string(double val, int lim, int max_pow=2)
Index find(const T &test_elem) const
Eigen::VectorXd const * get_eigen_coeffs() const
void small_to_zero(double tol=TOL)
std::string m_tex_formula
double remote_eval() const
int register_remotes(const std::string &dof_name, const Array< DoF::RemoteHandle > &remote_handles)
static Array< Array< FunctionOperation * > > operation_table
Eigen::VectorXd m_eval_table
int const * remote_ptr() const
bool _update_dof_IDs(const Array< Index > &before_IDs, const Array< Index > &after_IDs)
void register_remote(const RemoteHandle &handle)
double remote_deval(const DoF::RemoteHandle &dvar) const
jsonParser & to_json(jsonParser &json) const
bool almost_equal(const GenericCluster< CoordType > &LHS, const GenericCluster< CoordType > &RHS, double tol)
const DiscreteDoF & dof() const
static void fill_dispatch_table()
double get_coefficient(Index i) const
std::string type_name() const
bool valid_index(Index i)