25 const Eigen::VectorXd& coords)
const 27 if (coords.size() != 1) {
28 throw Setup_error(
"Logarithmic_potential::partial: " 29 "number of coordinates must be one");
35 const Eigen::VectorXd& coords,
int i)
const 37 if (coords.size() != 1) {
38 throw Setup_error(
"Logarithmic_potential::partial: " 39 "number of coordinates must be one");
44 i,
"Logarithmic_potential::partial: invalid field index " 52 const Eigen::VectorXd& coords,
int i,
int j)
const 54 if (coords.size() != 1) {
55 throw Setup_error(
"Logarithmic_potential::partial: " 56 "number of coordinates must be one");
61 i,
"Logarithmic_potential::partial: invalid field index " 67 j,
"Logarithmic_potential::partial: invalid field index " 78 if (
Abs(phip) < std::numeric_limits<double>::min()) {
82 return 0.5 *
m *
m * phip * phip * (1. -
Log(phip * phip / (
w *
w)));
89 if (
Abs(phip) < std::numeric_limits<double>::min()) {
93 return -
m *
m * phip *
Log(phip * phip / (
w *
w));
100 if (
Abs(phip) < std::numeric_limits<double>::min()) {
104 return -
m *
m * (2. +
Log(phip * phip / (
w *
w)));
114 const double phip =
Abs(
w);
121 const double phip =
w *
Exp(-0.5 *
m *
m * r *r + 2.);
126 const Eigen::VectorXd& rho_values)
const 128 const auto n_grid_points = rho_values.size();
129 Eigen::MatrixXd field_profile(Eigen::MatrixXd::Zero(n_grid_points, 1));
130 for (
int i = 0; i < n_grid_points; ++i) {
139 return 0.5 * Pi * Pi *
Exp(4.) *
w *
w / (
m *
m);
virtual double operator()(const Eigen::VectorXd &) const override
Evaluate potential at point.
double second_deriv(double) const
double first_deriv(double) const
double get_bounce_solution_at(double) const
virtual double partial(const Eigen::VectorXd &, int) const override
Partial derivative WRT coordinate i at a point.
double get_local_minimum_location() const
double get_action() const
Exception indicating out of bounds access error.
Field_profiles get_profile(const Eigen::VectorXd &) const
Exception indicating general setup error.
double get_local_maximum_location() const
Discretized set of field profiles.