aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2012-01-24 21:29:02 -0600
committerIan Hinder <ian.hinder@aei.mpg.de>2012-01-24 21:29:02 -0600
commit04dc4644b0230d54013507af0258d151e06bd08d (patch)
tree95faac4e2e8fcb01e97c4cffd81357dfaab920b4 /Tools
parent5ca7066545f552d1e5b1eca28bfc9ea7d66c200a (diff)
Tidy up argument passing for calculation and source file generation
Diffstat (limited to 'Tools')
-rw-r--r--Tools/CodeGen/CalculationBoundaries.m6
-rw-r--r--Tools/CodeGen/CalculationFunction.m9
-rw-r--r--Tools/CodeGen/KrancThorn.m5
-rw-r--r--Tools/CodeGen/Thorn.m9
4 files changed, 17 insertions, 12 deletions
diff --git a/Tools/CodeGen/CalculationBoundaries.m b/Tools/CodeGen/CalculationBoundaries.m
index 3a66aba..b395b43 100644
--- a/Tools/CodeGen/CalculationBoundaries.m
+++ b/Tools/CodeGen/CalculationBoundaries.m
@@ -45,8 +45,10 @@ groupsSetInCalc[calc_, groups_] :=
evolved variables. Currently only a flat boundary condition is
implemented. *)
-CalculationBoundariesFunction[calc_List, imp_String] :=
- Module[{selectGroup, groups, groupNamesSet},
+CalculationBoundariesFunction[calc_List] :=
+ Module[{selectGroup, groups, groupNamesSet, imp},
+
+ imp = lookup[calc,Implementation];
(* If the calculation sets every grid point, we don't need to apply
any boundary condition *)
diff --git a/Tools/CodeGen/CalculationFunction.m b/Tools/CodeGen/CalculationFunction.m
index bdbf040..8492389 100644
--- a/Tools/CodeGen/CalculationFunction.m
+++ b/Tools/CodeGen/CalculationFunction.m
@@ -374,15 +374,18 @@ pdCanonicalOrdering[name_[inds___] -> x_] :=
Calculation function generation
-------------------------------------------------------------------------- *)
-Options[CreateCalculationFunction] = ThornOptions;
+Options[CreateCalculationFunction] = Join[ThornOptions,{Debug -> False}];
DefFn[
- CreateCalculationFunction[calcp_, debug_, imp_, opts:OptionsPattern[]] :=
+ CreateCalculationFunction[calcp_, opts:OptionsPattern[]] :=
Module[{gfs, allSymbols, knownSymbols,
shorts, eqs, parameters, parameterRules, odeGroups,
functionName, dsUsed, groups, pddefs, cleancalc, eqLoop, where,
addToStencilWidth, pDefs, haveCondTextuals, condTextuals, calc,
- kernelCall},
+ kernelCall,debug,imp},
+
+ debug = OptionValue[Debug];
+ imp = lookup[calcp, Implementation];
functionName = ToString@lookup[calcp, Name];
bodyFunctionName = functionName <> "_Body";
diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m
index 29416a3..b287e68 100644
--- a/Tools/CodeGen/KrancThorn.m
+++ b/Tools/CodeGen/KrancThorn.m
@@ -278,10 +278,11 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[
calcs = Map[Join[#,
{ODEGroups -> Join[odeGroups, rhsODEGroups],
Parameters -> allParams,
- PartialDerivatives -> partialDerivs}] &, calcs];
+ PartialDerivatives -> partialDerivs,
+ Implementation -> implementation}] &, calcs];
If[!OptionValue[UseCaKernel],
- calcSources = Map[CreateSetterSource[{#}, False, {}, implementation, opts] &, calcs];
+ calcSources = Map[CreateSetterSource[{#}, False, {}, opts] &, calcs];
calcFilenames = Map[lookup[#, Name] <> ext &, calcs],
(* else *)
calcSources = Map[CaKernelCode, calcs];
diff --git a/Tools/CodeGen/Thorn.m b/Tools/CodeGen/Thorn.m
index 3385bb0..25d3d31 100644
--- a/Tools/CodeGen/Thorn.m
+++ b/Tools/CodeGen/Thorn.m
@@ -498,9 +498,9 @@ calculationMacros[vectorise_] :=
Options[CreateSetterSource] = ThornOptions;
-CreateSetterSource[calcs_, debug_, include_, imp_,
+CreateSetterSource[calcs_, debug_, include_,
opts:OptionsPattern[]] :=
- Module[{},
+ Module[{calc = First[calcs],bodyFunction},
If[!MatchQ[include, _List],
Throw["CreateSetterSource: Include should be a list but is in fact " <> ToString[include]]];
@@ -529,10 +529,9 @@ CreateSetterSource[calcs_, debug_, include_, imp_,
(* For each function structure passed, create the function and
insert it *)
- CalculationBoundariesFunction[First[calcs], imp],
+ CalculationBoundariesFunction[First[calcs]],
- Map[CreateCalculationFunction[# , debug, imp, opts] &,
- calcs]}];
+ CreateCalculationFunction[calc, opts]}];