Skip to content

Commit

Permalink
Merge branch 'development' into feature-mathlink
Browse files Browse the repository at this point in the history
Conflicts:
	src/module.mk
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Aug 13, 2016
2 parents d173b97 + dc6bd15 commit 5105105
Show file tree
Hide file tree
Showing 138 changed files with 1,867 additions and 918 deletions.
5 changes: 1 addition & 4 deletions .gitattributes
Expand Up @@ -14,10 +14,7 @@ examples/lattice_numerical_fmssm.cpp export-ignore
examples/lattice_numerical_fmssm_fmssmn.cpp export-ignore
examples/switch_MSSM.cpp export-ignore

meta/Format.m export-ignore
meta/writeNRGE.m export-ignore
meta/writeRGE.m export-ignore

model_files/BetaSM export-ignore
model_files/CMSSMFPIAbsolute export-ignore
model_files/CMSSMFPIRelative export-ignore
model_files/CMSSMFPITadpole export-ignore
Expand Down
40 changes: 38 additions & 2 deletions ChangeLog
@@ -1,7 +1,43 @@
FlexibleSUSY-1.6.0 [not released yet]
Flexiblesusy-1.5.2 [not released yet]

* Feature (commit 4e9ef56): Allow user to access the beta-functions
of the model parameters on the r.h.s. of the constraints. BETA[p]
represents the beta function of the parameter p using the loop
level given in the SLHA input. BETA[l,p] represents the l-loop
beta function of the parameter p.

Example in the SM:

HighScaleInput = {
{\[Lambda], BETA[g1] + BETA[g2] + BETA[1,Yu][3,3]}
};

* Feature (commit 5e0bca1): Allow user to add 3-loop QCD corrections
of [arxiv:hep-ph/9912391] when calculating the top pole mass in
non-SUSY models. The 3-loop QCD corrections are added if the flag
FlexibleSUSY[13] is set to 2 and the pole mass loop order,
FlexibleSUSY[4], is set to a value > 2.

FlexibleSUSY[13] = 0 and FlexibleSUSY[4] > 0: 1L QCD correction
FlexibleSUSY[13] = 1 and FlexibleSUSY[4] > 1: 2L QCD correction
FlexibleSUSY[13] = 2 and FlexibleSUSY[4] > 2: 3L QCD correction

