|
Go to the documentation of this file.
47 if (!c) throw SetupError( "constraint pointer is NULL");
48 if (!m) throw SetupError( "model pointer is NULL");
49 sliders.push_back(std::make_shared<Constraint_slider>(m, c));
63 if (! mc) throw SetupError( "matching condition pointer is NULL");
64 if (!m1) throw SetupError( "model pointer 1 is NULL");
65 if (!m2) throw SetupError( "model pointer 2 is NULL");
66 mc->set_models(m1, m2);
67 sliders.push_back(std::make_shared<Matching_slider>(m1, m2, mc));
83 const int max_iterations = get_max_iterations();
84 if (sliders.empty() || max_iterations == 0)
90 bool accuracy_reached = false;
92 while (iteration < max_iterations && !accuracy_reached) {
93 update_running_precision();
96 accuracy_reached = accuracy_goal_reached();
100 if (!accuracy_reached)
103 VERBOSE_MSG( "convergence reached after " << iteration << " iterations");
111 if (!convergence_tester) {
112 throw SetupError( "RGFlow<Two_scale>::Error: convergence tester must "
121 for ( auto& s: sliders)
132 initial_guesser->guess();
137 VERBOSE_MSG( "> running all models (iteration " << iteration << ") ...");
139 for ( auto& s: sliders) {
140 s->set_precision(get_precision());
154 return running_precision;
163 if (running_precision_calculator)
164 running_precision = running_precision_calculator->get_precision(iteration);
173 return convergence_tester->accuracy_goal_reached();
183 convergence_tester = convergence_tester_;
188 initial_guesser = ig;
198 running_precision_calculator = rp;
216 return convergence_tester->max_iterations();
227 const auto sorted_sliders = sort_sliders();
229 auto it = std::lower_bound(sorted_sliders.begin(), sorted_sliders.end(),
231 []( const std::shared_ptr<Slider>& s, double scale)
232 { return s->get_scale() < scale; });
234 if (it == sorted_sliders.end())
237 return (*it)->get_model();
246 return get_model(scale);
261 convergence_tester = nullptr;
262 initial_guesser = nullptr;
263 running_precision_calculator = nullptr;
264 running_precision = 1.0e-3;
275 std::vector<std::shared_ptr<Slider> > sorted_sliders(sliders);
277 std::sort(sorted_sliders.begin(), sorted_sliders.end(),
278 []( const std::shared_ptr<Slider>& s1, const std::shared_ptr<Slider>& s2)
279 { return s1->get_scale() < s2->get_scale(); });
281 return sorted_sliders;
293 Model* model = get_model(scale_);
302 model->clear_problems();
310 return constraint->get_scale();
314 VERBOSE_MSG( "> \trunning " << model->name() << " to scale " << constraint->get_scale() << " GeV");
315 model->run_to(constraint->get_scale());
316 VERBOSE_MSG( "> \tapplying " << constraint->name());
321 model->set_precision(p);
325 m1->clear_problems();
326 m2->clear_problems();
334 return matching->get_scale();
338 VERBOSE_MSG( "> \trunning " << m1->name() << " to scale " << matching->get_scale() << " GeV");
339 m1->run_to(matching->get_scale());
340 VERBOSE_MSG( "> \trunning " << m2->name() << " to scale " << matching->get_scale() << " GeV");
341 m2->run_to(matching->get_scale());
342 VERBOSE_MSG( "> \tmatching " << m1->name() << " -> " << m2->name());
347 m1->set_precision(p);
348 m2->set_precision(p);
virtual void run_to(double, double eps=-1.0)=0
No convergence while solving the RGEs.
Spectrum generator was not setup correctly.
contains the definition of the RGFlow<Two_scale> class
|