diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-09 13:01:38 +0200 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-09 13:01:38 +0200 |
commit | c6023379525bbefc5bcd29595c44e28aa708a17e (patch) | |
tree | 3105c909ddf642e9b2d7a766787f8a1cb8a310ef | |
parent | 1ed265917868591e54f52a93fc3d252a7750ac4d (diff) |
KrancThorn.m: Move MoL-specific functions to MoL.m
-rw-r--r-- | Tools/CodeGen/KrancThorn.m | 32 | ||||
-rw-r--r-- | Tools/CodeGen/MoL.m | 34 |
2 files changed, 33 insertions, 33 deletions
diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m index 36e9c18..8d6f37b 100644 --- a/Tools/CodeGen/KrancThorn.m +++ b/Tools/CodeGen/KrancThorn.m @@ -277,7 +277,7 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[ even if it does not evolve any variables). This could be fixed later. *) InfoMessage[Terse, "Creating MoL registration file"]; - molregister = createKrancMoLRegister[evolvedGroups, nonevolvedGroups, evolvedODEGroups, nonevolvedODEGroups, groups, implementation, thornName]; + molregister = CreateKrancMoLRegister[evolvedGroups, nonevolvedGroups, evolvedODEGroups, nonevolvedODEGroups, groups, implementation, thornName]; Module[{allGFs = Join[variablesFromGroups[evolvedGroups, groups], variablesFromGroups[nonevolvedGroups, groups]]}, @@ -378,35 +378,5 @@ extractNonevolvedGroups[declaredGroups_, calcs_, groups_] := Return[nonevolvedGroups]]; -(* FIXME: This is still not quite right. We only want to have those variables that - we set as constrained, but I don't think this can hurt.*) - -getConstrainedVariables[evolvedGroupNames_, groups_] := - Module[{evolvedGFs, allVariables, constrainedVariables}, - evolvedGFs = variablesFromGroups[evolvedGroupNames, groups]; - allVariables = Flatten[Map[groupVariables, groups],1]; - constrainedVariables = Complement[allVariables, Join[evolvedGFs, Map[Symbol[addrhs[#]] &, evolvedGFs]]]; - constrainedVariables]; - -createKrancMoLRegister[evolvedGroupNames_, nonevolvedGroupNames_, evolvedODEGroupNames_, nonevolvedODEGroupNames_, groups_, implementation_, thornName_] := - Module[{molspec, evolvedGFs, evolvedArrays, constrainedVariables}, - evolvedGFs = variablesFromGroups[evolvedGroupNames, groups]; - evolvedArrays = variablesFromGroups[evolvedODEGroupNames, groups]; - nonevolvedGFs = variablesFromGroups[nonevolvedGroupNames, groups]; - nonevolvedArrays = variablesFromGroups[nonevolvedGroupNames, groups]; - - constrainedVariables = getConstrainedVariables[evolvedGroupNames, groups]; - - molspec = - { - EvolvedGFs -> Map[qualifyGFName[#, groups, implementation]& , evolvedGFs], - EvolvedArrays -> Map[qualifyGFName[#, groups, implementation]& , evolvedArrays], - PrimitiveGFs -> Map[qualifyGFName[#, groups, implementation]& , constrainedVariables], - BaseImplementation -> implementation, - ThornName -> thornName - }; - molregister = CreateMoLRegistrationSource[molspec, False]; - Return[molregister]]; - End[]; EndPackage[]; diff --git a/Tools/CodeGen/MoL.m b/Tools/CodeGen/MoL.m index 091bfad..1c35f63 100644 --- a/Tools/CodeGen/MoL.m +++ b/Tools/CodeGen/MoL.m @@ -23,7 +23,7 @@ BeginPackage[ {"Errors`", "Helpers`", "Kranc`", "CodeGenKranc`", "MapLookup`", "CodeGenCactus`", "CodeGen`", "CodeGenC`", "KrancGroups`"}]; -CreateMoLRegistrationSource::usage = ""; +CreateKrancMoLRegister; CreateMoLBoundariesSource::usage = ""; CreateMoLExcisionSource::usage = ""; @@ -33,13 +33,43 @@ Begin["`Private`"]; MoL Registration ------------------------------------------------------------------------ *) +(* FIXME: This is still not quite right. We only want to have those variables that + we set as constrained, but I don't think this can hurt.*) + +getConstrainedVariables[evolvedGroupNames_, groups_] := + Module[{evolvedGFs, allVariables, constrainedVariables}, + evolvedGFs = variablesFromGroups[evolvedGroupNames, groups]; + allVariables = Flatten[Map[groupVariables, groups],1]; + constrainedVariables = Complement[allVariables, Join[evolvedGFs, Map[Symbol[addrhs[#]] &, evolvedGFs]]]; + constrainedVariables]; + +CreateKrancMoLRegister[evolvedGroupNames_, nonevolvedGroupNames_, evolvedODEGroupNames_, nonevolvedODEGroupNames_, groups_, implementation_, thornName_] := + Module[{molspec, evolvedGFs, evolvedArrays, constrainedVariables}, + evolvedGFs = variablesFromGroups[evolvedGroupNames, groups]; + evolvedArrays = variablesFromGroups[evolvedODEGroupNames, groups]; + nonevolvedGFs = variablesFromGroups[nonevolvedGroupNames, groups]; + nonevolvedArrays = variablesFromGroups[nonevolvedGroupNames, groups]; + + constrainedVariables = getConstrainedVariables[evolvedGroupNames, groups]; + + molspec = + { + EvolvedGFs -> Map[qualifyGFName[#, groups, implementation]& , evolvedGFs], + EvolvedArrays -> Map[qualifyGFName[#, groups, implementation]& , evolvedArrays], + PrimitiveGFs -> Map[qualifyGFName[#, groups, implementation]& , constrainedVariables], + BaseImplementation -> implementation, + ThornName -> thornName + }; + molregister = createMoLRegistrationSource[molspec, False]; + Return[molregister]]; + (* MoL registration = {EvolvedGFs -> {h11, ...}, PrimitiveGFs -> {trK, ...}, BaseImplementation -> "ADMBase", ThornName -> "ADMMoL"} *) (* Given a MoL registration structure as defined above, return a CodeGen structure of a source file which will register the variables given with MoL. *) -CreateMoLRegistrationSource[spec_, debug_] := +createMoLRegistrationSource[spec_, debug_] := Module[{tmp, lang}, |