Skip to content
Snippets Groups Projects
Commit f4e7156f authored by Martin Bauer's avatar Martin Bauer
Browse files

Fixes in mu sweep (when gradients are zero) & some optimizations

parent 100380ae
Branches
Tags
No related merge requests found
import collections
import sympy as sp import sympy as sp
import numpy as np import numpy as np
from lbmpy.generator import Field from lbmpy.generator import Field
...@@ -57,6 +56,15 @@ def discretizeCenter(term, symbolsToFieldDict, dx, dim=3): ...@@ -57,6 +56,15 @@ def discretizeCenter(term, symbolsToFieldDict, dx, dim=3):
return term.subs(substitutions) return term.subs(substitutions)
def fastSubs(term, subsDict):
def visit(expr):
if expr in subsDict:
return subsDict[expr]
paramList = [visit(a) for a in expr.args]
return expr if not paramList else expr.func(*paramList)
return visit(term)
def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset, dx, dim=3): def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset, dx, dim=3):
""" """
Expects term that contains given symbols and gradient components of these symbols and replaces them Expects term that contains given symbols and gradient components of these symbols and replaces them
...@@ -105,7 +113,8 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset, ...@@ -105,7 +113,8 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset,
neighborGrad = (field[up+offset](i) - field[down+offset](i)) / (2 * dx) neighborGrad = (field[up+offset](i) - field[down+offset](i)) / (2 * dx)
substitutions[grad(s)[d]] = (centerGrad + neighborGrad) / 2 substitutions[grad(s)[d]] = (centerGrad + neighborGrad) / 2
return term.subs(substitutions) return fastSubs(term, substitutions)
#return term.subs(substitutions, simultaneous=True)
def discretizeDivergence(vectorTerm, symbolsToFieldDict, dx): def discretizeDivergence(vectorTerm, symbolsToFieldDict, dx):
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment