aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2012-04-11 09:02:42 +0200
committerIan Hinder <ian.hinder@aei.mpg.de>2012-04-11 09:02:42 +0200
commit64b4f58d0f6a4a57cf8e07a41386bb224ed9ca4a (patch)
tree0009eb7da3ad630dc9a4ff838c866cc0189ac3cf /Tools/CodeGen
parent6bed8e74aac5bd1e76f2e7a4d8efcf166a60c6e6 (diff)
Calculation.m: Give derivative calculations slightly better names
Diffstat (limited to 'Tools/CodeGen')
-rw-r--r--Tools/CodeGen/Calculation.m8
1 files changed, 6 insertions, 2 deletions
diff --git a/Tools/CodeGen/Calculation.m b/Tools/CodeGen/Calculation.m
index ef8625b..669e476 100644
--- a/Tools/CodeGen/Calculation.m
+++ b/Tools/CodeGen/Calculation.m
@@ -176,10 +176,14 @@ separateDerivativesInCalculation[calc_] :=
ThrowError["Separating derivatives in an automatically scheduled function is not supported"]];
Module[
- {derivGFName, derivs, sepDerivs, calc2, replaceSymmetric},
+ {derivGFName, derivGFName2, derivs, sepDerivs, calc2, replaceSymmetric},
derivGFName[pd_[var_,inds___]] :=
Symbol["Global`D"<>ToString[pd]<>ToString[var]<>Apply[StringJoin,Map[ToString,{inds}]]];
+ derivGFName2[pd_[var_,inds___]] :=
+ "D"<>ToString[pd]<>ToString[var]<>"_"<>Apply[StringJoin,Map[ToString,{inds}]];
+
+
replaceSymmetric = pd_[var_,i_,j_] /; i > j :> pd[var,j,i];
derivs = DeleteDuplicates[GetDerivatives[calc] /. replaceSymmetric];
sepDerivs = Flatten[Map[Cases[derivs, #] &, sepPat],1];
@@ -191,7 +195,7 @@ separateDerivativesInCalculation[calc_] :=
Equations,
{derivName -> sepDeriv}];
calc1 = mapReplace[calc1, Schedule, Map[#<>" before "<>lookup[calc,Name] &, lookup[calc,Schedule]]];
- calc1 = mapReplace[calc1, Name, lookup[calc,Name]<>"_"<>ToString@derivName];
+ calc1 = mapReplace[calc1, Name, lookup[calc,Name]<>"_"<>derivGFName2[sepDeriv]];
currentGroups = lookup[calc, LocalGroups, {}];
localGroups = Append[currentGroups, {ToString@derivName<>"_group", {derivName}}];
calc1 = mapReplaceAdd[calc1, LocalGroups, localGroups];