flexiblesusy is hosted by Hepforge, IPPP Durham
FlexibleSUSY
flexiblesusy::RGFlow< Semi_analytic > Class Reference

Boundary condition solver (semi-analytic algorithm) More...

#include <semi_analytic_solver.hpp>

Collaboration diagram for flexiblesusy::RGFlow< Semi_analytic >:
Collaboration graph

Classes

struct  Constraint_slider
 
struct  Matching_slider
 
struct  Slider
 

Public Member Functions

void add_inner (Single_scale_constraint *, Model *)
 add inner constraint More...
 
void add_inner (Single_scale_matching *, Model *, Model *)
 add inner matching condition More...
 
void add_outer (Single_scale_constraint *, Model *)
 add outer constraint More...
 
void add_outer (Single_scale_matching *, Model *, Model *)
 add outer matching condition More...
 
Modelget_model () const
 get model at current scale More...
 
int number_of_iterations_done () const
 get number of used iterations More...
 
RGFlowoperator= (const RGFlow &)=delete
 
RGFlowoperator= (RGFlow &&)=delete
 
void reset ()
 clear all internal data More...
 
 RGFlow ()=default
 
 RGFlow (const RGFlow &)=delete
 
 RGFlow (RGFlow &&)=delete
 
void run_to (double)
 run model at given scale to given scale More...
 
void set_initial_guesser (Initial_guesser *)
 set initial guesser More...
 
void set_inner_convergence_tester (Convergence_tester *)
 set convergence tester for inner two-scale iteration More...
 
void set_outer_convergence_tester (Convergence_tester *)
 set convergence tester for overall iteration More...
 
void set_running_precision (Two_scale_running_precision *)
 set running precision calculator More...
 
void solve ()
 solves the boundary value problem More...
 
 ~RGFlow ()=default
 

Private Member Functions

bool accuracy_goal_reached () const
 check if accuracy goal is reached More...
 
void check_setup () const
 check the setup More...
 
void clear_problems ()
 clear model problems More...
 
int get_max_iterations () const
 returns max. number of iterations More...
 
Modelget_model (double) const
 returns model at given scale More...
 
double get_precision ()
 returns running precision More...
 
void initial_guess ()
 initial guess More...
 
void prepare_inner_iteration (RGFlow< Two_scale > &solver) const
 set-up inner two-scale iteration More...
 
void run_outer_sliders ()
 run all outer iteration sliders More...
 
std::vector< std::shared_ptr< Slider > > sort_sliders (const std::vector< std::shared_ptr< Slider > > &) const
 sort the outer sliders w.r.t. scale More...
 
void update_running_precision ()
 update the RG running precision More...
 

Private Attributes

Initial_guesserinitial_guesser {nullptr}
 does initial guess More...
 
Convergence_testerinner_convergence_tester {nullptr}
 the convergence tester for the two-scale iteration More...
 
std::vector< std::shared_ptr< Slider > > inner_sliders {}
 sliders to be used in the inner iteration More...
 
int iteration {0}
 iteration number (starting at 0) More...
 
Convergence_testerouter_convergence_tester {nullptr}
 the convergence tester for the main iteration More...
 
std::vector< std::shared_ptr< Slider > > outer_sliders {}
 sliders to be used in the outer iteration More...
 
double running_precision {1.0e-3}
 RG running precision. More...
 
Two_scale_running_precisionrunning_precision_calculator {nullptr}
 RG running precision calculator. More...
 
double scale {0.}
 current scale More...
 

Detailed Description

Boundary condition solver (semi-analytic algorithm)

This boundary condition solver uses the semi-analytic algorithm to solve the boundary value problem in two stages. Firstly, a two-scale iteration is performed to solve for a subset of the parameters. Once these are determined, semi-analytic solutions for the remaining parameters are calculated at the relevant scales.

Definition at line 57 of file semi_analytic_solver.hpp.

Constructor & Destructor Documentation

◆ RGFlow() [1/3]

flexiblesusy::RGFlow< Semi_analytic >::RGFlow ( )
default

Create empty semi-analytic solver The RG running precision is set to the default value of 0.001

◆ RGFlow() [2/3]

flexiblesusy::RGFlow< Semi_analytic >::RGFlow ( const RGFlow< Semi_analytic > &  )
delete

◆ RGFlow() [3/3]

flexiblesusy::RGFlow< Semi_analytic >::RGFlow ( RGFlow< Semi_analytic > &&  )
delete

◆ ~RGFlow()

flexiblesusy::RGFlow< Semi_analytic >::~RGFlow ( )
default

Member Function Documentation

◆ accuracy_goal_reached()

bool flexiblesusy::RGFlow< Semi_analytic >::accuracy_goal_reached ( ) const
private

check if accuracy goal is reached

Returns the value returned by the accuracy_goal_reached() method of the convergence tester.

Definition at line 241 of file semi_analytic_solver.cpp.

◆ add_inner() [1/2]

void flexiblesusy::RGFlow< Semi_analytic >::add_inner ( Single_scale_constraint c,
Model m 
)

add inner constraint

Add a model constraint for the inner iteration

Parameters
cconstraint
mmodel

