26 if (alpha <= 0.5 || alpha >= 0.75) {
28 "alpha must be between 0.5 and 0.75");
33 double alpha_,
double E_)
38 if (alpha <= 0.5 || alpha >= 0.75) {
40 "alpha must be between 0.5 and 0.75");
45 "E must be positive");
50 const Eigen::VectorXd& coords)
const 52 if (coords.size() != 1) {
53 throw Setup_error(
"Restricted_quartic_potential::partial: " 54 "number of coordinates must be one");
61 const Eigen::VectorXd& coords,
int i)
const 63 if (coords.size() != 1) {
64 throw Setup_error(
"Restricted_quartic_potential::partial: " 65 "number of coordinates must be one");
70 i,
"Restricted_quartic_potential::partial: invalid field index " 80 if (coords.size() != 1) {
81 throw Setup_error(
"Restricted_quartic_potential::partial: " 82 "number of coordinates must be one");
87 i,
"Restricted_quartic_potential::partial: invalid field index " 93 j,
"Restricted_quartic_potential::partial: invalid field index " 104 return 0.5 * (3. - 4. *
alpha) *
E * phip * phip
105 -
E * phip * phip * phip
106 +
alpha *
E * phip * phip * phip * phip
113 return (3. - 4. *
alpha) *
E * phip - 3. *
E * phip * phip
114 + 4. *
alpha *
E * phip * phip * phip;
120 return (3. - 4. *
alpha) *
E - 6. *
E * phip
121 + 12. *
alpha *
E * phip * phip;
virtual double operator()(const Eigen::VectorXd &) const override
Evaluate potential at point.
Restricted_quartic_potential()=default
double second_deriv(double) const
double get_global_minimum_location() const
double first_deriv(double) const
virtual double partial(const Eigen::VectorXd &, int) const override
Partial derivative WRT coordinate i at a point.
double get_local_maximum_location() const
Exception indicating out of bounds access error.
double get_local_minimum_location() const
Exception indicating general setup error.