18 #ifndef BUBBLEPROFILER_GAUSSIAN_POTENTIAL_HPP_INCLUDED 19 #define BUBBLEPROFILER_GAUSSIAN_POTENTIAL_HPP_INCLUDED 30 #include <ginac/ginac.h> 74 virtual double operator()(
const Eigen::VectorXd& coords)
const override;
75 virtual double partial(
const Eigen::VectorXd& coords,
int i)
const override;
76 virtual double partial(
const Eigen::VectorXd& coords,
int i,
int j)
const override;
94 double gaussian(
const Eigen::VectorXd&,
const Eigen::VectorXd&)
const;
95 double gaussian_deriv(
const Eigen::VectorXd&,
const Eigen::VectorXd&,
virtual ~Gaussian_potential()=default
virtual void apply_basis_change(const Eigen::MatrixXd &) override
Apply a change of basis matrix.
virtual double operator()(const Eigen::VectorXd &coords) const override
Evaluate potential at point.
Gaussian_potential * clone() const
return a copy of this potential
Eigen::VectorXd origin_translation
double gaussian_deriv(const Eigen::VectorXd &, const Eigen::VectorXd &, int i) const
virtual double partial(const Eigen::VectorXd &coords, int i) const override
Partial derivative WRT coordinate i at a point.
Potential composed of two multivariate Gaussian functions.
virtual void add_constant_term(double) override
Add a constant offset to the potential.
Gaussian_potential(double gamma_, double lambda_, std::size_t n_fields_)
instantiate a new Gaussian potential
double gaussian(const Eigen::VectorXd &, const Eigen::VectorXd &) const
Abstract base class for a generic potential.
Eigen::MatrixXd basis_transform
virtual std::size_t get_number_of_fields() const override
double gaussian_deriv2(const Eigen::VectorXd &, const Eigen::VectorXd &, int i, int j) const
virtual void translate_origin(const Eigen::VectorXd &) override
Shift the location of the origin by a specified vector.