Definition at line 46 of file semi_analytic_solver.cpp.

◆ add_inner() [2/2]

void flexiblesusy::RGFlow< Semi_analytic >::add_inner ( Single_scale_matching mc,
Model m1,
Model m2 
)

add inner matching condition

Adds a matching condition for the inner iteration. This matching condition matches the two models by calling match(). The two models are passed to the set_models() function of the matching condition.

Parameters
mcmatching condition
m1model 1
m2model 2

Definition at line 63 of file semi_analytic_solver.cpp.

References flexiblesusy::mc.

◆ add_outer() [1/2]

void flexiblesusy::RGFlow< Semi_analytic >::add_outer ( Single_scale_constraint c,
Model m 
)

add outer constraint

Add a model constraint for the outer iteration

Parameters
cconstraint
mmodel

Definition at line 78 of file semi_analytic_solver.cpp.

◆ add_outer() [2/2]

void flexiblesusy::RGFlow< Semi_analytic >::add_outer ( Single_scale_matching mc,
Model m1,
Model m2 
)

add outer matching condition

Adds a matching condition for the outer iteration. This matching condition matches the two models by calling match(). The two models are passed to the set_models() function of the matching condition.

Parameters
mcmatching condition
m1model 1
m2model 2

Definition at line 95 of file semi_analytic_solver.cpp.

References flexiblesusy::mc.

◆ check_setup()

void flexiblesusy::RGFlow< Semi_analytic >::check_setup ( ) const
private

check the setup

Sanity checks the models and boundary conditions

Definition at line 158 of file semi_analytic_solver.cpp.

◆ clear_problems()

void flexiblesusy::RGFlow< Semi_analytic >::clear_problems ( )
private

clear model problems

Definition at line 170 of file semi_analytic_solver.cpp.

References VERBOSE_MSG.

◆ get_max_iterations()

int flexiblesusy::RGFlow< Semi_analytic >::get_max_iterations ( ) const
private

returns max. number of iterations

Returns the maximum number of iterations set in the outer convergence tester.

Definition at line 294 of file semi_analytic_solver.cpp.

◆ get_model() [1/2]

Model * flexiblesusy::RGFlow< Semi_analytic >::get_model ( ) const

get model at current scale

Returns the pointer to the model at the current scale.

Returns
model at current scale

Definition at line 332 of file semi_analytic_solver.cpp.

◆ get_model() [2/2]

Model * flexiblesusy::RGFlow< Semi_analytic >::get_model ( double  scale) const
private

returns model at given scale

Returns the pointer to the model at the given scale.

Parameters
scalescale for which corresponding model to return
Returns
model at scale

Definition at line 305 of file semi_analytic_solver.cpp.

◆ get_precision()

double flexiblesusy::RGFlow< Semi_analytic >::get_precision ( )
private

returns running precision

Returns the precision of the RG running.

Returns
RG running precision

Definition at line 222 of file semi_analytic_solver.cpp.

◆ initial_guess()

void flexiblesusy::RGFlow< Semi_analytic >::initial_guess ( )
private

initial guess

Does the initial guess by calling the guess() method of the initial guesser (if given).

Definition at line 199 of file semi_analytic_solver.cpp.

◆ number_of_iterations_done()

int flexiblesusy::RGFlow< Semi_analytic >::number_of_iterations_done ( ) const

get number of used iterations

Returns the number of performed iterations

Returns
number of performed iterations

Definition at line 285 of file semi_analytic_solver.cpp.

◆ operator=() [1/2]

RGFlow & flexiblesusy::RGFlow< Semi_analytic >::operator= ( const RGFlow< Semi_analytic > &  )
delete

◆ operator=() [2/2]

RGFlow & flexiblesusy::RGFlow< Semi_analytic >::operator= ( RGFlow< Semi_analytic > &&  )
delete

◆ prepare_inner_iteration()

void flexiblesusy::RGFlow< Semi_analytic >::prepare_inner_iteration ( RGFlow< Two_scale > &  solver) const
private

set-up inner two-scale iteration

Initializes the two-scale solver used in the inner iteration.

Definition at line 181 of file semi_analytic_solver.cpp.

References flexiblesusy::RGFlow< Two_scale >::reset(), flexiblesusy::RGFlow< Two_scale >::set_convergence_tester(), and flexiblesusy::RGFlow< Two_scale >::set_running_precision().

◆ reset()

void flexiblesusy::RGFlow< Semi_analytic >::reset ( )

clear all internal data

resets the solver to the initial condition

The pointers to the models, matching conditions, convergence testers, initial guesser, and running precision calculator are set to zero. The running precision is set to the default value 0.001.

Definition at line 344 of file semi_analytic_solver.cpp.

◆ run_outer_sliders()

void flexiblesusy::RGFlow< Semi_analytic >::run_outer_sliders ( )
private

run all outer iteration sliders

Definition at line 205 of file semi_analytic_solver.cpp.

References VERBOSE_MSG.

◆ run_to()

void flexiblesusy::RGFlow< Semi_analytic >::run_to ( double  scale_)

run model at given scale to given scale

Run the model tower to the given scale.

Parameters
scale_scale to run to

