Skip to content

Commit

Permalink
Use "BV" instead of "Basis" to indicate boundary value parameters
Browse files Browse the repository at this point in the history
as this seems like a clearer variable name ("BV" standing for
"boundary value")
  • Loading branch information
Dylan Harries committed May 26, 2017
1 parent 5c6b614 commit 4f26015
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions meta/SemiAnalytic.m
Expand Up @@ -18,6 +18,8 @@
SetSemiAnalyticParameters::usage="";
GetSemiAnalyticParameters::usage="";
GetBoundaryValueParameters::usage="";
GetBoundaryValueParameterSymbol::usage="Returns the symbol for a given boundary
value parameter.";

IsAllowedSemiAnalyticParameter::usage="";
IsSemiAnalyticParameter::usage="";
Expand Down Expand Up @@ -53,6 +55,7 @@
ReplacePreprocessorMacros::usage="";
GetSemiAnalyticEWSBSubstitutions::usage="";
EvaluateSemiAnalyticSolutions::usage="";
GetExtraBoundaryParametersToSave::usage="";
SaveBoundaryValueParameters::usage="";
SetBoundaryValueParametersFromLocalCopies::usage="";
GetModelBoundaryValueParameters::usage="";
Expand Down Expand Up @@ -515,13 +518,24 @@
result
];

CreateBoundaryValue[parameter_] := Symbol[CConversion`ToValidCSymbolString[parameter] <> "Basis"];
GetBoundaryValueParameterSymbol[parameter_?Parameters`IsInputParameter] := parameter;

GetBoundaryValueParameterSymbol[parameter_?Parameters`IsExtraParameter] := parameter;

GetBoundaryValueParameterSymbol[parameter_?Parameters`IsModelParameter] :=
Symbol[CConversion`ToValidCSymbolString[parameter] <> "BV"];

GetBoundaryValueParameterSymbol[parameter_?Parameters`IsOutputParameter] :=
Symbol[CConversion`ToValidCSymbolString[parameter] <> "BV"];

GetBoundaryValueParameterSymbol[parameter_?Parameters`IsPhase] :=
Symbol[CConversion`ToValidCSymbolString[parameter] <> "BV"];

CreateBoundaryValueParameters[solutions_List] :=
{CreateBoundaryValue[#], {}, Parameters`GetType[#]}& /@ (GetBoundaryValueParameters[solutions]);
{CreateBoundaryValueParameterSymbol[#], {}, Parameters`GetType[#]}& /@ (GetBoundaryValueParameters[solutions]);

CreateBoundaryValueParameterName[par_] :=
CConversion`ToValidCSymbolString[CreateBoundaryValue[par]];
CConversion`ToValidCSymbolString[GetBoundaryValueParameterSymbol[par]];

CreateCoefficients[SemiAnalyticSolution[par_, basis_]] :=
Module[{i},
Expand Down Expand Up @@ -944,15 +958,15 @@

GetSemiAnalyticParameterSubstitutions[solutions_List] :=
Module[{boundaryValues, expanded},
boundaryValueRules = Rule[#, CreateBoundaryValue[#]]& /@ (GetBoundaryValueParameters[solutions]);
boundaryValueRules = Rule[#, GetBoundaryValueParameterSymbol[#]]& /@ (GetBoundaryValueParameters[solutions]);
expanded = ExpandSemiAnalyticSolutions[solutions];
{#[[1]], Parameters`ReplaceAllRespectingSARAHHeads[#[[2]], boundaryValueRules]}& /@ expanded
];

EvaluateSemiAnalyticSolution[solution_, class_String] :=
Module[{parameter, basisRules, coeffs},
parameter = GetName[solution];
basisRules = Rule[#, CreateBoundaryValue[#]]& /@ (GetBoundaryValueParameters[solution]);
basisRules = Rule[#, GetBoundaryValueParameterSymbol[#]]& /@ (GetBoundaryValueParameters[solution]);
coeffs = CreateCoefficients[solution];
Parameters`SetParameter[parameter, Dot[coeffs, GetBasis[solution]] /. basisRules, class]
];
Expand All @@ -964,7 +978,7 @@
];

SaveBoundaryValueParameter[parameter_, modelPrefix_String:"model->"] :=
Module[{basisPar = CreateBoundaryValue[parameter],
Module[{basisPar = GetBoundaryValueParameterSymbol[parameter],
parStr = CConversion`ToValidCSymbolString[parameter],
macro, value},
Which[Parameters`IsModelParameter[parameter],
Expand Down Expand Up @@ -996,7 +1010,7 @@
Module[{boundaryValues, parameters, result = ""},
boundaryValues = GetBoundaryValueParameters[solutions];
parameters = Select[parameterCopies, MemberQ[boundaryValues, #]&];
(result = result <> Parameters`SetParameter[CreateBoundaryValue[#], CConversion`ToValidCSymbolString[#], struct])& /@ parameters;
(result = result <> Parameters`SetParameter[GetBoundaryValueParameterSymbol[#], CConversion`ToValidCSymbolString[#], struct])& /@ parameters;
Return[result];
];

Expand All @@ -1020,7 +1034,7 @@
parStr = CConversion`ToValidCSymbolString[par];
body = body <> Parameters`SetParameter[par, parStr, struct, None];
If[MemberQ[boundaryValues, par],
basisPar = CreateBoundaryValue[par];
basisPar = GetBoundaryValueParameterSymbol[par];
basisSettings = basisSettings <> Parameters`SetParameter[basisPar, parStr, "solutions->", None];
];
];
Expand Down

0 comments on commit 4f26015

Please sign in to comment.