Skip to content

Commit

Permalink
Replace LHInput parameters in constraints using a function
Browse files Browse the repository at this point in the history
and move definition of index replacement rules closer to
where they are used
  • Loading branch information
Dylan Harries committed Feb 9, 2017
1 parent a168739 commit 675a9be
Showing 1 changed file with 48 additions and 43 deletions.
91 changes: 48 additions & 43 deletions meta/FlexibleSUSY.m
Expand Up @@ -2581,6 +2581,35 @@ corresponding tadpole is real or imaginary (only in models with CP
Quit[1];
];

RenameSLHAInputParametersInUserInput[lesHouchesInputParameters_] :=
Module[{lesHouchesInputParameterReplacementRules},
lesHouchesInputParameterReplacementRules = Flatten[{
Rule[SARAH`LHInput[#[[1]]], #[[2]]],
Rule[SARAH`LHInput[#[[1]][p__]], #[[2]][p]]
}& /@ lesHouchesInputParameters];

FlexibleSUSY`LowScaleInput = FlexibleSUSY`LowScaleInput /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`SUSYScaleInput = FlexibleSUSY`SUSYScaleInput /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`HighScaleInput = FlexibleSUSY`HighScaleInput /.
lesHouchesInputParameterReplacementRules;

FlexibleSUSY`InitialGuessAtLowScale = FlexibleSUSY`InitialGuessAtLowScale /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`InitialGuessAtSUSYScale = FlexibleSUSY`InitialGuessAtSUSYScale /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`InitialGuessAtHighScale = FlexibleSUSY`InitialGuessAtHighScale /.
lesHouchesInputParameterReplacementRules;

FlexibleSUSY`LowScaleFirstGuess = FlexibleSUSY`LowScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`SUSYScaleFirstGuess = FlexibleSUSY`SUSYScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`HighScaleFirstGuess = FlexibleSUSY`HighScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
];

Options[MakeFlexibleSUSY] :=
{
InputFile -> "FlexibleSUSY.m",
Expand Down Expand Up @@ -2712,12 +2741,6 @@ corresponding tadpole is real or imaginary (only in models with CP

(* store all model parameters *)
allParameters = StripSARAHIndices[((#[[1]])& /@ Join[Join @@ susyBetaFunctions, Join @@ susyBreakingBetaFunctions])];
allIndexReplacementRules = Join[
Parameters`CreateIndexReplacementRules[allParameters],
{Global`upQuarksDRbar[i_,j_] :> Global`upQuarksDRbar[i-1,j-1],
Global`downQuarksDRbar[i_,j_] :> Global`downQuarksDRbar[i-1,j-1],
Global`downLeptonsDRbar[i_,j_] :> Global`downLeptonsDRbar[i-1,j-1]}
];
Parameters`SetModelParameters[allParameters];
DebugPrint["model parameters: ", allParameters];

Expand Down Expand Up @@ -2817,7 +2840,7 @@ corresponding tadpole is real or imaginary (only in models with CP
FlexibleSUSY`FSLesHouchesList = Join[FlexibleSUSY`FSLesHouchesList, {#[[1]], #[[2]]}& /@ FlexibleSUSY`FSExtraInputParameters];
];

(* collect additional parameter definitions and properties *)
(* apply parameter definitions and properties *)
Parameters`ApplyAuxiliaryParameterInfo[FlexibleSUSY`FSAuxiliaryParameterInfo];
Parameters`CheckInputParameterDefinitions[];

Expand All @@ -2826,16 +2849,6 @@ corresponding tadpole is real or imaginary (only in models with CP
DebugPrint["input parameters: ", Parameters`GetInputParameters[]];
DebugPrint["auxiliary parameters: ", Parameters`GetExtraParameters[]];

allInputParameterIndexReplacementRules = Parameters`CreateIndexReplacementRules[
(* {parameter, type} *)
{#[[1]], #[[3]]}& /@ FlexibleSUSY`FSExtraInputParameters
];

allExtraParameterIndexReplacementRules = Parameters`CreateIndexReplacementRules[
(* {parameter, type} *)
{#, Parameters`GetType[#]}& /@ Parameters`GetExtraParameters[]
];

(* backwards compatibility replacements in constraints *)
backwardsCompatRules = {
Global`topDRbar -> Global`upQuarksDRbar,
Expand All @@ -2860,38 +2873,30 @@ corresponding tadpole is real or imaginary (only in models with CP
{FlexibleSUSY`LowScaleInput, FlexibleSUSY`SUSYScaleInput, FlexibleSUSY`HighScaleInput}];

(* replace all indices in the user-defined model file variables *)
allIndexReplacementRules = Join[
Parameters`CreateIndexReplacementRules[allParameters],
{Global`upQuarksDRbar[i_,j_] :> Global`upQuarksDRbar[i-1,j-1],
Global`downQuarksDRbar[i_,j_] :> Global`downQuarksDRbar[i-1,j-1],
Global`downLeptonsDRbar[i_,j_] :> Global`downLeptonsDRbar[i-1,j-1]}
];

allInputParameterIndexReplacementRules = Parameters`CreateIndexReplacementRules[
(* {parameter, type} *)
{#[[1]], #[[3]]}& /@ FlexibleSUSY`FSExtraInputParameters
];

allExtraParameterIndexReplacementRules = Parameters`CreateIndexReplacementRules[
(* {parameter, type} *)
{#, Parameters`GetType[#]}& /@ Parameters`GetExtraParameters[]
];

EvaluateUserInput[];
ReplaceIndicesInUserInput[allIndexReplacementRules];
ReplaceIndicesInUserInput[allInputParameterIndexReplacementRules];
ReplaceIndicesInUserInput[allExtraParameterIndexReplacementRules];

(* replace LHInput[p] by pInput in the constraints *)

lesHouchesInputParameterReplacementRules = Flatten[{
Rule[SARAH`LHInput[#[[1]]], #[[2]]],
Rule[SARAH`LHInput[#[[1]][p__]], #[[2]][p]]
}& /@ lesHouchesInputParameters];

FlexibleSUSY`LowScaleInput = FlexibleSUSY`LowScaleInput /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`SUSYScaleInput = FlexibleSUSY`SUSYScaleInput /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`HighScaleInput = FlexibleSUSY`HighScaleInput /.
lesHouchesInputParameterReplacementRules;

FlexibleSUSY`InitialGuessAtLowScale = FlexibleSUSY`InitialGuessAtLowScale /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`InitialGuessAtSUSYScale = FlexibleSUSY`InitialGuessAtSUSYScale /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`InitialGuessAtHighScale = FlexibleSUSY`InitialGuessAtHighScale /.
lesHouchesInputParameterReplacementRules;

FlexibleSUSY`LowScaleFirstGuess = FlexibleSUSY`LowScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`SUSYScaleFirstGuess = FlexibleSUSY`SUSYScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
FlexibleSUSY`HighScaleFirstGuess = FlexibleSUSY`HighScaleFirstGuess /.
lesHouchesInputParameterReplacementRules;
RenameSLHAInputParametersInUserInput[lesHouchesInputParameters];

If[HaveBVPSolver[FlexibleSUSY`SemiAnalyticSolver],
SemiAnalytic`SetSemiAnalyticParameters[BetaFunction`GetName[#]& /@ susyBreakingBetaFunctions];
Expand Down

0 comments on commit 675a9be

Please sign in to comment.