From 650d2eadf53c93c11c71cea814772523babcf2f4 Mon Sep 17 00:00:00 2001 From: Martin Bauer <bauer_martin@gmx.de> Date: Thu, 5 Jan 2017 15:31:56 +0100 Subject: [PATCH] new lbm module: momentbased methods & new conserved quantity computation --- equationcollection/equationcollection.py | 19 ++++++++++++++++--- equationcollection/simplifications.py | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/equationcollection/equationcollection.py b/equationcollection/equationcollection.py index b3c9cc33e..0f0c5e9b6 100644 --- a/equationcollection/equationcollection.py +++ b/equationcollection/equationcollection.py @@ -37,18 +37,30 @@ class EquationCollection: self.subexpressionSymbolNameGenerator = symbolGen() - def createNewWithAdditionalSubexpressions(self, newEquations, additionalSubExpressions): + def newWithAdditionalSubexpressions(self, newEquations, additionalSubExpressions): + """ + Returns a new equation collection, that has `newEquations` as mainEquations. + The `additionalSubExpressions` are appended to the existing subexpressions. + Simplifications hints are copied over. + """ assert len(self.mainEquations) == len(newEquations), "Number of update equations cannot be changed" return EquationCollection(newEquations, self.subexpressions + additionalSubExpressions, self.simplificationHints) - def createNewWithSubstitutionsApplied(self, substitutionDict): + def newWithSubstitutionsApplied(self, substitutionDict): + """ + Returns a new equation collection, where terms are substituted according to the passed `substitutionDict`. + Substitutions are made in the subexpression terms and the main equations + """ newSubexpressions = [fastSubs(eq, substitutionDict) for eq in self.subexpressions] newEquations = [fastSubs(eq, substitutionDict) for eq in self.mainEquations] return EquationCollection(newEquations, newSubexpressions, self.simplificationHints) def addSimplificationHint(self, key, value): + """ + Adds an entry to the simplificationHints dictionary, and checks that is does not exist yet + """ assert key not in self.simplificationHints, "This hint already exists" self.simplificationHints[key] = value @@ -56,6 +68,7 @@ class EquationCollection: @property def allEquations(self): + """Subexpression and main equations in one sequence""" return self.subexpressions + self.mainEquations @property @@ -218,7 +231,7 @@ class EquationCollection: :param module: same as sympy.lambdify paramter of same same, i.e. which module to use e.g. 'numpy' :param fixedSymbols: dictionary with substitutions, that are applied before lambdification """ - eqs = self.createNewWithSubstitutionsApplied(fixedSymbols).insertSubexpressions().mainEquations + eqs = self.newWithSubstitutionsApplied(fixedSymbols).insertSubexpressions().mainEquations lambdas = {eq.lhs: sp.lambdify(symbols, eq.rhs, module) for eq in eqs} def f(*args, **kwargs): diff --git a/equationcollection/simplifications.py b/equationcollection/simplifications.py index cd5912994..24a21fdf5 100644 --- a/equationcollection/simplifications.py +++ b/equationcollection/simplifications.py @@ -26,7 +26,7 @@ def sympyCSE(equationCollection): def applyOnAllEquations(equationCollection, operation): """Applies sympy expand operation to all equations in collection""" result = [operation(s) for s in equationCollection.mainEquations] - return equationCollection.createNewWithAdditionalSubexpressions(result, []) + return equationCollection.newWithAdditionalSubexpressions(result, []) def applyOnAllSubexpressions(equationCollection, operation): @@ -57,6 +57,6 @@ def subexpressionSubstitutionInUpdateEquations(equationCollection): for subExpr in equationCollection.subexpressions: newRhs = replaceAdditive(newRhs, subExpr.lhs, subExpr.rhs, requiredMatchReplacement=1.0) result.append(sp.Eq(s.lhs, newRhs)) - return equationCollection.createNewWithAdditionalSubexpressions(result, []) + return equationCollection.newWithAdditionalSubexpressions(result, []) -- GitLab