flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
coupling_monitor.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
19#ifndef COUPLING_MONITOR_H
20#define COUPLING_MONITOR_H
21
22#include <vector>
23#include <functional>
24#include <string>
25
26#include <Eigen/Core>
27
28namespace flexiblesusy {
29
35public:
37 using Data_getter = std::function<Eigen::ArrayXd(double)>;
39 using Tuple = std::pair<double, Eigen::ArrayXd>;
40
41 Coupling_monitor(const Data_getter&, const std::vector<std::string>&);
42
44 void run(double, double, int number_of_steps = 20, bool include_endpoint = false);
46 Tuple get_max_scale() const;
48 void clear();
50 void write_to_file(const std::string&, bool overwrite = true) const;
51
52private:
53 std::vector<Tuple> couplings{};
55 std::vector<std::string> parameter_names{};
56
58 void write_parameter_names_line(std::ostream&) const;
60 void write_comment_line(std::ostream&) const;
61};
62
63} // namespace flexiblesusy
64
65#endif
records model parameters at different scales
void write_to_file(const std::string &, bool overwrite=true) const
write couplings to file
std::function< Eigen::ArrayXd(double)> Data_getter
function to return parameter values at given scale
void write_parameter_names_line(std::ostream &) const
write line with parameter names
void run(double, double, int number_of_steps=20, bool include_endpoint=false)
get couplings at all scales
std::vector< Tuple > couplings
all couplings at all scales
std::pair< double, Eigen::ArrayXd > Tuple
tuple of scale and couplings
Tuple get_max_scale() const
get maximum scale
Coupling_monitor(const Data_getter &, const std::vector< std::string > &)
void clear()
delete all saved couplings
std::vector< std::string > parameter_names
parameter names
Data_getter data_getter
returns parameters at given scale
void write_comment_line(std::ostream &) const
write a comment line