29 throw Setup_error(
"Generalized_fubini_potential: u must be positive");
32 throw Setup_error(
"Generalized_fubini_potential: v must be positive");
36 "Generalized_fubini_potential: m must be greater than 1");
41 const Eigen::VectorXd& coords)
const 43 if (coords.size() != 1) {
44 throw Setup_error(
"Generalized_fubini_potential::partial: " 45 "number of coordinates must be one");
52 const Eigen::VectorXd& coords,
int i)
const 54 if (coords.size() != 1) {
55 throw Setup_error(
"Generalized_fubini_potential::partial: " 56 "number of coordinates must be one");
61 i,
"Generalized_fubini_potential::partial: invalid field index " 69 const Eigen::VectorXd& coords,
int i,
int j)
const 71 if (coords.size() != 1) {
72 throw Setup_error(
"Generalized_fubini_potential::partial: " 73 "number of coordinates must be one");
78 i,
"Generalized_fubini_potential::partial: invalid field index " 84 j,
"Generalized_fubini_potential::partial: invalid field index " 95 const auto pow1 = 2. + 1. /
m;
96 const auto pow2 = 2. + 2. /
m;
98 return (4. *
u *
m *
m * (
m - 1.) * std::pow(phip, pow1)) /
99 (2. *
m + 1) - 2. *
u *
v *
m *
m * std::pow(phip, pow2);
106 const auto pow1 = 1. + 1. /
m;
107 const auto pow2 = 1. + 2. /
m;
109 return 4. *
u *
m * (
m - 1.) * std::pow(phip, pow1)
110 - 4. *
u *
v *
m * (
m + 1.) * std::pow(phip, pow2);
117 const auto pow1 = 1. /
m;
118 const auto pow2 = 2. /
m;
120 return 4. *
u * (
m *
m - 1.) * std::pow(phip, pow1)
121 - 4. *
u *
v * (
m *
m + 3. *
m + 2.) * std::pow(phip, pow2);
131 const double phip = std::pow(
m - 1.,
m) / std::pow(
v * (
m + 1.),
m);
138 const double phip = 1. / std::pow(
u * r * r +
v,
m);
143 const Eigen::VectorXd& rho_values)
const 145 const auto n_grid_points = rho_values.size();
146 Eigen::MatrixXd field_profile(Eigen::MatrixXd::Zero(n_grid_points, 1));
147 for (
int i = 0; i < n_grid_points; ++i) {
156 return m * Pi * Pi / ((4. *
m *
m - 1.) *
u * std::pow(
v, 2. *
m - 1.));
double get_action() const
Generalized_fubini_potential()=default
double second_deriv(double) const
double get_bounce_solution_at(double) const
double get_local_maximum_location() const
virtual double partial(const Eigen::VectorXd &, int) const override
Partial derivative WRT coordinate i at a point.
Exception indicating out of bounds access error.
virtual double operator()(const Eigen::VectorXd &) const override
Evaluate potential at point.
double first_deriv(double) const
double get_local_minimum_location() const
Exception indicating general setup error.
Discretized set of field profiles.
Field_profiles get_profile(const Eigen::VectorXd &) const