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

j_at components are now correct (still open: conditional for gradient=zero)

parent 2dcbb09c
No related merge requests found
...@@ -61,7 +61,7 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset, ...@@ -61,7 +61,7 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset,
""" """
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
by field accesses. Gradients in coordinate direction are replaced by staggered version at cell boundary. by field accesses. Gradients in coordinate direction are replaced by staggered version at cell boundary.
Symbols themselves are replaced by interpolated version at boundary. Symbols themselves and gradients in other directions are replaced by interpolated version at cell face.
:param term: input term where symbols and gradients are replaced :param term: input term where symbols and gradients are replaced
:param symbolsToFieldDict: mapping of symbols to Field :param symbolsToFieldDict: mapping of symbols to Field
...@@ -96,16 +96,16 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset, ...@@ -96,16 +96,16 @@ def discretizeStaggered(term, symbolsToFieldDict, coordinate, coordinateOffset,
gradient = grad(symbols)[coordinate] gradient = grad(symbols)[coordinate]
substitutions.update({s: (field[offset](i) + field(i)) / 2 for i, s in enumerate(symbols)}) substitutions.update({s: (field[offset](i) + field(i)) / 2 for i, s in enumerate(symbols)})
substitutions.update({g: (field[offset](i) - field(i)) / dx * coordinateOffset for i, g in enumerate(gradient)}) substitutions.update({g: (field[offset](i) - field(i)) / dx * coordinateOffset for i, g in enumerate(gradient)})
#for d in range(dim): for d in range(dim):
# if d == coordinate: if d == coordinate:
# continue continue
# up, down = __upDownOffsets(d, dim) up, down = __upDownOffsets(d, dim)
# for i, s in enumerate(symbols): for i, s in enumerate(symbols):
# centerGrad = (field[up](i) - field[down](i)) / (2 * dx) centerGrad = (field[up](i) - field[down](i)) / (2 * dx)
# 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)#, substitutions return term.subs(substitutions)
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