diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-13 16:40:05 +0200 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-13 16:40:05 +0200 |
commit | d609a1670c3eb43e6eeaee58b54a5bdb1d1c5a8b (patch) | |
tree | eb1065dc8aec782ed70460aea7724122a20d2331 | |
parent | 9ec08a2c201a8b67fb5d095f665e86ef80a16bea (diff) |
Move conservation calculation code processing from KrancThorn.m to ConservationCalculation.m
-rw-r--r-- | Tools/CodeGen/ConservationCalculation.m | 33 | ||||
-rw-r--r-- | Tools/CodeGen/KrancThorn.m | 26 |
2 files changed, 33 insertions, 26 deletions
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 |