diff --git a/examples/tower/MSSMD5O_MSSMRHN_spectrum_generator.hpp b/examples/tower/MSSMD5O_MSSMRHN_spectrum_generator.hpp index 9dda5a330..b51246f55 100644 --- a/examples/tower/MSSMD5O_MSSMRHN_spectrum_generator.hpp +++ b/examples/tower/MSSMD5O_MSSMRHN_spectrum_generator.hpp @@ -34,12 +34,12 @@ #include "MSSMD5O_MSSMRHN_two_scale_initial_guesser.hpp" +#include "composite_convergence_tester.hpp" #include "coupling_monitor.hpp" #include "error.hpp" #include "numerics2.hpp" #include "two_scale_running_precision.hpp" #include "two_scale_solver.hpp" -#include "two_scale_composite_convergence_tester.hpp" namespace flexiblesusy { @@ -156,7 +156,7 @@ void MSSMD5O_MSSMRHN_spectrum_generator::run convergence_tester_1.set_max_iterations(max_iterations); convergence_tester_2.set_max_iterations(max_iterations); } - Composite_convergence_tester convergence_tester; + Composite_convergence_tester convergence_tester; convergence_tester.add_convergence_tester(&convergence_tester_1); convergence_tester.add_convergence_tester(&convergence_tester_2); diff --git a/examples/tower/MSSMD5O_MSSMRHN_two_scale_matching.hpp b/examples/tower/MSSMD5O_MSSMRHN_two_scale_matching.hpp index db2b91985..bbece64d3 100644 --- a/examples/tower/MSSMD5O_MSSMRHN_two_scale_matching.hpp +++ b/examples/tower/MSSMD5O_MSSMRHN_two_scale_matching.hpp @@ -21,7 +21,7 @@ #include "MSSMD5O_MSSMRHN_matching.hpp" #include "MSSMD5O_input_parameters.hpp" -#include "two_scale_matching.hpp" +#include "single_scale_matching.hpp" namespace flexiblesusy { @@ -62,7 +62,7 @@ class MSSMD5O_MSSMRHN_matching { }; template<> -class MSSMD5O_MSSMRHN_matching_up : public Matching { +class MSSMD5O_MSSMRHN_matching_up : public Single_scale_matching { public: MSSMD5O_MSSMRHN_matching_up(); MSSMD5O_MSSMRHN_matching_up(const MSSMD5O_input_parameters&); @@ -79,7 +79,7 @@ class MSSMD5O_MSSMRHN_matching_up : public Matching { }; template<> -class MSSMD5O_MSSMRHN_matching_down : public Matching { +class MSSMD5O_MSSMRHN_matching_down : public Single_scale_matching { public: MSSMD5O_MSSMRHN_matching_down(); MSSMD5O_MSSMRHN_matching_down(const MSSMD5O_input_parameters&); diff --git a/src/two_scale_composite_convergence_tester.cpp b/src/composite_convergence_tester.cpp similarity index 81% rename from src/two_scale_composite_convergence_tester.cpp rename to src/composite_convergence_tester.cpp index 716f11d91..057979533 100644 --- a/src/two_scale_composite_convergence_tester.cpp +++ b/src/composite_convergence_tester.cpp @@ -16,18 +16,12 @@ // . // ==================================================================== -#include "two_scale_composite_convergence_tester.hpp" +#include "composite_convergence_tester.hpp" #include namespace flexiblesusy { -Composite_convergence_tester::Composite_convergence_tester() - : Convergence_tester() - , testers() -{ -} - -Composite_convergence_tester::~Composite_convergence_tester() +Composite_convergence_tester::~Composite_convergence_tester() { } @@ -49,7 +43,7 @@ Composite_convergence_tester::~Composite_convergence_tester() * calls of all convergence testers return true. Otherewise false is * returned. */ -bool Composite_convergence_tester::accuracy_goal_reached() +bool Composite_convergence_tester::accuracy_goal_reached() { bool precision_reached = true; @@ -61,7 +55,7 @@ bool Composite_convergence_tester::accuracy_goal_reached() return precision_reached; } -unsigned int Composite_convergence_tester::max_iterations() const +unsigned int Composite_convergence_tester::max_iterations() const { if (testers.empty()) return 0; @@ -73,13 +67,13 @@ unsigned int Composite_convergence_tester::max_iterations() const }))->max_iterations(); } -void Composite_convergence_tester::restart() +void Composite_convergence_tester::restart() { for (auto ct: testers) ct->restart(); } -void Composite_convergence_tester::add_convergence_tester(Convergence_tester* t) +void Composite_convergence_tester::add_convergence_tester(Convergence_tester* t) { if (t) testers.push_back(t); diff --git a/src/composite_convergence_tester.hpp b/src/composite_convergence_tester.hpp index b4e0b989d..93250d207 100644 --- a/src/composite_convergence_tester.hpp +++ b/src/composite_convergence_tester.hpp @@ -19,10 +19,32 @@ #ifndef COMPOSITE_CONVERGENCE_TESTER_H #define COMPOSITE_CONVERGENCE_TESTER_H +#include "convergence_tester.hpp" +#include + namespace flexiblesusy { -template -class Composite_convergence_tester; +/** + * @class Composite_convergence_tester + * @brief A composite convergence tester + * + * This class collects convergence testers that will be checked when + * Composite_convergence_tester::accuracy_goal_reached() is called. + */ + +class Composite_convergence_tester : public Convergence_tester { +public: + Composite_convergence_tester() = default; + virtual ~Composite_convergence_tester(); + + virtual bool accuracy_goal_reached() override; + virtual unsigned int max_iterations() const override; + virtual void restart() override; + void add_convergence_tester(Convergence_tester*); + +private: + std::vector testers{}; +}; } diff --git a/src/matching.hpp b/src/matching.hpp deleted file mode 100644 index a1ac15868..000000000 --- a/src/matching.hpp +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef MATCHING_H -#define MATCHING_H - -namespace flexiblesusy { - -template -class Matching; - -} - -#endif diff --git a/src/module.mk b/src/module.mk index 593ef683a..562a83c2c 100644 --- a/src/module.mk +++ b/src/module.mk @@ -10,6 +10,7 @@ LIBFLEXI_SRC := \ $(DIR)/build_info.cpp \ $(DIR)/ckm.cpp \ $(DIR)/command_line_options.cpp \ + $(DIR)/composite_convergence_tester.cpp \ $(DIR)/convergence_tester.cpp \ $(DIR)/database.cpp \ $(DIR)/dilog.cpp \ @@ -83,7 +84,6 @@ LIBFLEXI_HDR := \ $(DIR)/linalg2.hpp \ $(DIR)/logger.hpp \ $(DIR)/lowe.h \ - $(DIR)/matching.hpp \ $(DIR)/mathlink_utils.hpp \ $(DIR)/minimizer.hpp \ $(DIR)/model.hpp \ @@ -106,6 +106,7 @@ LIBFLEXI_HDR := \ $(DIR)/scan.hpp \ $(DIR)/sfermions.hpp \ $(DIR)/single_scale_constraint.hpp \ + $(DIR)/single_scale_matching.hpp \ $(DIR)/slha_io.hpp \ $(DIR)/sm_twoloophiggs.hpp \ $(DIR)/split_threeloophiggs.hpp \ @@ -128,13 +129,10 @@ LIBFLEXI_HDR := \ ifneq ($(findstring two_scale,$(SOLVERS)),) LIBFLEXI_SRC += \ - $(DIR)/two_scale_composite_convergence_tester.cpp \ $(DIR)/two_scale_running_precision.cpp \ $(DIR)/two_scale_solver.cpp LIBFLEXI_HDR += \ - $(DIR)/two_scale_composite_convergence_tester.hpp \ - $(DIR)/two_scale_matching.hpp \ $(DIR)/two_scale_running_precision.hpp \ $(DIR)/two_scale_solver.hpp endif @@ -142,14 +140,11 @@ endif ifneq ($(findstring semi_analytic,$(SOLVERS)),) LIBFLEXI_SRC += \ $(DIR)/semi_analytic_solver.cpp \ - $(DIR)/two_scale_composite_convergence_tester.cpp \ $(DIR)/two_scale_running_precision.cpp \ $(DIR)/two_scale_solver.cpp LIBFLEXI_HDR += \ $(DIR)/semi_analytic_solver.hpp \ - $(DIR)/two_scale_composite_convergence_tester.hpp \ - $(DIR)/two_scale_matching.hpp \ $(DIR)/two_scale_running_precision.hpp \ $(DIR)/two_scale_solver.hpp endif diff --git a/src/two_scale_composite_convergence_tester.hpp b/src/single_scale_matching.hpp similarity index 50% rename from src/two_scale_composite_convergence_tester.hpp rename to src/single_scale_matching.hpp index 715d7006e..1d05927ef 100644 --- a/src/two_scale_composite_convergence_tester.hpp +++ b/src/single_scale_matching.hpp @@ -16,38 +16,19 @@ // . // ==================================================================== -#ifndef TWO_SCALE_COMPOSITE_CONVERGENCE_TESTER_H -#define TWO_SCALE_COMPOSITE_CONVERGENCE_TESTER_H - -#include "composite_convergence_tester.hpp" -#include "convergence_tester.hpp" -#include +#ifndef SINGLE_SCALE_MATCHING_H +#define SINGLE_SCALE_MATCHING_H namespace flexiblesusy { -class Two_scale; - -/** - * @class Composite_convergence_tester - * @brief A composite convergence tester - * - * This class collects convergence testers that will be checked when - * Composite_convergence_tester::accuracy_goal_reached() is called. - */ +class Model; -template<> -class Composite_convergence_tester : public Convergence_tester { +class Single_scale_matching { public: - Composite_convergence_tester(); - virtual ~Composite_convergence_tester(); - - virtual bool accuracy_goal_reached() override; - virtual unsigned int max_iterations() const override; - virtual void restart() override; - void add_convergence_tester(Convergence_tester*); - -private: - std::vector testers; + virtual ~Single_scale_matching() {} + virtual void match() = 0; + virtual double get_scale() const = 0; + virtual void set_models(Model*, Model*) = 0; }; } diff --git a/src/two_scale_matching.hpp b/src/two_scale_matching.hpp deleted file mode 100644 index 82cfd9e41..000000000 --- a/src/two_scale_matching.hpp +++ /dev/null @@ -1,23 +0,0 @@ - -#ifndef TWO_SCALE_MATCHING_H -#define TWO_SCALE_MATCHING_H - -#include "matching.hpp" - -namespace flexiblesusy { - -class Model; -class Two_scale; - -template<> -class Matching { -public: - virtual ~Matching() {} - virtual void match() = 0; - virtual double get_scale() const = 0; - virtual void set_models(Model*, Model*) = 0; -}; - -} - -#endif diff --git a/src/two_scale_solver.cpp b/src/two_scale_solver.cpp index 1636ec520..f216a4eca 100644 --- a/src/two_scale_solver.cpp +++ b/src/two_scale_solver.cpp @@ -25,7 +25,7 @@ #include "logger.hpp" #include "model.hpp" #include "single_scale_constraint.hpp" -#include "two_scale_matching.hpp" +#include "single_scale_matching.hpp" #include "two_scale_running_precision.hpp" #include @@ -64,7 +64,7 @@ void RGFlow::add(Single_scale_constraint* c, Model* m) * @param m1 model 1 * @param m2 model 2 */ -void RGFlow::add(Matching* mc, Model* m1, Model* m2) +void RGFlow::add(Single_scale_matching* mc, Model* m1, Model* m2) { if (!mc) throw SetupError("matching condition pointer is NULL"); if (!m1) throw SetupError("model pointer 1 is NULL"); diff --git a/src/two_scale_solver.hpp b/src/two_scale_solver.hpp index b167ba5cb..d5d7187f4 100644 --- a/src/two_scale_solver.hpp +++ b/src/two_scale_solver.hpp @@ -32,11 +32,11 @@ namespace flexiblesusy { -template class Matching; class Convergence_tester; class Initial_guesser; class Model; class Single_scale_constraint; +class Single_scale_matching; class Two_scale; class Two_scale_running_precision; @@ -71,7 +71,7 @@ class RGFlow { /// add constraint void add(Single_scale_constraint*, Model*); /// add matching condition - void add(Matching*, Model*, Model*); + void add(Single_scale_matching*, Model*, Model*); /// get model at current scale Model* get_model() const; /// get number of used iterations @@ -117,7 +117,7 @@ class RGFlow { struct Matching_slider : public Slider { public: - Matching_slider(Model* m1_, Model* m2_, Matching* mc) + Matching_slider(Model* m1_, Model* m2_, Single_scale_matching* mc) : m1(m1_), m2(m2_), matching(mc) {} virtual ~Matching_slider() {} virtual void clear_problems() override; @@ -127,7 +127,7 @@ class RGFlow { virtual void set_precision(double) override; private: Model *m1, *m2; - Matching* matching; + Single_scale_matching* matching; }; std::vector > sliders{}; ///< sliders to be run up and down diff --git a/templates/standard_model_matching.cpp.in b/templates/standard_model_matching.cpp.in index 42212c08f..8f0a0af56 100644 --- a/templates/standard_model_matching.cpp.in +++ b/templates/standard_model_matching.cpp.in @@ -20,7 +20,7 @@ #include "@ModelName@_standard_model_matching.hpp" #include "wrappers.hpp" -#include "two_scale_matching.hpp" +#include "single_scale_matching.hpp" #include "two_loop_corrections.hpp" #include "standard_model.hpp" #include "@ModelName@_mass_eigenstates.hpp" diff --git a/templates/standard_model_two_scale_high_scale_spectrum_generator.cpp.in b/templates/standard_model_two_scale_high_scale_spectrum_generator.cpp.in index e779ab3f9..d950f8e83 100644 --- a/templates/standard_model_two_scale_high_scale_spectrum_generator.cpp.in +++ b/templates/standard_model_two_scale_high_scale_spectrum_generator.cpp.in @@ -23,8 +23,8 @@ #include "@ModelName@_two_scale_ewsb_solver.hpp" #include "@ModelName@_two_scale_initial_guesser.hpp" #include "standard_model_two_scale_convergence_tester.hpp" -#include "two_scale_composite_convergence_tester.hpp" +#include "composite_convergence_tester.hpp" #include "error.hpp" #include "lowe.h" #include "numerics2.hpp" @@ -138,7 +138,7 @@ void @ModelName@_spectrum_generator::run_except(const softsusy::QedQc this->settings.get(Spectrum_generator_settings::max_iterations)); } - Composite_convergence_tester cct; + Composite_convergence_tester cct; cct.add_convergence_tester(&model_ct); cct.add_convergence_tester(&eft_ct); diff --git a/templates/standard_model_two_scale_low_scale_spectrum_generator.cpp.in b/templates/standard_model_two_scale_low_scale_spectrum_generator.cpp.in index 0c8e01552..160132eea 100644 --- a/templates/standard_model_two_scale_low_scale_spectrum_generator.cpp.in +++ b/templates/standard_model_two_scale_low_scale_spectrum_generator.cpp.in @@ -23,8 +23,8 @@ #include "@ModelName@_two_scale_ewsb_solver.hpp" #include "@ModelName@_two_scale_initial_guesser.hpp" #include "standard_model_two_scale_convergence_tester.hpp" -#include "two_scale_composite_convergence_tester.hpp" +#include "composite_convergence_tester.hpp" #include "error.hpp" #include "lowe.h" #include "numerics2.hpp" @@ -135,7 +135,7 @@ void @ModelName@_spectrum_generator::run_except(const softsusy::QedQc this->settings.get(Spectrum_generator_settings::max_iterations)); } - Composite_convergence_tester cct; + Composite_convergence_tester cct; cct.add_convergence_tester(&model_ct); cct.add_convergence_tester(&eft_ct); diff --git a/templates/standard_model_two_scale_matching.hpp.in b/templates/standard_model_two_scale_matching.hpp.in index b881f1baa..5f2f9c5ac 100644 --- a/templates/standard_model_two_scale_matching.hpp.in +++ b/templates/standard_model_two_scale_matching.hpp.in @@ -19,7 +19,7 @@ #ifndef @ModelName@_TWO_SCALE_MATCHING_H #define @ModelName@_TWO_SCALE_MATCHING_H -#include "two_scale_matching.hpp" +#include "single_scale_matching.hpp" #include namespace flexiblesusy { @@ -36,7 +36,7 @@ template class StandardModel; } template<> -class @ModelName@_standard_model_matching_up : public Matching +class @ModelName@_standard_model_matching_up : public Single_scale_matching { public: using Scale_getter = std::function; @@ -73,7 +73,7 @@ private: }; template<> -class @ModelName@_standard_model_matching_down : public Matching +class @ModelName@_standard_model_matching_down : public Single_scale_matching { public: using Scale_getter = std::function; diff --git a/test/test_two_scale_sm_smcw_integration.cpp b/test/test_two_scale_sm_smcw_integration.cpp index 1cd313b46..f506b34c7 100644 --- a/test/test_two_scale_sm_smcw_integration.cpp +++ b/test/test_two_scale_sm_smcw_integration.cpp @@ -1,6 +1,6 @@ #include "model.hpp" #include "two_scale_solver.hpp" -#include "two_scale_matching.hpp" +#include "single_scale_matching.hpp" #include "sm_two_scale.hpp" #include "sm_two_scale_experimental_constraint.hpp" #include "smcw_two_scale.hpp" @@ -22,10 +22,10 @@ using namespace softsusy; #define YD StandardModel::YD #define YE StandardModel::YE -class Trivial_SM_SMCW_matching_condition_upwards: public Matching { +class Trivial_SM_SMCW_matching_condition_upwards: public Single_scale_matching { public: Trivial_SM_SMCW_matching_condition_upwards() - : Matching() + : Single_scale_matching() , sm(0) , smcw(0) {} @@ -52,10 +52,10 @@ class Trivial_SM_SMCW_matching_condition_upwards: public Matching { StandardModelCW* smcw; }; -class Trivial_SM_SMCW_matching_condition_downwards: public Matching { +class Trivial_SM_SMCW_matching_condition_downwards: public Single_scale_matching { public: Trivial_SM_SMCW_matching_condition_downwards() - : Matching() + : Single_scale_matching() , sm(0) , smcw(0) {} @@ -82,10 +82,10 @@ class Trivial_SM_SMCW_matching_condition_downwards: public Matching { StandardModelCW* smcw; }; -class Dynamic_SM_SMCW_matching_condition_downwards: public Matching { +class Dynamic_SM_SMCW_matching_condition_downwards: public Single_scale_matching { public: Dynamic_SM_SMCW_matching_condition_downwards() - : Matching() + : Single_scale_matching() , sm(0) , smcw(0) , scale(3000) // initial guess @@ -121,10 +121,10 @@ class Dynamic_SM_SMCW_matching_condition_downwards: public Matching { double scale; ///< dynamic matching scale }; -class Dynamic_SM_SMCW_matching_condition_upwards: public Matching { +class Dynamic_SM_SMCW_matching_condition_upwards: public Single_scale_matching { public: Dynamic_SM_SMCW_matching_condition_upwards() - : Matching() + : Single_scale_matching() , sm(0) , smcw(0) , scale(3000) // initial guess diff --git a/test/test_two_scale_solver.cpp b/test/test_two_scale_solver.cpp index ac8ce06a3..51b138b5f 100644 --- a/test/test_two_scale_solver.cpp +++ b/test/test_two_scale_solver.cpp @@ -1,8 +1,8 @@ #include "convergence_tester.hpp" #include "model.hpp" #include "single_scale_constraint.hpp" +#include "single_scale_matching.hpp" #include "two_scale_solver.hpp" -#include "two_scale_matching.hpp" #include "linalg.h" #include "error.hpp" @@ -33,7 +33,7 @@ class Static_model: public Model { DoubleVector parameters; }; -class Trivial_matching_condition: public Matching { +class Trivial_matching_condition: public Single_scale_matching { public: Trivial_matching_condition(double scale_ = 100.) : mLow(0) @@ -94,7 +94,7 @@ class Counting_constraint : public Single_scale_constraint { unsigned number_of_apply_calls; }; -class Counting_matching_condition: public Matching { +class Counting_matching_condition: public Single_scale_matching { public: Counting_matching_condition(double scale_) : scale(scale_)