Program: BSMPT version 2.0
Released by: Philipp Basler and Margarete Mühlleitner and Jonas Müller
Manual: version 2.0
BSMPT - Beyond the Standard Model Phase Transitions: The C++ program package BSMPT calculates for models with extended Higgs sectors the loop-corrected effective potential at finite temperature including the daisy resummation of the bosonic masses. The program computes the vacuum expectation value (VEV) \f$ v \f$ of the potential as a function of the temperature, and in particular the critical VEV \f$v_c\f$ at the temperature \f$T_c\f$ where the phase transition takes place. In addition, the loop-corrected trilinear Higgs self-couplings are provided. We apply an 'on-shell' renormalization scheme in the sense that the loop-corrected masses and mixing angles are required to be equal to their tree-level input values. This allows for efficient scans in the parameter space of the models. The models implemented so far are the CP-conserving and the CP-violating 2-Higgs-Doublet Models (2HDM) and the Next-to-Minimal 2HDM (N2HDM). The program structure is such that the user can easily implement further models.
The program package can be downloaded at: https://github.com/phbasler/BSMPT
A short documentation is given at: https://phbasler.github.io/BSMPT/
Sample input and output files are provided in the directory 'example'.
Modifications and corrected bugs are reported in the file 'Changelog.md'.
For additional information, comments, complaints or suggestions please e-mail to: [email protected] or create a corresponding Issue.
If you use this program for your work, please cite 1803.02846 and 2007.01725
##Installation:
-
GSL library: The code assume GSL is installed in PATH
-
Eigen3: If eigen3 is not found automatically, you need to give the path to your eigen3 installation. To install eigen3 you go to your downloaded eigen3 folder and install it through
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/path/to/installedEigen .. make install
After that you can use -DEigen3_Dir=/path/to/installedEigen/share/eigen3/cmake
to link Eigen3
-
libcmaes: Additionally to GSL you should either use libcmaes or NLopt. For libcmaes you have to set
-DCMAES_ROOT=/path/to/cmaes
If cmaes is not in this path, then it will be installed there. If you have troubles with the installation, please have a look at libcmaes for the dependencies. If you don't want to install or use it, you can set
-DUseLibCMAES=OFF
-
NLopt: If NLopt is installed through your packet manager cmake will find it automatically. Otherwise, with
-DNLopt_DIR=/path/to/installedNLopt/lib/cmake/nlopt
you can tell where NLopt is installed. If you do not want to use NLopt, you can set-DUseNLopt=OFF
-
Boost : It should be found automatically, if not you can use
-DBOOST_ROOT=/path/to/boost
With the dependencies and options you can build the programm with
mkdir build && cd build
cmake (OPTIONS from Dependencies) ..
make
make doc
The make doc will use doxygen to create the online help in build/html which can be opened locally.
Note to Mac Users: You have to use the g++ compiler as clang does not support OpenMP. If you get the error "missing libcmaes_config.h" during the compilation, please check if the file is in build/libcmaes-0.9.5. If so, copy it to /path/to/libcmaes/include/libcmaes
##How to add a new model (for further details, also see the manual):
To add a new model you have to modify/create five files
-
Go to include/BSMPT/models and copy ClassTemplate.h to YourModel.h. Adjust the Class_Template name to your new model. For step 5 I will assume that your class is named Class_YourModel.
-
Go to src/models and copy ClassTemplate.cpp to YourModel.cpp, and change the Class_Template class name in the file to your model name. Also follow the instructions in here and in the manual to set up your new model.
-
For your model to compile you have to open src/models/CMakeLists.txt and add ${header_path}/YourModel.h in the set(header enviroment as well as YourModel.cpp in the set(src enviroment)
-
In include/BSMPT/models/IncludeAllModels.h you need to add a new entry in the ModelIDs enum above the
stop
entry which is different from the ones already in the enum, e.g. YourModel. Additionally, you have to create a new entry in theconst std::unordered_map<std::string,ModelIDs> ModelNames
map in the same file and add a new line with {"YourModelName",ModelIDs::YourModel} , the matching will be done automatically. Then you can call your model with./binary YourModelName ...
. -
In src/models/IncludeAllModels.cpp you have to add
#include <BSMPT/models/YourModel.h>
to the include list. Also to actually call your model you have to extend the FChoose function. For this you add a new case to the switch statement, which readscase ModelIDs::YourModel: return std::make_unique<Class_YourModel>(); break;
You can use the Test executable to detect possible errors in your implementation. If the Test executable does not show you an error, but something is still wrong, contact us at [email protected]
Also contact us if you have a custom model for BSMPT v1.x and you have trouble converting it to the new notation.