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
 
void add (Single_scale_matching *, Model *, Model *)
 add matching condition
 
Modelget_model () const
 get model at current scale
 
int number_of_iterations_done () const
 get number of used iterations
 
RGFlowoperator= (const RGFlow &)=delete
 
RGFlowoperator= (RGFlow &&)=delete
 
void reset ()
 clear all internal data
 
 RGFlow ()=default
 
 RGFlow (const RGFlow &)=delete
 
 RGFlow (RGFlow &&)=delete
 
void run_to (double)
 run model at given scale to given scale
 
void set_convergence_tester (Convergence_tester *)
 set convergence tester
 
void set_initial_guesser (Initial_guesser *)
 set initial guesser
 
void set_running_precision (Two_scale_running_precision *)
 set running precision calculator
 
void solve ()
 solves the boundary value problem
 
 ~RGFlow ()=default
 

Private Member Functions

bool accuracy_goal_reached () const
 check if accuracy goal is reached
 
void check_setup () const
 check the setup
 
void clear_problems ()
 clear model problems
 
int get_max_iterations () const
 returns max. number of iterations
 
Modelget_model (double) const
 returns model at given scale
 
double get_precision ()
 returns running precision
 
void initial_guess ()
 initial guess
 
void run_sliders ()
 run all sliders
 
std::vector< std::shared_ptr< Slider > > sort_sliders () const
 sort the sliders w.r.t. to scale
 
void update_running_precision ()
 update the RG running precision
 

Private Attributes

Convergence_testerconvergence_tester {nullptr}
 the convergence tester
 
Initial_guesserinitial_guesser {nullptr}
 does initial guess
 
int iteration {0}
 iteration number (starting at 0)
 
double running_precision {1.0e-3}
 RG running precision.
 
Two_scale_running_precisionrunning_precision_calculator {nullptr}
 RG running precision calculator.
 
double scale {0.}
 current scale
 
std::vector< std::shared_ptr< Slider > > sliders {}
 sliders to be run up and down
 

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()

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

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]

void flexiblesusy::RGFlow< Two_scale >::add ( Single_scale_constraint c,
Model m 
)

add constraint

Adding a model constraint

Parameters
cconstraint
mmodel

Definition at line 45 of file two_scale_solver.cpp.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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: