Skip to content

Commit

Permalink
avoid expensive copy of RGE classes in calc_beta(unsigned) function
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Dec 9, 2016
1 parent e759ff7 commit cfba717
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 30 deletions.
8 changes: 4 additions & 4 deletions meta/BetaFunction.m
Expand Up @@ -282,14 +282,14 @@
(* only parallelization of 3L betas leads to a speed-up *)
allBeta3LParallel = TextFormatting`IndentText @ CreateBetaFunctionCalls[betaFunctions,3,True];
StringJoin[DeclareBetaFunction /@ betaFunctions] <> "\n" <>
"if (get_loops() > 0) {\n" <>
"if (loops > 0) {\n" <>
TextFormatting`IndentText[
"const auto TRACE_STRUCT = CALCULATE_TRACES();\n\n" <>
"const auto TRACE_STRUCT = CALCULATE_TRACES(loops);\n\n" <>
allBeta1L <> "\n" <>
"if (get_loops() > 1) {\n" <>
"if (loops > 1) {\n" <>
allBeta2L <> "\n" <>
TextFormatting`IndentText[
"if (get_loops() > 2) {\n" <>
"if (loops > 2) {\n" <>
"#ifdef ENABLE_THREADS\n" <>
allBeta3LParallel <>
"#else\n" <>
Expand Down
21 changes: 9 additions & 12 deletions templates/soft_parameters.cpp.in
Expand Up @@ -31,7 +31,7 @@ namespace flexiblesusy {
#define INPUT(parameter) input.parameter
#define TRACE_STRUCT soft_traces
#define TRACE_STRUCT_TYPE Soft_traces
#define CALCULATE_TRACES() calc_soft_traces();
#define CALCULATE_TRACES(l) calc_soft_traces(l);

const int @ModelName@_soft_parameters::numberOfParameters;

Expand All @@ -57,21 +57,18 @@ Eigen::ArrayXd @ModelName@_soft_parameters::beta() const
return calc_beta().get().unaryExpr(Chop<double>(get_zero_threshold()));
}

@ModelName@_soft_parameters @ModelName@_soft_parameters::calc_beta() const
@ModelName@_soft_parameters @ModelName@_soft_parameters::calc_beta(unsigned loops) const
{
@beta@

const @ModelName@_susy_parameters susy_betas(@ModelName@_susy_parameters::calc_beta());
const @ModelName@_susy_parameters susy_betas(@ModelName@_susy_parameters::calc_beta(loops));

return @ModelName@_soft_parameters(susy_betas, @betaParameterList@);
}

@ModelName@_soft_parameters @ModelName@_soft_parameters::calc_beta(unsigned loops) const
@ModelName@_soft_parameters @ModelName@_soft_parameters::calc_beta() const
{
@ModelName@_soft_parameters p(*this);
p.set_loops(loops);

return p.calc_beta();
return calc_beta(get_loops());
}

void @ModelName@_soft_parameters::clear()
Expand Down Expand Up @@ -105,19 +102,19 @@ void @ModelName@_soft_parameters::set(const Eigen::ArrayXd& pars)
@set@
}

@ModelName@_soft_parameters::Soft_traces @ModelName@_soft_parameters::calc_soft_traces() const
@ModelName@_soft_parameters::Soft_traces @ModelName@_soft_parameters::calc_soft_traces(unsigned loops) const
{
Soft_traces soft_traces;

if (get_loops() > 0) {
if (loops > 0) {
@calc1LTraces@
}

if (get_loops() > 1) {
if (loops > 1) {
@calc2LTraces@
}

if (get_loops() > 2) {
if (loops > 2) {
@calc3LTraces@
}

Expand Down
2 changes: 1 addition & 1 deletion templates/soft_parameters.hpp.in
Expand Up @@ -63,7 +63,7 @@ private:
struct Soft_traces {
@traceDefs@
};
Soft_traces calc_soft_traces() const;
Soft_traces calc_soft_traces(unsigned) const;

@singleBetaFunctionsDecls@
};
Expand Down
21 changes: 9 additions & 12 deletions templates/susy_parameters.cpp.in
Expand Up @@ -32,7 +32,7 @@ namespace flexiblesusy {
#define INPUT(parameter) input.parameter
#define TRACE_STRUCT susy_traces
#define TRACE_STRUCT_TYPE Susy_traces
#define CALCULATE_TRACES() calc_susy_traces();
#define CALCULATE_TRACES(l) calc_susy_traces(l);

const int @ModelName@_susy_parameters::numberOfParameters;

Expand Down Expand Up @@ -64,20 +64,17 @@ Eigen::ArrayXd @ModelName@_susy_parameters::beta() const
return calc_beta().get().unaryExpr(Chop<double>(get_zero_threshold()));
}

@ModelName@_susy_parameters @ModelName@_susy_parameters::calc_beta() const
@ModelName@_susy_parameters @ModelName@_susy_parameters::calc_beta(unsigned loops) const
{
@beta@

return @ModelName@_susy_parameters(get_scale(), get_loops(), get_thresholds(), input,
return @ModelName@_susy_parameters(get_scale(), loops, get_thresholds(), input,
@betaParameterList@);
}

@ModelName@_susy_parameters @ModelName@_susy_parameters::calc_beta(unsigned loops) const
@ModelName@_susy_parameters @ModelName@_susy_parameters::calc_beta() const
{
@ModelName@_susy_parameters p(*this);
p.set_loops(loops);

return p.calc_beta();
return calc_beta(get_loops());
}

void @ModelName@_susy_parameters::clear()
Expand Down Expand Up @@ -123,19 +120,19 @@ void @ModelName@_susy_parameters::set_input_parameters(const @ModelName@_input_p
input = input_;
}

@ModelName@_susy_parameters::Susy_traces @ModelName@_susy_parameters::calc_susy_traces() const
@ModelName@_susy_parameters::Susy_traces @ModelName@_susy_parameters::calc_susy_traces(unsigned loops) const
{
Susy_traces susy_traces;

if (get_loops() > 0) {
if (loops > 0) {
@calc1LTraces@
}

if (get_loops() > 1) {
if (loops > 1) {
@calc2LTraces@
}

if (get_loops() > 2) {
if (loops > 2) {
@calc3LTraces@
}

Expand Down
2 changes: 1 addition & 1 deletion templates/susy_parameters.hpp.in
Expand Up @@ -72,7 +72,7 @@ private:
struct Susy_traces {
@traceDefs@
};
Susy_traces calc_susy_traces() const;
Susy_traces calc_susy_traces(unsigned) const;

@singleBetaFunctionsDecls@
};
Expand Down

0 comments on commit cfba717

Please sign in to comment.