Definition at line 379 of file semi_analytic_solver.cpp.

References flexiblesusy::Model::run_to().

◆ set_initial_guesser()

void flexiblesusy::RGFlow< Semi_analytic >::set_initial_guesser ( Initial_guesser ig)

set initial guesser

Definition at line 266 of file semi_analytic_solver.cpp.

◆ set_inner_convergence_tester()

void flexiblesusy::RGFlow< Semi_analytic >::set_inner_convergence_tester ( Convergence_tester convergence_tester_)

set convergence tester for inner two-scale iteration

Set the convergence tester to be used during the inner iteration.

Parameters
convergence_tester_the convergence tester to be used

Definition at line 251 of file semi_analytic_solver.cpp.

◆ set_outer_convergence_tester()

void flexiblesusy::RGFlow< Semi_analytic >::set_outer_convergence_tester ( Convergence_tester convergence_tester_)

set convergence tester for overall iteration

Set the convergence tester to be used during the outer iteration.

Parameters
convergence_tester_the convergence tester to be used

Definition at line 261 of file semi_analytic_solver.cpp.

◆ set_running_precision()

void flexiblesusy::RGFlow< Semi_analytic >::set_running_precision ( Two_scale_running_precision rp)

set running precision calculator

Set RG running precision calculator.

Parameters
rprunning precision calculator

Definition at line 276 of file semi_analytic_solver.cpp.

◆ solve()

void flexiblesusy::RGFlow< Semi_analytic >::solve ( )

solves the boundary value problem

Solves the boundary value problem.

At first the initial_guess() is called. Afterwards, the semianalytic solution is applied: first, the function iteratively runs the tower up and down and imposes the boundary conditions. The iteration stops if either the maximum number of iterations is reached or the precision goal is achieved (defined by the convergence_tester for the inner two-scale iteration). Then the next, semianalytic step is applied. This is iterated until either the maximum number of iterations is reached or the precision goal is achieved (defined by the convergence_tester for the outer iteration).

Definition at line 117 of file semi_analytic_solver.cpp.

References flexiblesusy::RGFlow< Two_scale >::solve(), and VERBOSE_MSG.

◆ sort_sliders()

std::vector< std::shared_ptr< RGFlow< Semi_analytic >::Slider > > flexiblesusy::RGFlow< Semi_analytic >::sort_sliders ( const std::vector< std::shared_ptr< Slider > > &  ) const
private

sort the outer sliders w.r.t. scale

Returns vector of sliders, sorted w.r.t. their scale.

Returns
vector of sorted sliders

Definition at line 363 of file semi_analytic_solver.cpp.

References flexiblesusy::amm_loop_functions::two_loop::anonymous_namespace{amm_loop_functions.cpp}::sort().

◆ update_running_precision()

void flexiblesusy::RGFlow< Semi_analytic >::update_running_precision ( )
private

update the RG running precision

Recalculates the precision of the RG running using the user defined Two_scale_running_precision_calculator class.

Definition at line 231 of file semi_analytic_solver.cpp.

Member Data Documentation

◆ initial_guesser

Initial_guesser* flexiblesusy::RGFlow< Semi_analytic >::initial_guesser {nullptr}
private

does initial guess

Definition at line 144 of file semi_analytic_solver.hpp.

◆ inner_convergence_tester

Convergence_tester* flexiblesusy::RGFlow< Semi_analytic >::inner_convergence_tester {nullptr}
private

the convergence tester for the two-scale iteration

Definition at line 142 of file semi_analytic_solver.hpp.

◆ inner_sliders

std::vector<std::shared_ptr<Slider> > flexiblesusy::RGFlow< Semi_analytic >::inner_sliders {}
private

sliders to be used in the inner iteration

Definition at line 139 of file semi_analytic_solver.hpp.

◆ iteration

int flexiblesusy::RGFlow< Semi_analytic >::iteration {0}
private

iteration number (starting at 0)

Definition at line 141 of file semi_analytic_solver.hpp.

◆ outer_convergence_tester

Convergence_tester* flexiblesusy::RGFlow< Semi_analytic >::outer_convergence_tester {nullptr}
private

the convergence tester for the main iteration

Definition at line 143 of file semi_analytic_solver.hpp.

◆ outer_sliders

std::vector<std::shared_ptr<Slider> > flexiblesusy::RGFlow< Semi_analytic >::outer_sliders {}
private

sliders to be used in the outer iteration

Definition at line 140 of file semi_analytic_solver.hpp.

◆ running_precision

double flexiblesusy::RGFlow< Semi_analytic >::running_precision {1.0e-3}
private

RG running precision.

Definition at line 146 of file semi_analytic_solver.hpp.

◆ running_precision_calculator

Two_scale_running_precision* flexiblesusy::RGFlow< Semi_analytic >::running_precision_calculator {nullptr}
private

RG running precision calculator.

Definition at line 145 of file semi_analytic_solver.hpp.

◆ scale

double flexiblesusy::RGFlow< Semi_analytic >::scale {0.}
private

current scale

Definition at line 147 of file semi_analytic_solver.hpp.


The documentation for this class was generated from the following files: