18 #ifndef BUBBLEPROFILER_POTENTIAL_HPP_INCLUDED 19 #define BUBBLEPROFILER_POTENTIAL_HPP_INCLUDED 48 virtual double operator()(
const Eigen::VectorXd& coords)
const = 0;
56 virtual double partial(
const Eigen::VectorXd& coords,
int i)
const = 0;
65 virtual double partial(
const Eigen::VectorXd& coords,
int i,
int j)
const = 0;
virtual ~Potential()=default
virtual void add_constant_term(double offset)=0
Add a constant offset to the potential.
virtual double partial(const Eigen::VectorXd &coords, int i) const =0
Partial derivative WRT coordinate i at a point.
virtual double operator()(const Eigen::VectorXd &coords) const =0
Evaluate potential at point.
virtual Potential * clone() const =0
Subclasses must implement a clone method.
virtual void apply_basis_change(const Eigen::MatrixXd &cob_matrix)=0
Apply a change of basis matrix.
virtual std::size_t get_number_of_fields() const =0
Abstract base class for a generic potential.
virtual void translate_origin(const Eigen::VectorXd &translation)=0
Shift the location of the origin by a specified vector.