* Bugfix (commit a5342eb): Avoid non-portable use of sed in
createmodel. This fixes `make install-src' on Mac.

* Bugfix (commit 44b31fa): Fix potential race condition when
different model classes that make use of the (N)MSSM 2-loop Higgs
mass routines of P. Slavich call calculate_spectrum() at the same
time.

Flexiblesusy-1.5.1 [July, 12 2017]

* Bugfix (commit 63f5361): Fix numerical instability of SOFTSUSY's B1
funcion in parameter regions with p << m1,m2 and m1 close to m2.
function in parameter regions with p << m1,m2 and m1 close to m2.

* Bugfix (commit fc6d509): Fix makefile bug in the tarball by
shipping all .m files that appear in the list of dependencies for
the generated C++ code.

FlexibleSUSY-1.5.0 [June, 29 2016]

Expand Down
2 changes: 1 addition & 1 deletion configure
Expand Up @@ -6,7 +6,7 @@
PROGRAM_NAME=FlexibleSUSY
FLEXIBLESUSY_MAJOR=1
FLEXIBLESUSY_MINOR=5
FLEXIBLESUSY_PATCH=0
FLEXIBLESUSY_PATCH=1
FLEXIBLESUSY_EXTRA=""
FLEXIBLESUSY_VERSION="${FLEXIBLESUSY_MAJOR}.${FLEXIBLESUSY_MINOR}.${FLEXIBLESUSY_PATCH}${FLEXIBLESUSY_EXTRA}"
GIT_COMMIT=$(git rev-parse HEAD 2> /dev/null || echo unknown)
Expand Down
5 changes: 3 additions & 2 deletions createmodel
Expand Up @@ -481,8 +481,9 @@ set -- $(find $model_file_dir -type f -iname LesHouches.in\* -not -iname \*~ -ex
SLHA_input_files="$*"

SLHA_input_files_in_mk=$(echo "$SLHA_input_files" |
sed -e 's/ / \\\\\\n/g;' \
-e 's,\(^\|\\n\)\(.\),\1 $(DIR)/\2,g')
sed -e 's/ / \\\\\\n/g' \
-e 's,^\(.\), $(DIR)/\1,' \
-e 's,\\n\(.\),\\n $(DIR)/\1,g')

message -n " Creating Makefile module $targetdir/module.mk ... "
sed -e "s|@DIR@|$targetdir|g" \
Expand Down
14 changes: 14 additions & 0 deletions doc/model_file.dox
Expand Up @@ -657,6 +657,20 @@ SUSYScaleInput = {
};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It is also possible to access the \f$\beta\f$ functions on the
r.h.s. of an assignment using the `BETA` head: `BETA[p]` represents
the \f$\beta\f$ function of the parameter `p` using the loop level
given in the SLHA input. `BETA[l,p]` represents the `l`-loop
\f$\beta\f$ function of the parameter `p`.

Example:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.m}
HighScaleInput = {
{\[Lambda], BETA[g1] + BETA[g2] + BETA[1,Yu][3,3]}
};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

### Temporary parameter re-definitions ###

Since FlexibleSUSY 1.4.0, the user can perform a temporary parameter
Expand Down
3 changes: 1 addition & 2 deletions doc/release
Expand Up @@ -23,8 +23,7 @@ When releasing FlexibleSUSY, please follow these steps:

3. Run configure with all features disabled to create the Makefile

./configure --disable-meta --disable-compile \
--with-models= --with-algorithms=
./configure --disable-meta --disable-compile

4. Create a non-annotated tag via

Expand Down
4 changes: 2 additions & 2 deletions doc/slha_input.dox
Expand Up @@ -23,7 +23,7 @@ Block FlexibleSUSY
10 1 # Higgs 2-loop corrections O((alpha_t + alpha_b)^2)
11 1 # Higgs 2-loop corrections O(alpha_tau^2)
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L)
14 1.0e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, effective couplings)
16 0 # force positive majorana masses
Expand Down Expand Up @@ -52,7 +52,7 @@ index | description | possible values | de
10 | higgs 2-loop correction O(at at) | 0, 1 | 1 (= enabled)
11 | higgs 2-loop correction O(atau atau) | 0, 1 | 1 (= enabled)
12 | force output | 0 (no) or 1 (yes) | 0 (= no)
13 | 2-loop top pole mass QCD corrections | 0, 1 | 1 (= enabled)
13 | top quark pole QCD corrections | 0 (1L), 1 (2L), 2 (3L) | 1 (= 2L QCD)
14 | beta function zero threshold | any positive double | 1.0e-11
15 | calculate observables | 0 (no) or 1 (yes) | 0 (= no)
16 | force positive Majorana masses | 0 (no) or 1 (yes) | 0 (= no)
Expand Down
2 changes: 1 addition & 1 deletion examples/customized-betas/LesHouches.in.MSSMcbs
Expand Up @@ -17,7 +17,7 @@ Block FlexibleSUSY
10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2)
11 1 # Higgs 2-loop corrections O(alpha_tau^2)
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L)
14 1.000000000e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, ...)
16 0 # force positive majorana masses
Expand Down
2 changes: 1 addition & 1 deletion examples/tower/LesHouches.in.tower
Expand Up @@ -17,7 +17,7 @@ Block FlexibleSUSY
10 1 # Higgs 2-loop corrections O(alpha_t^2 + alpha_t alpha_b + alpha_b^2)
11 1 # Higgs 2-loop corrections O(alpha_tau^2)
12 0 # force output
13 1 # Top quark 2-loop corrections QCD
13 1 # Top pole mass QCD corrections (0 = 1L, 1 = 2L, 2 = 3L)
14 1.000000000e-11 # beta-function zero threshold
15 0 # calculate observables (a_muon, ...)
16 0 # force positive majorana masses
Expand Down
8 changes: 1 addition & 7 deletions meta/CConversion.m
Expand Up @@ -621,10 +621,6 @@

ToValidCSymbol[symbol_Real] := symbol;

ToValidCSymbol[symbol_[Susyno`LieGroups`i1]] := ToValidCSymbol[symbol];

ToValidCSymbol[symbol_[Susyno`LieGroups`i1,SARAH`i2]] := ToValidCSymbol[symbol];

