aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/CodeGen.m
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2011-01-22 14:51:14 +0100
committerIan Hinder <ian.hinder@aei.mpg.de>2011-01-22 14:51:14 +0100
commitb78c23f2f55004ddf8e46b2098bc1900dd59e994 (patch)
treeb10ceb45e8e64d8ca355d7e69b2130225ef0cec8 /Tools/CodeGen/CodeGen.m
parent3055bad9489ee91c0853bbf5846ed6047526c019 (diff)
Use DataType function for CCTK_REAL / CCTK_REAL_VEC
Diffstat (limited to 'Tools/CodeGen/CodeGen.m')
-rw-r--r--Tools/CodeGen/CodeGen.m38
1 files changed, 24 insertions, 14 deletions
diff --git a/Tools/CodeGen/CodeGen.m b/Tools/CodeGen/CodeGen.m
index ea661be..cda510e 100644
--- a/Tools/CodeGen/CodeGen.m
+++ b/Tools/CodeGen/CodeGen.m
@@ -129,6 +129,8 @@ GenericGridLoop::usage = "";
NameRoot::usage = "";
PartitionVarList::usage = "";
Quote::usage = "Quote[x] returns x surrounded by quotes";
+DataType::usage = "DataType[] returns a string for the grid function data type (e.g. CCTK_REAL)";
+SetDataType::usage = "SetDataType[type] sets a string for the grid function data type (e.g. CCTK_REAL)";
Begin["`Private`"];
@@ -154,6 +156,14 @@ If[ (lang == "C" || lang == "Fortran"),
InfoMessage[Terse, "Setting Source Language to C"];
];
+SetDataType[type_String] :=
+ dataType = type;
+
+DataType[] :=
+ If[dataType === Symbol["datatype"],
+ Throw["DataType: Have not set a data type"],
+ dataType];
+
(* Code generation utilities; not specific to any language *)
FlattenBlock[b_] := Apply[StringJoin,Map[ToString,If[! AtomQ[b], Flatten[b, Infinity], b]]];
@@ -431,9 +441,9 @@ InitialiseFDSpacingVariablesC[] :=
DeclareAssignVariable["ptrdiff_t", "di", "1"],
DeclareAssignVariable["ptrdiff_t", "dj", "CCTK_GFINDEX3D(cctkGH,0,1,0) - CCTK_GFINDEX3D(cctkGH,0,0,0)"],
DeclareAssignVariable["ptrdiff_t", "dk", "CCTK_GFINDEX3D(cctkGH,0,0,1) - CCTK_GFINDEX3D(cctkGH,0,0,0)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "dx", "ToReal(CCTK_DELTA_SPACE(0))"],
- DeclareAssignVariable["CCTK_REAL_VEC", "dy", "ToReal(CCTK_DELTA_SPACE(1))"],
- DeclareAssignVariable["CCTK_REAL_VEC", "dz", "ToReal(CCTK_DELTA_SPACE(2))"]
+ DeclareAssignVariable[DataType[], "dx", "ToReal(CCTK_DELTA_SPACE(0))"],
+ DeclareAssignVariable[DataType[], "dy", "ToReal(CCTK_DELTA_SPACE(1))"],
+ DeclareAssignVariable[DataType[], "dz", "ToReal(CCTK_DELTA_SPACE(2))"]
};
InitialiseFDSpacingVariablesFortran[] :=
@@ -450,17 +460,17 @@ InitialiseFDVariables[] :=
InitialiseFDSpacingVariablesFortran[],
InitialiseFDSpacingVariablesC[]],
- DeclareAssignVariable["CCTK_REAL_VEC", "dxi", "INV(dx)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "dyi", "INV(dy)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "dzi", "INV(dz)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "khalf", "ToReal(0.5)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "kthird", "ToReal(1.0/3.0)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "ktwothird", "ToReal(2.0/3.0)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "kfourthird", "ToReal(4.0/3.0)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "keightthird", "ToReal(8.0/3.0)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "hdxi", "kmul(ToReal(0.5), dxi)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "hdyi", "kmul(ToReal(0.5), dyi)"],
- DeclareAssignVariable["CCTK_REAL_VEC", "hdzi", "kmul(ToReal(0.5), dzi)"]}];
+ 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)"]}];
GridName[x_] := If[SOURCELANGUAGE == "C",
ToExpression[ToString[x] <> "[index]"],