Skip to content

kerwinhui/FlexibleSUSY

 
 

Repository files navigation

FlexibleSUSY provides Mathematica and C++ code to create spectrum
generators for non-minimal supersymmetric models.


Requirements
============

 * C++ compiler (g++ >= 4.6.0 or clang++ >= 3.1)
 * Fortran compiler (gfortran, ifort)
 * Mathematica (version 7.0 or higher)
 * SARAH (version 4.0 or higher)      http://sarah.hepforge.org
 * Boost (version 1.36.0 or higher)   http://www.boost.org
 * Eigen 3 (version 3.1 or higher)    http://eigen.tuxfamily.org
 * GNU scientific library             http://www.gnu.org/software/gsl/
 * Lapack / Blas                      http://www.netlib.org/lapack/

Optional:

 * Looptools (version 2.8 or higher)  http://www.feynarts.de/looptools/


How to create a model
=====================

0. Before you setup a FlexibleSUSY model, you have to provide a SARAH
   model file.  The SARAH model file must be loadable via SARAH's
   Start[] function:

   $ math
   In[]:= Needs["SARAH`"]
   In[]:= Start["<model>"]

   Here <model> is the name of your model (e.g. MSSM, NMSSM, etc.).
   Note, that there are already plenty of pre-installed model files
   under SARAH/Models/ that can be used.

1. Setup a FlexibleSUSY model

   $ ./createmodel --name=<model>

   See `./createmodel --help' for more details.  Afterwards there will
   be

   * a model directory models/<model>/
   * a makefile module models/<model>/module.mk
   * a Mathematica start script models/<model>/start.m
   * and a FlexibleSUSY model file models/<model>/FlexibleSUSY.m

   To modify the model details, please edit the FlexibleSUSY model
   file models/<model>/FlexibleSUSY.m .

2. Create the Makefile and register your model

   $ ./configure --with-models=<model>

   Use `./configure --with-models=all' to build all available models.
   See `./configure --help' for more options.

3. Compile

   $ make

   When `make' is executed, Mathematica is called and generates the
   C++ code for the spectrum generator.  All C++ source files are
   written to models/<model>/ .  Afterwards this C++ code will be
   compiled and a user example spectrum generator
   models/<model>/run_<model>.x will be created.


Example
=======

   $ ./createmodel --name=NMSSM
   $ ./configure --with-models=NMSSM
   $ make
   $ ./models/NMSSM/run_NMSSM.x


Creating only the source code files -- no compilation
=====================================================

If you want to only create the C++ source files for your model, but do
not want to compile the code, you can use the --disable-compile
configure option:

   $ ./configure --with-models=MSSM --disable-compile
   $ make

Here, configure will not check for installed compilers or libraries.
It will only check for Mathematica and SARAH.  The execution of `make'
will stop as soon as all C++ source code files are generated.


Compile only
============

If you want to only compile already created the C++ source files for
your model, you can use the --disable-meta configure option:

   $ ./configure --with-models=MSSM --disable-meta
   $ make

Here, configure will only check for installed compilers or libraries.
It will not check for Mathematica and SARAH.

Warning: Please make sure all C++ source files of your model are
available in the model directory models/<model>/ .  Otherwise the
compilation will fail.


Dynamic libraries
=================

If you want to create dynamic libraries (instead of static libraries)
you have to pass all the following options to the ./configure script

   --disable-static-libs
   --with-lib-ext=".so"
   --with-make-lib-cmd="gcc -shared -o"

Example:

   $ ./configure --with-models=MSSM,NMSSM \
     --disable-static-libs \
     --with-lib-ext=".so" \
     --with-make-lib-cmd="gcc -shared -o"

Important remark:

The libraries are linked to the executables with _absolute_ paths.
This means that, if you move the package directory to another
location, the executables will no longer work, because the libraries
are now at another place.  To make the executables work again, you
have to rebuild them via

   $ make clean-executables
   $ make allexec


Looptools
=========

It is possible to use Looptools (http://www.feynarts.de/looptools/)
for calculating the loop functions, instead of using Softsusy's loop
functions.  To enable Looptools configure via

   $ ./configure --enable-looptools

To use the Looptools library and header files from a specific
directory configure via

   $ ./configure --enable-looptools \
     --with-looptools-incdir="/path/to/looptools/build/" \
     --with-looptools-libdir="/path/to/looptools/build/"

Note: Looptools 2.8 or higher is required.  Versions <= 2.7 will fail
to build with the following compiler error message (or similar):

   In file included from models/MSSM/MSSM_two_scale_model.cpp:28:0:
   /usr/include/clooptools.h:67:28: error: conflicting declaration ‘typedef struct std::complex<double> Complex’
   In file included from src/utils.h:15:0,
                    from src/rge.h:17,
                    from models/MSSM/MSSM_two_scale_soft_parameters.hpp:24,
                    from models/MSSM/MSSM_two_scale_model.hpp:25,
                    from models/MSSM/MSSM_two_scale_model.cpp:21:
   src/mycomplex.h:17:7: error: ‘class Complex’ has a previous declaration as ‘class Complex’

About

Creates spectrum generators for supersymmetric models

Resources

License

Stars

Watchers

Forks

Packages

No packages published