25 double a_,
double epsilon_)
31 throw Setup_error(
"Thin_wall_potential: lambda must be positive");
34 const bool can_tunnel =
38 "Thin_wall_potential: no barrier exists between minima");
43 const Eigen::VectorXd& coords)
const 45 if (coords.size() != 1) {
47 "number of coordinates must be one");
54 const Eigen::VectorXd& coords,
int i)
const 56 if (coords.size() != 1) {
58 "number of coordinates must be one");
63 i,
"Thin_wall_potential::partial: invalid field index " 71 const Eigen::VectorXd& coords,
int i,
int j)
const 73 if (coords.size() != 1) {
75 "number of coordinates must be one");
80 i,
"Thin_wall_potential::partial: invalid field index " 86 j,
"Thin_wall_potential::partial: invalid field index " 97 return 0.125 *
lambda * (phip * phip -
a *
a) * (phip * phip -
a *
a)
105 return 0.5 *
lambda * phip * phip * phip - 0.5 *
lambda *
a *
a * phip
113 return 0.5 *
lambda * (3. * phip * phip -
a *
a);
127 const double theta =
ArcSin(x) / 3.;
129 const double phip1 = 2. *
Abs(
a) *
Sin(theta + 2. * Pi / 3.)
131 const double phip2 = 2. *
Abs(
a) *
Sin(theta + 4. * Pi / 3.)
137 return (
operator()(phi1) >
operator()(phi2) ? phi1 : phi2);
151 const double theta =
ArcSin(x) / 3.;
153 const double phip = 2. *
Abs(
a) *
Sin(theta) /
Sqrt(3);
169 const double theta =
ArcSin(x) / 3.;
171 const double phip1 = 2. *
Abs(
a) *
Sin(theta + 2. * Pi / 3.)
173 const double phip2 = 2. *
Abs(
a) *
Sin(theta + 4. * Pi / 3.)
179 return (
operator()(phi1) <=
operator()(phi2) ? phi1 : phi2);
192 constexpr
double pisq = boost::math::double_constants::pi
193 * boost::math::double_constants::pi;
double get_local_minimum_location() const
returns the location of the local minimum
virtual double partial(const Eigen::VectorXd &, int) const override
Partial derivative WRT coordinate i at a point.
double first_deriv(double) const
evaluates the first derivative of the potential
virtual double operator()(const Eigen::VectorXd &) const override
Evaluate potential at point.
Thin_wall_potential()=default
Exception indicating out of bounds access error.
double get_thin_wall_action() const
returns the approximate action in the thin-wall approximation
double second_deriv(double) const
evaluates the second derivative of the potential
Exception indicating general setup error.
double get_local_maximum_location() const
returns the location of the local maximum
double get_global_minimum_location() const
returns the location of the global minimum