ToValidCSymbol[symbol_ /; Length[symbol] > 0] :=
Module[{result = "", i},
For[i = 0, i <= Length[symbol], i++,
Expand Down Expand Up @@ -816,11 +812,9 @@
FlexibleSUSY`M[bar[a_]] :> FlexibleSUSY`M[a] /.
FlexibleSUSY`M[a_[idx_]] :> ToValidCSymbol[FlexibleSUSY`M[a]][idx] /.
FlexibleSUSY`M[a_] :> ToValidCSymbol[FlexibleSUSY`M[a]] /.
FlexibleSUSY`BETA[l_,p_] :> FlexibleSUSY`BETA1[l,p] /.
Susyno`LieGroups`conj -> SARAH`Conj //.
conjSimplification /.
(* TODO: remove the following 2 lines: *)
a_[Susyno`LieGroups`i1] :> a /.
a_[Susyno`LieGroups`i1, SARAH`i2] :> a /.
SARAH`Delta[a_,a_] -> 1 /.
Power[a_?NumericQ,n_?NumericQ] :> N[Power[a,n]] /.
Sqrt[a_?NumericQ] :> N[Sqrt[a]] /.
Expand Down
34 changes: 32 additions & 2 deletions meta/Constraint.m
Expand Up @@ -194,11 +194,35 @@
{FlexibleSUSY`Temporary[_], _}
];
result = Parameters`CreateLocalConstRefs[(#[[2]])& /@ noMacros];
result = result <> AddBetas[noMacros];
result = result <> "\n";
(result = result <> ApplyConstraint[#, "MODEL"])& /@ noTemp;
Return[result];
];

ContainsBetas[expr_] := !FreeQ[expr, FlexibleSUSY`BETA];

(* -1 = current beta-function loop order *)
MaxBetaLoopOrder[expr_] :=
Sort @ Cases[expr /. FlexibleSUSY`BETA[p_] :> FlexibleSUSY`BETA[-1,p],
FlexibleSUSY`BETA[l_, _] | FlexibleSUSY`BETA[l_, _][___] :> l, {0, Infinity}];

CallCalcBeta[-1] :=
"const " <> FlexibleSUSY`FSModelName <> "_soft_parameters beta_functions(MODEL->calc_beta());\n";

CallCalcBeta[l_?IntegerQ] :=
Module[{lstr = ToString[l]},
"const " <> FlexibleSUSY`FSModelName <>
"_soft_parameters beta_functions_" <> lstr <>
"L(MODEL->calc_beta(" <> lstr <> "));\n"
];

AddBetas[expr_?ContainsBetas] :=
StringJoin[CallCalcBeta /@ MaxBetaLoopOrder[expr]] <>
Parameters`CreateLocalConstRefsForBetas[expr];

AddBetas[_] := "";

FindFixedParametersFromSetting[{parameter_, value_}] := Parameters`StripIndices[parameter];
FindFixedParametersFromSetting[FlexibleSUSY`FSMinimize[parameters_List, value_]] := parameters;
FindFixedParametersFromSetting[FlexibleSUSY`FSFindRoot[parameters_List, value_]] := parameters;
Expand Down Expand Up @@ -375,10 +399,16 @@
Return[result];
];

