diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2012-01-24 21:29:02 -0600 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2012-01-24 21:29:02 -0600 |
commit | 04dc4644b0230d54013507af0258d151e06bd08d (patch) | |
tree | 95faac4e2e8fcb01e97c4cffd81357dfaab920b4 /Tools | |
parent | 5ca7066545f552d1e5b1eca28bfc9ea7d66c200a (diff) |
Tidy up argument passing for calculation and source file generation
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/CodeGen/CalculationBoundaries.m | 6 | ||||
-rw-r--r-- | Tools/CodeGen/CalculationFunction.m | 9 | ||||
-rw-r--r-- | Tools/CodeGen/KrancThorn.m | 5 | ||||
-rw-r--r-- | Tools/CodeGen/Thorn.m | 9 |
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]}]; |