14#include "Eigen/Eigenvalues"
18#include <BSMPT/utility/asciiplotter/asciiplotter.h>
50const std::unordered_map<StatusNLOStability, std::string>
52 {StatusNLOStability::NotSet,
"not_set"},
53 {StatusNLOStability::Off,
"off"},
54 {StatusNLOStability::Success,
"success"},
55 {StatusNLOStability::NoNLOStability,
"no_nlo_stability"}};
75 {StatusEWSR::NotSet,
"not_set"},
76 {StatusEWSR::Off,
"off"},
77 {StatusEWSR::Failure,
"failure"},
78 {StatusEWSR::NotBFB,
"non_bfb"},
79 {StatusEWSR::FlatRegion,
"flat_region"},
80 {StatusEWSR::EWSymNonRes,
"ew_sym_non_res"},
81 {StatusEWSR::EWSymRes,
"ew_sym_res"}};
100 {StatusTracing::NotSet,
"not_set"},
101 {StatusTracing::Success,
"success"},
102 {StatusTracing::NoCoverage,
"no_coverage"},
103 {StatusTracing::NoMinsAtBoundaries,
"no_mins_at_boundaries"},
104 {StatusTracing::NoGlobMinCoverage,
"no_glob_min_coverage"},
105 {StatusTracing::Failure,
"failure"}};
121 {StatusCoexPair::NotSet,
"not_set"},
122 {StatusCoexPair::Success,
"success"},
123 {StatusCoexPair::NoCoexPairs,
"no_coex_pair"}};
141 {StatusCrit::NotSet,
"not_set"},
142 {StatusCrit::Success,
"success"},
143 {StatusCrit::FalseLower,
"false_lower"},
144 {StatusCrit::TrueLower,
"true_lower"},
145 {StatusCrit::Failure,
"failure"}};
162const std::unordered_map<StatusTemperature, std::string>
164 {StatusTemperature::Success,
"success"},
165 {StatusTemperature::NotMet,
"not_met"},
166 {StatusTemperature::NaN,
"nan"}};
182 {StatusGW::NotSet,
"not_set"},
183 {StatusGW::Success,
"success"},
184 {StatusGW::Failure,
"failure"}};
267 std::vector<double> point;
270 bool is_glob_min =
false;
273 bool operator<(
const Minimum &a)
const {
return temp < a.temp; }
280 bool UseMultithreading;
325 MinimumTracer(
const std::shared_ptr<Class_Potential_Origin> &pointer_in,
326 const int &WhichMinimizer_in,
327 const bool &UseMultithreading_in);
361 std::vector<double> &check,
362 const std::vector<double> &start);
371 const std::vector<double> &start);
420 const std::vector<double> &point,
421 const std::function<std::vector<std::vector<double>>(std::vector<double>)>
434 std::vector<double> point_2,
449 std::vector<Minimum>
TrackPhase(
double &globMinEndT,
450 const std::vector<double> &point_In,
451 const double ¤tT_In,
452 const double &finalT,
453 const double &dT_In = 1,
454 const bool &
output =
true,
455 const bool &unprotected =
false);
466 std::vector<Minimum>
TrackPhase(
const std::vector<double> &point_In,
467 const double ¤tT_In,
468 const double &finalT,
469 const double &dT_In = 1,
470 const bool &
output =
true,
471 const bool &unprotected =
false);
509 void ReduceVEV(std::vector<double> &vev);
527 const std::vector<std::vector<double>>
528 WarpPath(
const std::vector<std::vector<double>> &path,
529 const std::vector<double> &T1,
530 const std::vector<double> &F1,
531 const std::vector<double> &T2,
532 const std::vector<double> &F2);
549 const std::vector<double> &guess_In,
550 std::function<std::vector<double>(std::vector<double>)> &df,
551 std::function<std::vector<std::vector<double>>(std::vector<double>)>
553 const double &error = 1e-4,
554 const double &const_multiplier = 1e-2,
555 const int &maxiter = 100);
563 std::vector<std::string>
GetLegend(
const int &num_coex_phases,
564 const bool &do_gw_calc);
576std::vector<std::vector<double>>
579 const double low_value,
580 const double high_value,
581 const int nsteps = 100);
591std::vector<std::vector<double>>
593 const std::vector<double> &min_end,
594 const int npoints = 100);
601 const double &rel_precision = 0.01,
602 const double &num_zero = 1e-10);
609 const std::vector<double> &b,
610 const bool &allow_for_sign_flip =
false,
611 const double &rel_precision = 0.01,
612 const double &num_zero = 1e-10);
675 Phase(
const std::vector<double> &phase_start,
676 const double &initialT,
677 const double &finalT,
679 std::shared_ptr<MinimumTracer> &MinTracerIn);
692 Phase(
const double &initialT,
693 const std::vector<double> &phase_start,
697 std::shared_ptr<MinimumTracer> &MinTracerIn);
709 Phase(
const std::vector<double> &phase_start,
710 const double &initialT,
711 const double &finalT,
712 std::shared_ptr<MinimumTracer> &MinTracerIn);
723 Phase(
const double &initialT,
724 const std::vector<double> &phase_start,
727 std::shared_ptr<MinimumTracer> &MinTracerIn);
737 Phase(
const double &initialT,
740 std::shared_ptr<MinimumTracer> &MinTracerIn);
754 double crit_temp = -1;
766 const Phase &false_phase,
767 const Phase &true_phase,
768 const double &Tlow_in,
769 const double &Thigh_in);
864 Vacuum(
const double &T_lowIn,
865 const double &T_highIn,
866 std::shared_ptr<MinimumTracer> &MinTracerIn,
867 std::shared_ptr<Class_Potential_Origin> &modelPointerIn,
868 const int &UseMultiStepPTModeIn,
869 const int &num_pointsIn = 10,
870 const bool &do_only_tracing =
false);
929 const std::vector<double> &HighTempPoint);
937 const std::vector<double> &HighTempPoint);
956 const std::vector<double> &HighTempPoint);
Definition minimum_tracer.h:277
MinimumTracer()
default constructor
Definition minimum_tracer.cpp:759
StatusEWSR GetStatusEWSR(const int &out)
GetStatusEWSR convert double output of IsThereEWSymmetryRestoration to status string.
Definition minimum_tracer.cpp:1139
std::vector< std::vector< std::size_t > > flat_2D_dirs
storage of indices of flat 2D directions in VEV basis
Definition minimum_tracer.h:491
std::vector< double > LocateMinimum(const std::vector< double > &guess_In, std::function< std::vector< double >(std::vector< double >)> &df, std::function< std::vector< std::vector< double > >(std::vector< double >)> &Hessian, const double &error=1e-4, const double &const_multiplier=1e-2, const int &maxiter=100)
Finds stationary points of a function (not only minimas).
Definition minimum_tracer.cpp:54
std::vector< Minimum > TrackPhase(double &globMinEndT, const std::vector< double > &point_In, const double ¤tT_In, const double &finalT, const double &dT_In=1, const bool &output=true, const bool &unprotected=false)
TrackPhase with enforced global minimum tracing (= phase is checked if it is still the global minimum...
Definition minimum_tracer.cpp:255
std::vector< Eigen::MatrixXd > GroupElements
List of group elements allowed by the potential.
Definition minimum_tracer.h:502
std::vector< double > FindZeroSmallestEigenvalue(std::vector< double > point_1, double T_1, std::vector< double > point_2, double T_2)
FindZeroSmallestEigenvalue.
Definition minimum_tracer.cpp:148
void IsGlobMin(Minimum &min)
IsGlobMin checks whether current minimum is the global minimum.
Definition minimum_tracer.cpp:1095
std::shared_ptr< Class_Potential_Origin > modelPointer
modelPointer for the used parameter point
Definition minimum_tracer.h:286
void FindDiscreteSymmetries()
Calculates the list of symmetries that leave V unchanged.
Definition minimum_tracer.cpp:965
int IsThereEWSymmetryRestoration()
IsThereEWSymmetryRestoration checks if there is EW symmetry restoration at high temperatures.
Definition minimum_tracer.cpp:1174
std::vector< std::vector< std::size_t > > flat_3D_dirs
storage of indices of flat 3D directions in VEV basis
Definition minimum_tracer.h:496
StatusNLOStability GetStatusNLOVEV(const bool &out)
GetStatusNLOVEV convert bool output of CheckNLOVEV to status string.
Definition minimum_tracer.cpp:1129
std::vector< double > GetGlobalMinimum(const double &Temp, std::vector< double > &check, const std::vector< double > &start)
get global minimum of effective potential
Definition minimum_tracer.cpp:1068
std::vector< std::string > GetLegend(const int &num_coex_phases, const bool &do_gw_calc)
GetLegend derive legend.
Definition minimum_tracer.cpp:2800
std::vector< double > ConvertToVEVDim(const std::vector< double > &point)
ConvertToVEVDim converts point from full to reduced (VEV) dimension.
Definition minimum_tracer.cpp:1054
void FindFlatDirections()
Calculates flat field directions.
Definition minimum_tracer.cpp:776
std::vector< int > NonFlatDirections
storage of all non-flat VEV-directions
Definition minimum_tracer.h:481
bool flat_dirs_found
bool to store whether flat directions are found
Definition minimum_tracer.h:476
double HessianDiagonalShift
Add a constant to the diagonals of the hessian matrix in the LocateMinimum function....
Definition minimum_tracer.h:300
void ConvertToNonFlatDirections(std::vector< double > &point)
Convert point into minimal non-flat space, reduces dimension in case of flat directions,...
Definition minimum_tracer.cpp:948
std::vector< Minimum > SavedMinimaFromVEVSplitting
Vector to store minima that appeared from VEV splittings.
Definition minimum_tracer.h:312
const std::vector< std::vector< double > > WarpPath(const std::vector< std::vector< double > > &path, const std::vector< double > &T1, const std::vector< double > &F1, const std::vector< double > &T2, const std::vector< double > &F2)
WarpPath.
Definition minimum_tracer.cpp:735
void ReduceVEV(std::vector< double > &vev)
Reduce the VEV into the same principal quadrant.
Definition minimum_tracer.cpp:700
std::vector< double > HighTemperatureVEV
Minimum found in IsThereEWSymmetryRestoration()
Definition minimum_tracer.h:306
std::vector< std::size_t > flat_1D_dirs
storage of indices of flat 1D directions in VEV basis
Definition minimum_tracer.h:486
double SmallestEigenvalue(const std::vector< double > &point, const std::function< std::vector< std::vector< double > >(std::vector< double >)> &Hessian)
SmallestEigenvalue calculate Eigenvalues of Hessian and returns smallest.
Definition minimum_tracer.cpp:124
double GradientThreshold
Threshold for the acceptable gradient.
Definition minimum_tracer.h:293
This classes calculates the Bounce action of the potential with a set temperature.
Definition CalculateEtaInterface.h:24
StatusEWSR
Possible electroweak symmetry restoration status.
Definition minimum_tracer.h:61
const std::unordered_map< StatusEWSR, std::string > StatusEWSRToString
Map to convert StatusEWSRToString to strins.
Definition minimum_tracer.h:74
const std::unordered_map< StatusCrit, std::string > StatusCritToString
Map to convert StatusCritToString to strings.
Definition minimum_tracer.h:140
StatusNLOStability
Possible NLO stability status.
Definition minimum_tracer.h:40
const double EmptyValue
Value to be store in the columns without any values.
Definition minimum_tracer.h:34
const std::unordered_map< StatusGW, std::string > StatusGWToString
Map to convert StatusGWToString to strings.
Definition minimum_tracer.h:181
StatusGW
Possible results for the GW and bounce_sol class.
Definition minimum_tracer.h:172
StatusTracing
Possible tracing results.
Definition minimum_tracer.h:87
StatusCoexPair
Possible status for the coex phase.
Definition minimum_tracer.h:111
const std::unordered_map< StatusTemperature, std::string > StatusTemperatureToString
Map to convert StatusTemperature to strings.
Definition minimum_tracer.h:163
TransitionTemperature
Possible transitions temperatures.
Definition minimum_tracer.h:191
StatusCrit
Possible status for the critical temperature.
Definition minimum_tracer.h:129
StatusTemperature
Possible status for the approximated nucleation, exact nucleation, percolation and completion tempera...
Definition minimum_tracer.h:152
bool almost_the_same(const double &a, const double &b, const double &rel_precision=0.01, const double &num_zero=1e-10)
Definition minimum_tracer.cpp:1428
const std::unordered_map< StatusNLOStability, std::string > StatusNLOStabilityToString
Map to convert StatusNLOStability to strins.
Definition minimum_tracer.h:51
const std::unordered_map< StatusCoexPair, std::string > StatusCoexPairToString
Map to convert StatusCoexPairToString to strings.
Definition minimum_tracer.h:120
std::ostream & operator<<(std::ostream &os, const StatusNLOStability &status)
Override << operator to handle StatusNLOStability.
Definition minimum_tracer.cpp:18
const std::unordered_map< StatusTracing, std::string > StatusTracingToString
Map to convert StatusTracingToString to strins.
Definition minimum_tracer.h:99
std::vector< std::vector< double > > Create1DimGrid(const std::vector< double > &point, const int k, const double low_value, const double high_value, const int nsteps=100)
Create1DimGrid creates a 1-dim grid of given size in index-direction.
Definition minimum_tracer.cpp:1381
CoexPhases struct to save pair of coexisting phases (false and true phase)
Definition minimum_tracer.h:748
void CalculateTc()
CalculateTc critical temperature for coexising phase pair.
Definition minimum_tracer.cpp:1291
CoexPhases()
empty constructor
Definition minimum_tracer.cpp:1272
struct to store minimum and temperature
Definition minimum_tracer.h:266
Phase object.
Definition minimum_tracer.h:619
void Add(Minimum min)
Function that adds min to MinimumPhaseVector.
Definition minimum_tracer.cpp:1719
Phase()
empty constructor
Definition minimum_tracer.cpp:1474
double T_low
Lowest temperature of the phase.
Definition minimum_tracer.h:628
double T_high
Highest temperature of the phase.
Definition minimum_tracer.h:633
Minimum Get(double T)
Calculates the minimum of the phase at temperature T. This function assumes that T is inside the temp...
Definition minimum_tracer.cpp:1667
std::shared_ptr< MinimumTracer > MinTracer
MinTracer object.
Definition minimum_tracer.h:643
std::vector< Minimum > MinimumPhaseVector
Set of Minimum that compose the phase.
Definition minimum_tracer.h:638
Complete vacuum structure of the theory for this parameter point.
Definition minimum_tracer.h:782
void MultiStepPTMode0(const std::vector< double > &LowTempPoint, const std::vector< double > &HighTempPoint)
MultiStepPTMode0 single-step PT mode.
Definition minimum_tracer.cpp:1767
void addPhase(Phase &phase)
Adds a phase to the phase list.
Definition minimum_tracer.cpp:2684
int MinimumFoundAlready(const Minimum &minimum)
This function checks if the minimum already exists in one of the phases in the phase list.
Definition minimum_tracer.cpp:2776
void PrintPhasesDiagram(int size=100)
prints the phases from T_low up to T_high on the terminal
Definition minimum_tracer.cpp:2192
std::vector< CoexPhases > CoexPhasesList
List of different phase pairs.
Definition minimum_tracer.h:847
void MultiStepPTTracer(const double &Temp, const double &deltaT=0)
MultiStepPTTracer traces all phases between T_high and T_low assuming that we start and end in a glob...
Definition minimum_tracer.cpp:2423
double T_high
Highest temperature, 300 GeV or set in input file.
Definition minimum_tracer.h:793
StatusCoexPair status_coex_pairs
coexisting phases status code = success, no_coex_pairs
Definition minimum_tracer.h:823
std::shared_ptr< MinimumTracer > MinTracer
MinTracer object.
Definition minimum_tracer.h:829
int num_points
number of equally-spaced intermediate points to check for new phases
Definition minimum_tracer.h:813
std::shared_ptr< Class_Potential_Origin > modelPointer
Model pointer.
Definition minimum_tracer.h:835
void MultiStepPTMode2(const std::vector< double > &LowTempPoint, const std::vector< double > &HighTempPoint)
MultiStepPTMode2 multi-step global minimum coverage PT mode.
Definition minimum_tracer.cpp:2080
void print(const Phase &phase)
print info on phase
Definition minimum_tracer.cpp:2516
double T_high_lowTempPhase
Highest temperature at which low-temperature phase is found to exist.
Definition minimum_tracer.h:807
void setCoexPhases()
setCoexPhases Calculates all coexisting phase pairs irrespective of borders of coexisiting phase regi...
Definition minimum_tracer.cpp:2527
bool DoGlobMinOverlap(const Phase &new_phase, const Phase &old_phase)
DoGlobMinOverlap check for global minimum at left-/rightmost overlap and choose endpoint of previous ...
Definition minimum_tracer.cpp:1863
double T_low
Lowest temperature 0 GeV.
Definition minimum_tracer.h:787
double T_low_highTempPhase
Lowest temperature at which high-temperature phase is found to exist.
Definition minimum_tracer.h:800
std::vector< Phase > PhasesList
List of different phases.
Definition minimum_tracer.h:841
bool DoPhasesOverlap(Phase &new_phase, Phase &old_phase)
DoPhasesOverlap checks if two phases overlap.
Definition minimum_tracer.cpp:1848
void setCoexRegion(const int &UseMultiStepPTMode)
setCoexRegion Calculates all coexisting phase regions with phase pairs included from the phase vector
Definition minimum_tracer.cpp:2564
StatusTracing status_vacuum
vacuum status code = success, no_coverage, no_glob_min_coverage
Definition minimum_tracer.h:818
void MultiStepPTMode1(const std::vector< double > &LowTempPoint, const std::vector< double > &HighTempPoint)
MultiStepPTMode1 multi-step coverage PT mode.
Definition minimum_tracer.cpp:1906
Definition transition_tracer.h:157