CreateBetasForParsIn[expr_] :=
Module[{pars},
pars = Parameters`FSModelParameters /. Parameters`FindAllParametersClassified[expr];
FlexibleSUSY`BETA /@ pars
];

CalculateScale[expr_Equal, scaleName_String] :=
Module[{result},
result = Parameters`CreateLocalConstRefs[expr];
result = result <> Parameters`CreateLocalConstRefsForBetas[expr];
result = result <> Parameters`CreateLocalConstRefsForBetas[CreateBetasForParsIn[expr]];
result = result <> "\n";
result = result <> CalculateScaleFromExpr[expr, scaleName];
Return[result];
Expand Down Expand Up @@ -409,7 +439,7 @@
parSeq = Sequence @@ parameters;
F1[parSeq] := expr1;
F2[parSeq] := expr2;
betaFunctions = Global`BETA /@ parameters;
betaFunctions = FlexibleSUSY`BETA /@ parameters;
solution = Solve[Log[scale/Global`currentScale] *
(betaFunctions . D[F1[parSeq] - F2[parSeq],
{parameters}])
Expand Down
33 changes: 22 additions & 11 deletions meta/EWSB.m
Expand Up @@ -45,6 +45,12 @@
CreateEWSBParametersInitializationList::usage="Creates initialization
list with EWSB output parameters";

CreateEWSBParametersInitializationComma::usage="Creates initialization
list with EWSB output parameters";

CreateEWSBParametersInitialization::usage="Creates initialization
of EWSB output parameters";

Begin["`Private`"];

DebugPrint[msg___] :=
Expand Down Expand Up @@ -657,8 +663,11 @@
Quit[1];
];

MakeUniquePtr[str_String, obj_String] :=
"std::unique_ptr<" <> obj <> ">(" <> str <> ")";

CreateEWSBRootFinders[rootFinders_List] :=
Utils`StringJoinWithSeparator[CreateEWSBRootFinder /@ rootFinders, ",\n"];
Utils`StringJoinWithSeparator[MakeUniquePtr[#,"EWSB_solver"]& /@ (CreateEWSBRootFinder /@ rootFinders), ",\n"];

WrapPhase[phase_ /; phase === Null, str_String] :=
str;
Expand Down Expand Up @@ -785,17 +794,19 @@
Return[result];
];

CreateEWSBParametersInitializationComma[{}] := "";

CreateEWSBParametersInitializationComma[parameters_List] :=
Utils`StringJoinWithSeparator[ConvertToReal /@ parameters, ", "];

CreateEWSBParametersInitializationList[parameters_List] :=
Module[{result = "{}"},
If[Length[parameters] > 0,
result = Utils`StringJoinWithSeparator[
ConvertToReal /@ parameters,
", "
];
result = "{ " <> result <> " }";
];
result
];
"{" <> CreateEWSBParametersInitializationComma[parameters] <> "}";

SetEWSBParameter[par_, idx_, array_String] :=
array <> "[" <> ToString[idx] <> "] = " <> ConvertToReal[par] <> ";\n";

CreateEWSBParametersInitialization[parameters_List, array_String] :=
StringJoin[MapIndexed[SetEWSBParameter[#1,First[#2 - 1],array]&, parameters]];

End[];

Expand Down
16 changes: 13 additions & 3 deletions meta/FlexibleSUSY.m
Expand Up @@ -52,6 +52,7 @@ FlexibleSUSY model file (FlexibleSUSY.m).
HighPrecision::usage="";
GUTNormalization::usage="Returns GUT normalization of a given coupling";

BETA::usage = "Head for beta functions"
FSModelName;
FSOutputDir = ""; (* directory for generated code *)
FSLesHouchesList;
Expand Down Expand Up @@ -920,6 +921,8 @@ corresponding tadpole is real or imaginary (only in models with CP
getEWSBParametersFromGSLVector = "",
setEWSBParametersFromLocalCopies = "",
ewsbParametersInitializationList = "",
ewsbParametersInitializationComma = "",
ewsbParametersInitialization = "",
setEWSBParametersFromGSLVector = "",
convertMixingsToSLHAConvention = "",
convertMixingsToHKConvention = "",
Expand Down Expand Up @@ -982,12 +985,12 @@ corresponding tadpole is real or imaginary (only in models with CP
If[SARAH`UseHiggs2LoopMSSM === True,
{twoLoopTadpolePrototypes, twoLoopTadpoleFunctions} = SelfEnergies`CreateTwoLoopTadpolesMSSM[SARAH`HiggsBoson];
{twoLoopSelfEnergyPrototypes, twoLoopSelfEnergyFunctions} = SelfEnergies`CreateTwoLoopSelfEnergiesMSSM[{SARAH`HiggsBoson, SARAH`PseudoScalar}];
twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.h\"\n";
twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.hpp\"\n";
];
If[FlexibleSUSY`UseHiggs2LoopNMSSM === True,
{twoLoopTadpolePrototypes, twoLoopTadpoleFunctions} = SelfEnergies`CreateTwoLoopTadpolesNMSSM[SARAH`HiggsBoson];
{twoLoopSelfEnergyPrototypes, twoLoopSelfEnergyFunctions} = SelfEnergies`CreateTwoLoopSelfEnergiesNMSSM[{SARAH`HiggsBoson, SARAH`PseudoScalar}];
twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"nmssm_twoloophiggs.h\"\n";
twoLoopHiggsHeaders = "#include \"sfermions.hpp\"\n#include \"mssm_twoloophiggs.hpp\"\n#include \"nmssm_twoloophiggs.hpp\"\n";
];
setEWSBParametersFromGSLVector = EWSB`SetEWSBParametersFromGSLVector[parametersFixedByEWSB, freePhases, "x"];
calculateTreeLevelTadpoles = EWSB`FillArrayWithEWSBEqs[SARAH`HiggsBoson, "tadpole"];
Expand Down Expand Up @@ -1058,6 +1061,11 @@ corresponding tadpole is real or imaginary (only in models with CP
getEWSBParametersFromGSLVector = EWSB`GetEWSBParametersFromGSLVector[parametersFixedByEWSB, freePhases, "x"];
setEWSBParametersFromLocalCopies = EWSB`SetEWSBParametersFromLocalCopies[parametersFixedByEWSB, "model"];
ewsbParametersInitializationList = EWSB`CreateEWSBParametersInitializationList[parametersFixedByEWSB];
ewsbParametersInitializationComma = EWSB`CreateEWSBParametersInitializationComma[parametersFixedByEWSB];
If[Length[parametersFixedByEWSB] > 0,
ewsbParametersInitialization = IndentText[
EWSB`CreateEWSBParametersInitialization[parametersFixedByEWSB, "ewsb_parameters"]];
];
reorderDRbarMasses = TreeMasses`ReorderGoldstoneBosons[""];
reorderPoleMasses = TreeMasses`ReorderGoldstoneBosons["PHYSICAL"];
checkPoleMassesForTachyons = TreeMasses`CheckPoleMassesForTachyons["PHYSICAL"];
Expand Down Expand Up @@ -1130,12 +1138,14 @@ corresponding tadpole is real or imaginary (only in models with CP
"@solveTreeLevelEWSBviaSoftHiggsMasses@" -> IndentText[WrapLines[solveTreeLevelEWSBviaSoftHiggsMasses]],
"@solveEWSBTemporarily@" -> IndentText[solveEWSBTemporarily],
"@EWSBSolvers@" -> IndentText[IndentText[EWSBSolvers]],
"@fillArrayWithEWSBParameters@" -> IndentText[IndentText[fillArrayWithEWSBParameters]],
"@fillArrayWithEWSBParameters@" -> IndentText[fillArrayWithEWSBParameters],
"@solveEwsbWithTadpoles@" -> IndentText[WrapLines[solveEwsbWithTadpoles]],
"@getEWSBParametersFromGSLVector@" -> IndentText[getEWSBParametersFromGSLVector],
"@setEWSBParametersFromLocalCopies@" -> IndentText[setEWSBParametersFromLocalCopies],
"@setEWSBParametersFromGSLVector@" -> IndentText[setEWSBParametersFromGSLVector],
"@ewsbParametersInitializationList@" -> ewsbParametersInitializationList,
"@ewsbParametersInitializationComma@" -> ewsbParametersInitializationComma,
"@ewsbParametersInitialization@" -> ewsbParametersInitialization,
"@setEWSBSolution@" -> IndentText[setEWSBSolution],
"@convertMixingsToSLHAConvention@" -> IndentText[convertMixingsToSLHAConvention],
"@convertMixingsToHKConvention@" -> IndentText[convertMixingsToHKConvention],
Expand Down

0 comments on commit 5105105

Please sign in to comment.