Skip to content
Snippets Groups Projects
Commit 7c97bb74 authored by Markus Holzer's avatar Markus Holzer
Browse files

Added test cases for fd derivation

parent a3f37cbd
Branches
Tags
No related merge requests found
......@@ -228,7 +228,9 @@ def diff_terms(expr):
Example:
>>> x, y = sp.symbols("x, y")
>>> diff_terms( diff(x, 0, 0) )
>>> diff_terms( diff(x, 0, 0) )
{Diff(Diff(x, 0, -1), 0, -1)}
>>> diff_terms( diff(x, 0, 0) + y )
{Diff(Diff(x, 0, -1), 0, -1)}
"""
result = set()
......
import pytest
import sympy as sp
from pystencils.utils import LinearEquationSystem
def test_linear_equation_system():
unknowns = sp.symbols("x_:3")
x, y, z = unknowns
m = LinearEquationSystem(unknowns)
m.add_equation(x + y - 2)
m.add_equation(x - y - 1)
assert m.solution_structure() == 'multiple'
m.set_unknown_zero(2)
assert m.solution_structure() == 'single'
solution = m.solution()
assert solution[unknowns[2]] == 0
assert solution[unknowns[1]] == sp.Rational(1, 2)
assert solution[unknowns[0]] == sp.Rational(3, 2)
m.set_unknown_zero(0)
assert m.solution_structure() == 'none'
# special case where less rows than unknowns, but no solution
m = LinearEquationSystem(unknowns)
m.add_equation(x - 3)
m.add_equation(x - 4)
assert m.solution_structure() == 'none'
m.add_equation(y - 4)
assert m.solution_structure() == 'none'
with pytest.raises(ValueError) as e:
m.add_equation(x**2 - 1)
assert 'Not a linear equation' in str(e.value)
import sympy as sp
from pystencils import fields
from pystencils.fd import Diff, diff, collect_diffs
from pystencils.fd.derivative import replace_generic_laplacian
def test_fs():
f = sp.Symbol("f", commutative=False)
a = Diff(Diff(Diff(f, 1), 0), 0)
assert a.is_commutative is False
print(str(a))
assert diff(f) == f
x, y = sp.symbols("x, y")
collected_terms = collect_diffs(diff(x, 0, 0))
assert collected_terms == Diff(Diff(x, 0, -1), 0, -1)
src = fields("src : double[2D]")
expr = sp.Add(Diff(Diff(src[0, 0])), 10)
expected = Diff(Diff(src[0, 0], 0, -1), 0, -1) + Diff(Diff(src[0, 0], 1, -1), 1, -1) + 10
result = replace_generic_laplacian(expr, 3)
assert result == expected
\ No newline at end of file
import pytest
import sympy as sp
from pystencils.utils import LinearEquationSystem
from pystencils.utils import DotDict
def test_LinearEquationSystem():
def test_linear_equation_system():
unknowns = sp.symbols("x_:3")
x, y, z = unknowns
m = LinearEquationSystem(unknowns)
m.add_equation(x + y - 2)
m.add_equation(x - y - 1)
assert m.solution_structure() == 'multiple'
m.set_unknown_zero(2)
assert m.solution_structure() == 'single'
solution = m.solution()
assert solution[unknowns[2]] == 0
assert solution[unknowns[1]] == sp.Rational(1, 2)
assert solution[unknowns[0]] == sp.Rational(3, 2)
m.set_unknown_zero(0)
assert m.solution_structure() == 'none'
# special case where less rows than unknowns, but no solution
m = LinearEquationSystem(unknowns)
m.add_equation(x - 3)
m.add_equation(x - 4)
assert m.solution_structure() == 'none'
m.add_equation(y - 4)
assert m.solution_structure() == 'none'
with pytest.raises(ValueError) as e:
m.add_equation(x**2 - 1)
assert 'Not a linear equation' in str(e.value)
x, y, z = sp.symbols("x, y, z")
les = LinearEquationSystem([x, y, z])
les.add_equation(1 * x + 2 * y - 1 * z + 4)
......@@ -37,7 +66,7 @@ def test_LinearEquationSystem():
assert les.solution_structure() == 'none'
def test_DotDict():
def test_dot_dict():
d = {'a': {'c': 7}, 'b': 6}
t = DotDict(d)
assert t.a.c == 7
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment