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_syum_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"}};
254 std::vector<double> point;
257 bool is_glob_min =
false;
260 bool operator<(
const Minimum &a)
const {
return temp < a.temp; }
267 bool UseMultithreading;
312 MinimumTracer(
const std::shared_ptr<Class_Potential_Origin> &pointer_in,
313 const int &WhichMinimizer_in,
314 const bool &UseMultithreading_in);
348 std::vector<double> &check,
349 const std::vector<double> &start);
358 const std::vector<double> &start);
407 const std::vector<double> &point,
408 const std::function<std::vector<std::vector<double>>(std::vector<double>)>
421 std::vector<double> point_2,
436 std::vector<Minimum>
TrackPhase(
double &globMinEndT,
437 const std::vector<double> &point_In,
438 const double ¤tT_In,
439 const double &finalT,
440 const double &dT_In = 1,
441 const bool &
output =
true,
442 const bool &unprotected =
false);
453 std::vector<Minimum>
TrackPhase(
const std::vector<double> &point_In,
454 const double ¤tT_In,
455 const double &finalT,
456 const double &dT_In = 1,
457 const bool &
output =
true,
458 const bool &unprotected =
false);
496 void ReduceVEV(std::vector<double> &vev);
514 const std::vector<std::vector<double>>
515 WarpPath(
const std::vector<std::vector<double>> &path,
516 const std::vector<double> &T1,
517 const std::vector<double> &F1,
518 const std::vector<double> &T2,
519 const std::vector<double> &F2);
536 const std::vector<double> &guess_In,
537 std::function<std::vector<double>(std::vector<double>)> &df,
538 std::function<std::vector<std::vector<double>>(std::vector<double>)>
540 const double &error = 1e-4,
541 const double &const_multiplier = 1e-2,
542 const int &maxiter = 100);
550 std::vector<std::string>
GetLegend(
const int &num_coex_phases,
551 const bool &do_gw_calc);
563std::vector<std::vector<double>>
566 const double low_value,
567 const double high_value,
568 const int nsteps = 100);
578std::vector<std::vector<double>>
580 const std::vector<double> &min_end,
581 const int npoints = 100);
588 const double &rel_precision = 0.01,
589 const double &num_zero = 1e-10);
596 const std::vector<double> &b,
597 const bool &allow_for_sign_flip =
false,
598 const double &rel_precision = 0.01,
599 const double &num_zero = 1e-10);
662 Phase(
const std::vector<double> &phase_start,
663 const double &initialT,
664 const double &finalT,
666 std::shared_ptr<MinimumTracer> &MinTracerIn);
679 Phase(
const double &initialT,
680 const std::vector<double> &phase_start,
684 std::shared_ptr<MinimumTracer> &MinTracerIn);
696 Phase(
const std::vector<double> &phase_start,
697 const double &initialT,
698 const double &finalT,
699 std::shared_ptr<MinimumTracer> &MinTracerIn);
710 Phase(
const double &initialT,
711 const std::vector<double> &phase_start,
714 std::shared_ptr<MinimumTracer> &MinTracerIn);
724 Phase(
const double &initialT,
727 std::shared_ptr<MinimumTracer> &MinTracerIn);
741 double crit_temp = -1;
753 const Phase &false_phase,
754 const Phase &true_phase,
755 const double &Tlow_in,
756 const double &Thigh_in);
851 Vacuum(
const double &T_lowIn,
852 const double &T_highIn,
853 std::shared_ptr<MinimumTracer> &MinTracerIn,
854 std::shared_ptr<Class_Potential_Origin> &modelPointerIn,
855 const int &UseMultiStepPTModeIn,
856 const int &num_pointsIn = 10,
857 const bool &do_only_tracing =
false);
916 const std::vector<double> &HighTempPoint);
924 const std::vector<double> &HighTempPoint);
943 const std::vector<double> &HighTempPoint);
Definition minimum_tracer.h:264
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:478
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:489
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:273
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:483
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:468
bool flat_dirs_found
bool to store whether flat directions are found
Definition minimum_tracer.h:463
double HessianDiagonalShift
Add a constant to the diagonals of the hessian matrix in the LocateMinimum function....
Definition minimum_tracer.h:287
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:299
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:293
std::vector< std::size_t > flat_1D_dirs
storage of indices of flat 1D directions in VEV basis
Definition minimum_tracer.h:473
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:280
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 strins.
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 strins.
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 strins.
Definition minimum_tracer.h:163
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 strins.
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:735
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:253
Phase object.
Definition minimum_tracer.h:606
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:615
double T_high
Highest temperature of the phase.
Definition minimum_tracer.h:620
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:630
std::vector< Minimum > MinimumPhaseVector
Set of Minimum that compose the phase.
Definition minimum_tracer.h:625
Complete vacuum structure of the theory for this parameter point.
Definition minimum_tracer.h:769
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:834
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:780
StatusCoexPair status_coex_pairs
coexisting phases status code = success, no_coex_pairs
Definition minimum_tracer.h:810
std::shared_ptr< MinimumTracer > MinTracer
MinTracer object.
Definition minimum_tracer.h:816
int num_points
number of equally-spaced intermediate points to check for new phases
Definition minimum_tracer.h:800
std::shared_ptr< Class_Potential_Origin > modelPointer
Model pointer.
Definition minimum_tracer.h:822
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:794
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:774
double T_low_highTempPhase
Lowest temperature at which high-temperature phase is found to exist.
Definition minimum_tracer.h:787
std::vector< Phase > PhasesList
List of different phases.
Definition minimum_tracer.h:828
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:805
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:143