Skip to content

Commit

Permalink
Add function for setting properties of input parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Dylan Harries committed Feb 1, 2017
1 parent 6c41f3d commit 565fb74
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions meta/Parameters.m
Expand Up @@ -81,6 +81,8 @@
SetOutputParameters::usage="";
SetExtraParameters::usage="";

ApplyAuxiliaryParameterInfo::usage="Saves additional parameter properties"

GetInputParameters::usage="";
GetInputParametersAndTypes::usage="";
GetModelParameters::usage="";
Expand Down Expand Up @@ -287,6 +289,55 @@

AddExtraParameters[pars_List] := AddExtraParameterInfo /@ pars;

ProcessParameterInfo[{parameter_?IsModelParameter, {__}}] :=
Block[{},
Print["Warning: the properties of ", parameter, " are set"];
Print[" in the SARAH model files and cannot be overridden."];
Print[" Ignoring property settings for ", parameter];
];

ProcessParameterInfo[{parameter_?IsInputParameter, properties_List}] :=
Module[{i, inputBlock, ignored = {}, validProperties = properties, property, setting},
If[MatchQ[parameter, Sign[p_] || MatchQ[parameter, FlexibleSUSY`Phase[p_]],
ignored = Join[ignored, Select[properties, MemberQ[{Real, Dimensions, MassDimension}, First[#]]&]];
];
inputBlock = DeleteDuplicates @ Cases[allInputParameters,
{parameter, block_ | {block_, _}, ___} :> block];
If[inputBlock =!= {},
inputBlock = First[inputBlock];
];
If[inputBlock === SARAH`MINPAR || inputBlock === "MINPAR"
|| inputBlock === SARAH`EXTPAR || inputBlock === "EXTPAR"
|| inputBlock === FlexibleSUSY`IMEXTPAR || inputBlock === "IMEXTPAR",
ignored = Join[ignored, Select[properties, MemberQ[{Real, Dimensions}, First[#]]&]];
];
If[ignored =!= {},
Print["Warning: the following properties are not applicable for ", parameter, ": "];
Print[" ", InputForm[ignored]];
];
validProperties = Select[properties, !MemberQ[ignored,#]&];
For[i = 1, i <= Length[validProperties], i++,
property = validProperties[[i, 1]];
setting = validProperties[[i, 2]];
Which[property === Real,
If[setting,
SetInputParameterType[parameter,
GetRealTypeFromDimension[GetParameterDimensions[parameter]]],
SetInputParameterType[parameter,
GetComplexTypeFromDimension[GetParameterDimensions[parameter]]]
];,
property === Dimensions,
SetInputParameterDimensions[parameter, setting],
property === MassDimension,
AddMassDimensionInfo[parameter, setting],
True, Print["Warning: unrecognized property for parameter ", parameter, ": ", property]
];
];
];

ApplyAuxiliaryParameterInfo[properties_List] :=
ProcessParameterInfo /@ properties;

SetModelParameters[pars_List] := allModelParameters = DeleteDuplicates[pars];
SetOutputParameters[pars_List] := allOutputParameters = DeleteDuplicates[pars];
SetPhases[phases_List] := allPhases = DeleteDuplicates[phases];
Expand Down

0 comments on commit 565fb74

Please sign in to comment.