forked from Expander/FlexibleSUSY
-
Notifications
You must be signed in to change notification settings - Fork 14
/
librarylink.m.in
169 lines (151 loc) · 6.89 KB
/
librarylink.m.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
lib@ModelName@ = FileNameJoin[{Directory[], "models", "@ModelName@", "@ModelName@_librarylink.so"}];
FS@ModelName@GetSettings = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@GetSettings", LinkObject, LinkObject];
FS@ModelName@GetSMInputParameters = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@GetSMInputParameters", LinkObject, LinkObject];
FS@ModelName@GetInputParameters = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@GetInputParameters", LinkObject, LinkObject];
FS@ModelName@OpenHandleLib = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@OpenHandle", {{Real,1}}, Integer];
FS@ModelName@CloseHandle = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CloseHandle", {Integer}, Void];
FS@ModelName@SetLib = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@Set", {Integer, {Real,1}}, Void];
FS@ModelName@CalculateSpectrum = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CalculateSpectrum", LinkObject, LinkObject];
FS@ModelName@CalculateObservables = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CalculateObservables", LinkObject, LinkObject];
FS@ModelName@CalculateSpectrum::error = "`1`";
FS@ModelName@CalculateSpectrum::warning = "`1`";
FS@ModelName@CalculateObservables::error = "`1`";
FS@ModelName@CalculateObservables::warning = "`1`";
FS@ModelName@::info = "`1`";
FS@ModelName@Message[s_] := Message[FS@ModelName@::info, s];
fsDefaultSettings = {
precisionGoal -> 1.*^-4, (* FlexibleSUSY[0] *)
maxIterations -> 0, (* FlexibleSUSY[1] *)
calculateStandardModelMasses -> 0, (* FlexibleSUSY[3] *)
poleMassLoopOrder -> 2, (* FlexibleSUSY[4] *)
ewsbLoopOrder -> 2, (* FlexibleSUSY[5] *)
betaFunctionLoopOrder -> 2, (* FlexibleSUSY[6] *)
thresholdCorrectionsLoopOrder -> 2,(* FlexibleSUSY[7] *)
higgs2loopCorrectionAtAs -> 1, (* FlexibleSUSY[8] *)
higgs2loopCorrectionAbAs -> 1, (* FlexibleSUSY[9] *)
higgs2loopCorrectionAtAt -> 1, (* FlexibleSUSY[10] *)
higgs2loopCorrectionAtauAtau -> 1, (* FlexibleSUSY[11] *)
forceOutput -> 0, (* FlexibleSUSY[12] *)
top2loopCorrectionsQCD -> 1, (* FlexibleSUSY[13] *)
betaZeroThreshold -> 1.*^-11, (* FlexibleSUSY[14] *)
forcePositiveMasses -> 0, (* FlexibleSUSY[16] *)
poleMassScale -> 0, (* FlexibleSUSY[17] *)
eftPoleMassScale -> 0, (* FlexibleSUSY[18] *)
eftMatchingScale -> 0, (* FlexibleSUSY[19] *)
eftMatchingLoopOrderUp -> 2, (* FlexibleSUSY[20] *)
eftMatchingLoopOrderDown -> 1, (* FlexibleSUSY[21] *)
eftHiggsIndex -> 0, (* FlexibleSUSY[22] *)
parameterOutputScale -> 0 (* MODSEL[12] *)
};
fsDefaultSMParameters = {
alphaEmMZ -> 1/127.916, (* SMINPUTS[1] *)
GF -> 1.16637*^-5, (* SMINPUTS[2] *)
alphaSMZ -> 0.1184, (* SMINPUTS[3] *)
MZ -> 91.1876, (* SMINPUTS[4] *)
mbmb -> 4.18, (* SMINPUTS[5] *)
Mt -> 173.34, (* SMINPUTS[6] *)
Mtau -> 1.777, (* SMINPUTS[7] *)
Mv3 -> 0, (* SMINPUTS[8] *)
MW -> 80.385, (* SMINPUTS[9] *)
Me -> 0.000510998902, (* SMINPUTS[11] *)
Mv1 -> 0, (* SMINPUTS[12] *)
Mm -> 0.1056583715, (* SMINPUTS[13] *)
Mv2 -> 0, (* SMINPUTS[14] *)
md2GeV -> 0.00475, (* SMINPUTS[21] *)
mu2GeV -> 0.0024, (* SMINPUTS[22] *)
ms2GeV -> 0.104, (* SMINPUTS[23] *)
mcmc -> 1.27, (* SMINPUTS[24] *)
CKMTheta12 -> 0,
CKMTheta13 -> 0,
CKMTheta23 -> 0,
CKMDelta -> 0,
PMNSTheta12 -> 0,
PMNSTheta13 -> 0,
PMNSTheta23 -> 0,
PMNSDelta -> 0,
PMNSAlpha1 -> 0,
PMNSAlpha2 -> 0,
alphaEm0 -> 1/137.035999074,
Mh -> 125.09
};
fs@ModelName@DefaultInputParameters = {
@setInputParameterDefaultArguments@
};
Options[FS@ModelName@OpenHandle] = {
Sequence @@ fsDefaultSettings,
Sequence @@ fsDefaultSMParameters,
Sequence @@ fs@ModelName@DefaultInputParameters
};
FS@ModelName@OpenHandle[a___, (fsSettings | fsSMParameters | fsModelParameters) -> s_List, r___] :=
FS@ModelName@OpenHandle[a, Sequence @@ s, r];
FS@ModelName@OpenHandle[OptionsPattern[]] :=
FS@ModelName@OpenHandleLib[
{
(* spectrum generator settings *)
OptionValue[precisionGoal],
OptionValue[maxIterations],
OptionValue[calculateStandardModelMasses],
OptionValue[poleMassLoopOrder],
OptionValue[ewsbLoopOrder],
OptionValue[betaFunctionLoopOrder],
OptionValue[thresholdCorrectionsLoopOrder],
OptionValue[higgs2loopCorrectionAtAs],
OptionValue[higgs2loopCorrectionAbAs],
OptionValue[higgs2loopCorrectionAtAt],
OptionValue[higgs2loopCorrectionAtauAtau],
OptionValue[forceOutput],
OptionValue[top2loopCorrectionsQCD],
OptionValue[betaZeroThreshold],
OptionValue[forcePositiveMasses],
OptionValue[poleMassScale],
OptionValue[eftPoleMassScale],
OptionValue[eftMatchingScale],
OptionValue[eftMatchingLoopOrderUp],
OptionValue[eftMatchingLoopOrderDown],
OptionValue[eftHiggsIndex],
OptionValue[parameterOutputScale],
(* Standard Model input parameters *)
OptionValue[alphaEmMZ],
OptionValue[GF],
OptionValue[alphaSMZ],
OptionValue[MZ],
OptionValue[mbmb],
OptionValue[Mt],
OptionValue[Mtau],
OptionValue[Mv3],
OptionValue[MW],
OptionValue[Me],
OptionValue[Mv1],
OptionValue[Mm],
OptionValue[Mv2],
OptionValue[md2GeV],
OptionValue[mu2GeV],
OptionValue[ms2GeV],
OptionValue[mcmc],
OptionValue[CKMTheta12],
OptionValue[CKMTheta13],
OptionValue[CKMTheta23],
OptionValue[CKMDelta],
OptionValue[PMNSTheta12],
OptionValue[PMNSTheta13],
OptionValue[PMNSTheta23],
OptionValue[PMNSDelta],
OptionValue[PMNSAlpha1],
OptionValue[PMNSAlpha2],
OptionValue[alphaEm0],
OptionValue[Mh]
(* @ModelName@ input parameters *)
@setInputParameterArguments@
}
];
Options[FS@ModelName@Set] = Options[FS@ModelName@OpenHandle];
FS@ModelName@Set[handle_Integer, a___, (fsSettings | fsSMParameters | fsModelParameters) -> s_List, r___] :=
FS@ModelName@Set[handle, a, Sequence @@ s, r];
FS@ModelName@Set[handle_Integer, p:OptionsPattern[]] :=
FS@ModelName@SetLib[
handle,
First /@ Options[FS@ModelName@Set] /.
{ p } /.
FS@ModelName@GetSettings[handle] /.
FS@ModelName@GetSMInputParameters[handle] /.
FS@ModelName@GetInputParameters[handle]];