From 40a4f62a2305e0fa27a77685a08f34030019e891 Mon Sep 17 00:00:00 2001 From: Dylan Harries Date: Fri, 20 Jan 2017 11:31:50 +1030 Subject: [PATCH] Add function for calculating model parameters from coefficients --- meta/FlexibleSUSY.m | 7 ++++--- meta/SemiAnalytic.m | 8 ++++---- templates/semi_analytic_model.cpp.in | 5 ----- templates/semi_analytic_model.hpp.in | 2 -- templates/semi_analytic_solutions.cpp.in | 6 ++++++ templates/semi_analytic_solutions.hpp.in | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/meta/FlexibleSUSY.m b/meta/FlexibleSUSY.m index 28df1d293..2d97cdf98 100644 --- a/meta/FlexibleSUSY.m +++ b/meta/FlexibleSUSY.m @@ -1460,6 +1460,7 @@ corresponding tadpole is real or imaginary (only in models with CP createBasisEvaluators = "", applyBoundaryConditions = "", datasets, numberOfTrialPoints, initializeTrialBoundaryValues = "", createLinearSystemSolvers = "", calculateCoefficients = "", + evaluateSemiAnalyticSolns = "", calculateCoefficientsPrototypes = "", calculateCoefficientsFunctions = ""}, semiAnalyticSolutionsDefs = SemiAnalytic`CreateSemiAnalyticSolutionsDefinitions[semiAnalyticSolns]; boundaryValueStructDefs = SemiAnalytic`CreateLocalBoundaryValuesDefinitions[semiAnalyticSolns]; @@ -1472,6 +1473,7 @@ corresponding tadpole is real or imaginary (only in models with CP createLinearSystemSolvers = SemiAnalytic`CreateLinearSystemSolvers[datasets, semiAnalyticSolns]; {numberOfTrialPoints, initializeTrialBoundaryValues} = SemiAnalytic`InitializeTrialInputValues[datasets]; applyBoundaryConditions = SemiAnalytic`ApplySemiAnalyticBoundaryConditions[semiAnalyticBCs, semiAnalyticSolns]; + evaluateSemiAnalyticSolns = SemiAnalytic`EvaluateSemiAnalyticSolutions[semiAnalyticSolns]; calculateCoefficients = SemiAnalytic`CalculateCoefficients[datasets]; {calculateCoefficientsPrototypes, calculateCoefficientsFunctions} = SemiAnalytic`CreateCoefficientsCalculations[semiAnalyticSolns]; WriteOut`ReplaceInFiles[files, { "@semiAnalyticSolutionsDefs@" -> IndentText[WrapLines[semiAnalyticSolutionsDefs]], @@ -1486,6 +1488,7 @@ corresponding tadpole is real or imaginary (only in models with CP "@createLinearSystemSolvers@" -> IndentText[WrapLines[createLinearSystemSolvers]], "@calculateCoefficients@" -> IndentText[calculateCoefficients], "@applyBoundaryConditions@" -> IndentText[WrapLines[applyBoundaryConditions]], + "@evaluateSemiAnalyticSolns@" -> IndentText[WrapLines[evaluateSemiAnalyticSolns]], "@calculateCoefficientsPrototypes@" -> IndentText[calculateCoefficientsPrototypes], "@calculateCoefficientsFunctions@" -> calculateCoefficientsFunctions, Sequence @@ GeneralReplacementRules[] }]; @@ -1493,16 +1496,14 @@ corresponding tadpole is real or imaginary (only in models with CP WriteSemiAnalyticModelClass[semiAnalyticBCs_List, semiAnalyticSolns_List, files_List] := Module[{semiAnalyticSolutionsDefs = "", boundaryValuesDefs = "", - calculateParameterValues = "", calculateCoeffFunctions = "", + calculateCoeffFunctions = "", setBoundaryValueParameters = ""}, semiAnalyticSolutionsDefs = SemiAnalytic`CreateSemiAnalyticSolutionsDefinitions[semiAnalyticSolns]; boundaryValuesDefs = SemiAnalytic`CreateBoundaryValuesDefinitions[semiAnalyticSolns]; applySemiAnalyticBCs = SemiAnalytic`ApplySemiAnalyticBoundaryConditions[semiAnalyticBCs, semiAnalyticSolns]; - calculateParameterValues = SemiAnalytic`EvaluateSemiAnalyticSolutions[semiAnalyticSolns]; setBoundaryValueParameters = SemiAnalytic`SetModelBoundaryValueParameters[semiAnalyticSolns]; WriteOut`ReplaceInFiles[files, { "@semiAnalyticSolutionsDefs@" -> IndentText[WrapLines[semiAnalyticSolutionsDefs]], "@boundaryValuesDefs@" -> IndentText[WrapLines[boundaryValuesDefs]], - "@calculateParameterValues@" -> IndentText[WrapLines[calculateParameterValues]], "@calculateCoeffFunctions@" -> calculateCoeffFunctions, "@setBoundaryValueParameters@" -> IndentText[WrapLines[setBoundaryValueParameters]], Sequence @@ GeneralReplacementRules[] }]; diff --git a/meta/SemiAnalytic.m b/meta/SemiAnalytic.m index 63f392966..15f67289b 100644 --- a/meta/SemiAnalytic.m +++ b/meta/SemiAnalytic.m @@ -796,17 +796,17 @@ ExpandSemiAnalyticSolutions[solutions_List] := ExpandSemiAnalyticSolution /@ solutions; -EvaluateSemiAnalyticSolution[solution_] := +EvaluateSemiAnalyticSolution[solution_, class_String] := Module[{parameter, basisRules, coeffs}, parameter = GetName[solution]; basisRules = Rule[#, CreateBoundaryValue[#]]& /@ (GetBoundaryValueParameters[solution]); coeffs = CreateCoefficients[solution]; - Parameters`SetParameter[parameter, Dot[coeffs, GetBasis[solution]] /. basisRules] + Parameters`SetParameter[parameter, Dot[coeffs, GetBasis[solution]] /. basisRules, class] ]; -EvaluateSemiAnalyticSolutions[solutions_List] := +EvaluateSemiAnalyticSolutions[solutions_List, class_String:"model."] := Module[{result = ""}, - (result = result <> EvaluateSemiAnalyticSolution[#])& /@ solutions; + (result = result <> EvaluateSemiAnalyticSolution[#, class])& /@ solutions; Return[result]; ]; diff --git a/templates/semi_analytic_model.cpp.in b/templates/semi_analytic_model.cpp.in index 7eddcead5..66826c2db 100644 --- a/templates/semi_analytic_model.cpp.in +++ b/templates/semi_analytic_model.cpp.in @@ -81,11 +81,6 @@ void CLASSNAME::set_precision(double p) @ModelName@_mass_eigenstates::set_precision(p); } -void CLASSNAME::calculate_parameter_values() -{ -@calculateParameterValues@ -} - @calculateCoeffFunctions@ std::ostream& operator<<(std::ostream& ostr, const @ModelName@& model) diff --git a/templates/semi_analytic_model.hpp.in b/templates/semi_analytic_model.hpp.in index 91e06bd64..a510f1906 100644 --- a/templates/semi_analytic_model.hpp.in +++ b/templates/semi_analytic_model.hpp.in @@ -69,8 +69,6 @@ private: @semiAnalyticSolutionsDefs@ // boundary values @boundaryValuesDefs@ - - void calculate_parameter_values(); }; std::ostream& operator<<(std::ostream&, const @ModelName@&); diff --git a/templates/semi_analytic_solutions.cpp.in b/templates/semi_analytic_solutions.cpp.in index ed5455acc..bb76219f1 100644 --- a/templates/semi_analytic_solutions.cpp.in +++ b/templates/semi_analytic_solutions.cpp.in @@ -98,5 +98,11 @@ void @ModelName@_semi_analytic_solutions::set_to_boundary_values( @applyBoundaryConditions@ } +void @ModelName@_semi_analytic_solutions::evaluate_solutions( + @ModelName@_soft_parameters& model) +{ +@evaluateSemiAnalyticSolns@ +} + @calculateCoefficientsFunctions@ } // namespace flexiblesusy diff --git a/templates/semi_analytic_solutions.hpp.in b/templates/semi_analytic_solutions.hpp.in index 8e157632c..33b71083d 100644 --- a/templates/semi_analytic_solutions.hpp.in +++ b/templates/semi_analytic_solutions.hpp.in @@ -64,7 +64,7 @@ public: @boundaryValueSetters@ @coefficientGetters@ void calculate_coefficients(const @ModelName@_soft_parameters&); - void set_semi_analytic_solutions(@ModelName@_soft_parameters&); + void evaluate_solutions(@ModelName@_soft_parameters&); private: struct Boundary_values {