From d609a1670c3eb43e6eeaee58b54a5bdb1d1c5a8b Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Fri, 13 Sep 2013 16:40:05 +0200 Subject: Move conservation calculation code processing from KrancThorn.m to ConservationCalculation.m --- Tools/CodeGen/ConservationCalculation.m | 33 ++++++++++++++++++++++++++++++++- Tools/CodeGen/KrancThorn.m | 26 +------------------------- 2 files changed, 33 insertions(+), 26 deletions(-) (limited to 'Tools') diff --git a/Tools/CodeGen/ConservationCalculation.m b/Tools/CodeGen/ConservationCalculation.m index 91926ad..3fa6696 100644 --- a/Tools/CodeGen/ConservationCalculation.m +++ b/Tools/CodeGen/ConservationCalculation.m @@ -19,7 +19,7 @@ *) BeginPackage["ConservationCalculation`", {"Errors`", "Helpers`", "Kranc`", - "MapLookup`", "KrancGroups`", "CodeGenCalculation`", "Differencing`"}]; + "MapLookup`", "KrancGroups`", "CodeGenCalculation`", "Differencing`", "Code`", "Object`"}]; ProcessConservationCalculation; ConservationDifferencingOperators; @@ -32,6 +32,7 @@ ConservationDifferencingRealParameters; hlleAlpha; PrimitiveEquations; ConservedEquations; +ConservationCalculationProcessCode; Begin["`Private`"]; @@ -218,6 +219,36 @@ ConservationCalculationDeclaredGroups[calc_] := ToString[#]<>"_flux_group", {fluxSymbol[#]}, {}] &, consVars[calc]]]; +Options[ConservationCalculationProcessCode] = ThornOptions; + +DefFn[ + ConservationCalculationProcessCode[cIn_Code,opts:OptionsPattern[]] := + Module[ + {inputConsCalcs, outputConsCalcs, consGroups, c=cIn}, + + inputConsCalcs = Map[Append[#, Groups -> GetObjectField[c, "Groups"]] &, + OptionValue[ConservationCalculations]]; + + outputConsCalcs = + Flatten[ + Map[ + ProcessConservationCalculation[#, GetObjectField[c, "Name"]] &, + inputConsCalcs], + 1]; + + outputConsCalcs = + Map[Join[#, {PartialDerivatives -> GetObjectField[c, "PartialDerivatives"], + Implementation -> GetObjectField[c, "Implementation"]}] &, + outputConsCalcs]; + + consGroups = Union@Flatten[ + Map[ConservationCalculationDeclaredGroups, inputConsCalcs],1]; + + c = JoinObjectField[c, "Calculations", outputConsCalcs]; + c = JoinObjectField[c, "Groups", consGroups]; + c = JoinObjectField[c, "DeclaredGroups", Map[groupName, consGroups]]; + c]]; + End[]; EndPackage[]; diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m index e684f2b..de89f28 100644 --- a/Tools/CodeGen/KrancThorn.m +++ b/Tools/CodeGen/KrancThorn.m @@ -192,31 +192,7 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[ Conservation Calculations ------------------------------------------------------------------------ *) - Module[ - {inputConsCalcs, outputConsCalcs, consGroups}, - - inputConsCalcs = Map[Append[#, Groups -> GetObjectField[c, "Groups"]] &, - OptionValue[ConservationCalculations]]; - - outputConsCalcs = - Flatten[ - Map[ - ProcessConservationCalculation[#, GetObjectField[c, "Name"]] &, - inputConsCalcs], - 1]; - - outputConsCalcs = - Map[Join[#, {PartialDerivatives -> GetObjectField[c, "PartialDerivatives"], - Implementation -> GetObjectField[c, "Implementation"]}] &, - outputConsCalcs]; - - consGroups = Union@Flatten[ - Map[ConservationCalculationDeclaredGroups, inputConsCalcs],1]; - - c = JoinObjectField[c, "Calculations", outputConsCalcs]; - c = JoinObjectField[c, "Groups", consGroups]; - c = JoinObjectField[c, "DeclaredGroups", Map[groupName, consGroups]]]; - + c = ConservationCalculationProcessCode[c, opts]; (* ------------------------------------------------------------------------ ODEs -- cgit v1.2.3