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

Boundary condition solver (two-scale algorithm) More...

#include <two_scale_solver.hpp>

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

Classes

struct  Constraint_slider
 
struct  Matching_slider
 
struct  Slider
 

Public Member Functions

void add (Single_scale_constraint *, Model *)
 add constraint More...
 
void add (Single_scale_matching *, Model *, Model *)
 add 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_convergence_tester (Convergence_tester *)
 set convergence tester More...
 
void set_initial_guesser (Initial_guesser *)
 set initial guesser 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 run_sliders ()
 run all sliders More...
 
std::vector< std::shared_ptr< Slider > > sort_sliders () const
 sort the sliders w.r.t. to scale More...
 
void update_running_precision ()
 update the RG running precision More...
 

Private Attributes

Convergence_testerconvergence_tester {nullptr}
 the convergence tester More...
 
Initial_guesserinitial_guesser {nullptr}
 does initial guess More...
 
int iteration {0}
 iteration number (starting at 0) 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...
 
std::vector< std::shared_ptr< Slider > > sliders {}
 sliders to be run up and down More...
 

Detailed Description

Boundary condition solver (two-scale algorithm)

This boundary condition solver uses the two-scale algorithm to solve the boundary value problem: It uses RG running to iteratively run the models to the boundary condition (constraint) scales and imposes the constraints.

To add constraints use the add() function. Matching conditions are added using the add_upwards() or add_downwards() functions, depending on whether the low-scale model should be matched to the high-scale one (add_upwards()) or vice versa (add_downwards()). The added constraints and matching conditions are applied in their given order.

Definition at line 61 of file two_scale_solver.hpp.

Constructor & Destructor Documentation

◆ RGFlow() [1/3]

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

◆ RGFlow() [2/3]

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

◆ RGFlow() [3/3]

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

◆ ~RGFlow()

Member Function Documentation

◆ accuracy_goal_reached()

bool flexiblesusy::RGFlow< Two_scale >::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 171 of file two_scale_solver.cpp.

◆ add() [1/2]

◆ add() [2/2]

void flexiblesusy::RGFlow< Two_scale >::add ( Single_scale_matching mc,
Model m1,
Model m2 
)

add matching condition

Adds a matching condition. 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 61 of file two_scale_solver.cpp.

References flexiblesusy::mc.

◆ check_setup()

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

check the setup

Sanity checks the models and boundary conditions.

Definition at line 109 of file two_scale_solver.cpp.

◆ clear_problems()

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

clear model problems

Definition at line 117 of file two_scale_solver.cpp.

References VERBOSE_MSG.

◆ get_max_iterations()

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

returns max. number of iterations

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

Definition at line 214 of file two_scale_solver.cpp.

◆ get_model() [1/2]

Model * flexiblesusy::RGFlow< Two_scale >::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 244 of file two_scale_solver.cpp.

◆ get_model() [2/2]

Model * flexiblesusy::RGFlow< Two_scale >::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 225 of file two_scale_solver.cpp.

◆ get_precision()

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

returns running precision

Returns the precision of the RG running.

Returns
RG running precision

Definition at line 152 of file two_scale_solver.cpp.

◆ initial_guess()

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

initial guess

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

Definition at line 129 of file two_scale_solver.cpp.

◆ number_of_iterations_done()

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

get number of used iterations

Returns the number of performed iterations

Returns
number of performed iterations

Definition at line 205 of file two_scale_solver.cpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ reset()

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

clear all internal data

resets the solver to the initial condition

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

Definition at line 256 of file two_scale_solver.cpp.

Referenced by flexiblesusy::RGFlow< Semi_analytic >::prepare_inner_iteration().

◆ run_sliders()

void flexiblesusy::RGFlow< Two_scale >::run_sliders ( )
private

run all sliders

Definition at line 135 of file two_scale_solver.cpp.

References VERBOSE_MSG.

◆ run_to()

void flexiblesusy::RGFlow< Two_scale >::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 289 of file two_scale_solver.cpp.

References flexiblesusy::Model::run_to().

◆ set_convergence_tester()

void flexiblesusy::RGFlow< Two_scale >::set_convergence_tester ( Convergence_tester convergence_tester_)

set convergence tester

Set the convergence tester to be used during the iteration.

Parameters
convergence_tester_the convergence tester to be used

Definition at line 181 of file two_scale_solver.cpp.

Referenced by flexiblesusy::RGFlow< Semi_analytic >::prepare_inner_iteration().

◆ set_initial_guesser()

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

set initial guesser

Definition at line 186 of file two_scale_solver.cpp.

◆ set_running_precision()

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

set running precision calculator

Set RG running precision calculator.

Parameters
rprunning precision calculator

Definition at line 196 of file two_scale_solver.cpp.

Referenced by flexiblesusy::RGFlow< Semi_analytic >::prepare_inner_iteration().

◆ solve()

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

solves the boundary value problem

Solves the boundary value problem.

At first the initial_guess() is called. Afterwards, 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).

Definition at line 79 of file two_scale_solver.cpp.

References VERBOSE_MSG.

Referenced by flexiblesusy::RGFlow< Semi_analytic >::solve().

◆ sort_sliders()

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

sort the sliders w.r.t. to scale

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

Returns
vector of sorted sliders

Definition at line 273 of file two_scale_solver.cpp.

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

◆ update_running_precision()

void flexiblesusy::RGFlow< Two_scale >::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 161 of file two_scale_solver.cpp.

Member Data Documentation

◆ convergence_tester

Convergence_tester* flexiblesusy::RGFlow< Two_scale >::convergence_tester {nullptr}
private

the convergence tester

Definition at line 134 of file two_scale_solver.hpp.

◆ initial_guesser

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

does initial guess

Definition at line 135 of file two_scale_solver.hpp.

◆ iteration

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

iteration number (starting at 0)

Definition at line 133 of file two_scale_solver.hpp.

◆ running_precision

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

RG running precision.

Definition at line 137 of file two_scale_solver.hpp.

◆ running_precision_calculator

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

RG running precision calculator.

Definition at line 136 of file two_scale_solver.hpp.

◆ scale

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

current scale

Definition at line 138 of file two_scale_solver.hpp.

◆ sliders

std::vector<std::shared_ptr<Slider> > flexiblesusy::RGFlow< Two_scale >::sliders {}
private

sliders to be run up and down

Definition at line 132 of file two_scale_solver.hpp.


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