flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
betafunction.hpp
Go to the documentation of this file.
1// ====================================================================
2// This file is part of FlexibleSUSY.
3//
4// FlexibleSUSY is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published
6// by the Free Software Foundation, either version 3 of the License,
7// or (at your option) any later version.
8//
9// FlexibleSUSY is distributed in the hope that it will be useful, but
10// WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with FlexibleSUSY. If not, see
16// <http://www.gnu.org/licenses/>.
17// ====================================================================
18
24#ifndef BETAFUNCTION_H
25#define BETAFUNCTION_H
26
27#include <Eigen/Core>
28
29namespace flexiblesusy {
30
42public:
43 Beta_function() = default;
44 Beta_function(const Beta_function&) = default;
46 virtual ~Beta_function() = default;
49
50 void set_scale(double s) { scale = s; }
51 void set_number_of_parameters(int pars) { num_pars = pars; }
52 void set_loops(int l) { loops = l; }
53 void set_thresholds(int t) { thresholds = t; }
54 void set_zero_threshold(double t) { zero_threshold = t; }
55
56 double get_scale() const { return scale; }
57 int get_number_of_parameters() const { return num_pars; }
58 int get_loops() const { return loops; }
59 int get_thresholds() const { return thresholds; }
60 double get_zero_threshold() const { return zero_threshold; }
61
62 void reset();
63
64 virtual Eigen::ArrayXd get() const = 0;
65 virtual void set(const Eigen::ArrayXd&) = 0;
66 virtual Eigen::ArrayXd beta() const = 0;
67
68 virtual void run(double, double, double eps = -1.0);
69 virtual void run_to(double, double eps = -1.0);
70
71private:
72 int num_pars{0};
73 int loops{0};
74 int thresholds{0};
75 double scale{0.};
76 double tolerance{1.e-4};
77 double min_tolerance{1.e-11};
78 double zero_threshold{1.e-11};
79
80 Eigen::ArrayXd derivatives(double, const Eigen::ArrayXd&);
81 double get_tolerance(double eps) const;
82};
83
84} // namespace flexiblesusy
85
86#endif
beta function interface
void set_zero_threshold(double t)
int num_pars
number of parameters
Beta_function(Beta_function &&)=default
int loops
to what loop order does the RG evolution run
double get_tolerance(double eps) const
Beta_function & operator=(Beta_function &&)=default
virtual ~Beta_function()=default
virtual void run(double, double, double eps=-1.0)
virtual void run_to(double, double eps=-1.0)
double zero_threshold
threshold for treating values as zero
Eigen::ArrayXd derivatives(double, const Eigen::ArrayXd &)
double min_tolerance
minimum tolerance allowed
Beta_function & operator=(const Beta_function &)=default
double scale
current renormalization scale
void set_number_of_parameters(int pars)
int thresholds
threshold correction loop order
virtual Eigen::ArrayXd beta() const =0
double get_zero_threshold() const
virtual void set(const Eigen::ArrayXd &)=0
Beta_function(const Beta_function &)=default
int get_number_of_parameters() const
virtual Eigen::ArrayXd get() const =0
double tolerance
running tolerance