diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-01-22 16:27:31 +0100 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2011-01-22 16:27:31 +0100 |
commit | fc94de6b90bf95fba9453dc8f8f0f20c8d1b3125 (patch) | |
tree | ef7fe9bc1b822cd728102d0e03f36e9b582bc059 /Tools | |
parent | 40369ccd75e5c22d65d229093002fd1a509b51b7 (diff) |
Only vectorise FD variables and macros when UseVectors is set
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/CodeGen/CalculationFunction.m | 2 | ||||
-rw-r--r-- | Tools/CodeGen/CodeGen.m | 27 | ||||
-rw-r--r-- | Tools/CodeGen/Thorn.m | 18 |
3 files changed, 30 insertions, 17 deletions
diff --git a/Tools/CodeGen/CalculationFunction.m b/Tools/CodeGen/CalculationFunction.m index 4622d6a..d28a8f8 100644 --- a/Tools/CodeGen/CalculationFunction.m +++ b/Tools/CodeGen/CalculationFunction.m @@ -446,7 +446,7 @@ CreateCalculationFunction[calc_, debug_, useCSE_, imp_, opts:OptionsPattern[]] : CommentedBlock["Include user-supplied include files", Map[IncludeFile, lookupDefault[cleancalc, DeclarationIncludes, {}]]], - InitialiseFDVariables[], + InitialiseFDVariables[OptionValue[UseVectors]], definePreDefinitions[pDefs], If[Cases[{pddefs}, SBPDerivative[_], Infinity] != {}, diff --git a/Tools/CodeGen/CodeGen.m b/Tools/CodeGen/CodeGen.m index 7363616..57f38a7 100644 --- a/Tools/CodeGen/CodeGen.m +++ b/Tools/CodeGen/CodeGen.m @@ -456,7 +456,7 @@ InitialiseFDSpacingVariablesFortran[] := } -InitialiseFDVariables[] := +InitialiseFDVariables[vectorise_] := CommentedBlock["Initialise finite differencing variables", { If[SOURCELANGUAGE == "Fortran", InitialiseFDSpacingVariablesFortran[], @@ -465,14 +465,23 @@ InitialiseFDVariables[] := DeclareAssignVariable[DataType[], "dxi", "INV(dx)"], DeclareAssignVariable[DataType[], "dyi", "INV(dy)"], DeclareAssignVariable[DataType[], "dzi", "INV(dz)"], - DeclareAssignVariable[DataType[], "khalf", "ToReal(0.5)"], - DeclareAssignVariable[DataType[], "kthird", "ToReal(1.0/3.0)"], - DeclareAssignVariable[DataType[], "ktwothird", "ToReal(2.0/3.0)"], - DeclareAssignVariable[DataType[], "kfourthird", "ToReal(4.0/3.0)"], - DeclareAssignVariable[DataType[], "keightthird", "ToReal(8.0/3.0)"], - DeclareAssignVariable[DataType[], "hdxi", "kmul(ToReal(0.5), dxi)"], - DeclareAssignVariable[DataType[], "hdyi", "kmul(ToReal(0.5), dyi)"], - DeclareAssignVariable[DataType[], "hdzi", "kmul(ToReal(0.5), dzi)"]}]; + If[vectorise, + {DeclareAssignVariable[DataType[], "khalf", "ToReal(0.5)"], + DeclareAssignVariable[DataType[], "kthird", "ToReal(1.0/3.0)"], + DeclareAssignVariable[DataType[], "ktwothird", "ToReal(2.0/3.0)"], + DeclareAssignVariable[DataType[], "kfourthird", "ToReal(4.0/3.0)"], + DeclareAssignVariable[DataType[], "keightthird", "ToReal(8.0/3.0)"], + DeclareAssignVariable[DataType[], "hdxi", "kmul(ToReal(0.5), dxi)"], + DeclareAssignVariable[DataType[], "hdyi", "kmul(ToReal(0.5), dyi)"], + DeclareAssignVariable[DataType[], "hdzi", "kmul(ToReal(0.5), dzi)"]}, + {DeclareAssignVariable[DataType[], "khalf", "0.5"], + DeclareAssignVariable[DataType[], "kthird", "1/3.0"], + DeclareAssignVariable[DataType[], "ktwothird", "2.0/3.0"], + DeclareAssignVariable[DataType[], "kfourthird", "4.0/3.0"], + DeclareAssignVariable[DataType[], "keightthird", "8.0/3.0"], + DeclareAssignVariable[DataType[], "hdxi", "0.5 * dxi"], + DeclareAssignVariable[DataType[], "hdyi", "0.5 * dyi"], + DeclareAssignVariable[DataType[], "hdzi", "0.5 * dzi"]}]}]; GridName[x_] := If[SOURCELANGUAGE == "C", ToExpression[ToString[x] <> "[index]"], diff --git a/Tools/CodeGen/Thorn.m b/Tools/CodeGen/Thorn.m index 96cdb70..c280afe 100644 --- a/Tools/CodeGen/Thorn.m +++ b/Tools/CodeGen/Thorn.m @@ -474,15 +474,19 @@ CreateSchedule[globalStorageGroups_, scheduledGroups_, scheduledFunctions_] := optional LoopPreIncludes -> {include file list}, Equations -> {{K11_rhs -> 2 A K11, ...}...}} *) -calculationMacros[] := +calculationMacros[vectorise_] := CommentedBlock["Define macros used in calculations", Map[{"#define ", #, "\n"} &, {"INITVALUE (42)", - "INV(x) (kdiv(ToReal(1.0),x))", - "SQR(x) (kmul(x,x))", - "CUB(x) (kmul(x,SQR(x)))", - "QAD(x) (SQR(SQR(x)))" - }]]; + "QAD(x) (SQR(SQR(x)))"} ~Join~ + If[vectorise, + {"INV(x) (kdiv(ToReal(1.0),x))", + "SQR(x) (kmul(x,x))", + "CUB(x) (kmul(x,SQR(x)))"}, + {"INV(x) ((1.0) / (x))", + "SQR(x) ((x) * (x))", + "CUB(x) ((x) * (x) * (x))"}] + ]]; (* Given a list of Calculation structures as defined above, create a CodeGen representation of a source file that defines a function for @@ -514,7 +518,7 @@ CreateSetterSource[calcs_, debug_, useCSE_, include_, imp_, include, If[OptionValue[UseLoopControl], {"loopcontrol.h"}, {}], If[OptionValue[UseVectors], {"vectors.h"}, {}]]], - calculationMacros[], + calculationMacros[OptionValue[UseVectors]], (* For each function structure passed, create the function and insert it *) |