From 3acbdbe85df9ce3cd799b05480bd794ace7e7629 Mon Sep 17 00:00:00 2001 From: Martin Bauer <martin.bauer@fau.de> Date: Fri, 4 Aug 2017 08:21:30 +0200 Subject: [PATCH] Generalization of Chapman Enskog analysis --- sympyextensions.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/sympyextensions.py b/sympyextensions.py index 79fe02448..d14630b9d 100644 --- a/sympyextensions.py +++ b/sympyextensions.py @@ -97,6 +97,37 @@ def fastSubs(term, subsDict): return visit(term) +def fastSubsWithNormalize(term, subsDict, normalizeFunc): + def visit(expr): + if expr in subsDict: + return subsDict[expr], True + if not hasattr(expr, 'args'): + return expr, False + + paramList = [] + substituted = False + for a in expr.args: + replacedExpr, s = visit(a) + paramList.append(replacedExpr) + if s: + substituted = True + + if not paramList: + return expr, False + else: + if substituted: + result, _ = visit(normalizeFunc(expr.func(*paramList))) + return result, True + else: + return expr.func(*paramList), False + + if len(subsDict) == 0: + return term + else: + res, _ = visit(term) + return res + + def replaceAdditive(expr, replacement, subExpression, requiredMatchReplacement=0.5, requiredMatchOriginal=None): """ Transformation for replacing a given subexpression inside a sum -- GitLab