1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
from utils import FiniteElement, LagrangeElement
from ufl import (
CellDiameter,
CellVolume,
Circumradius,
FacetArea,
FacetNormal,
FunctionSpace,
Index,
Mesh,
SpatialCoordinate,
TestFunction,
TrialFunction,
as_matrix,
as_ufl,
as_vector,
quadrilateral,
tetrahedron,
triangle,
)
from ufl.pullback import identity_pullback
from ufl.sobolevspace import H1
def test_str_int_value(self):
assert str(as_ufl(3)) == "3"
def test_str_float_value(self):
assert str(as_ufl(3.14)) == "3.14"
def test_str_zero(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
x = SpatialCoordinate(domain)
assert str(as_ufl(0)) == "0"
assert str(0 * x) == "0 (shape (2,))"
assert str(0 * x * x[Index(42)]) == "0 (shape (2,), index labels (42,))"
def test_str_index(self):
assert str(Index(3)) == "i_3"
assert str(Index(42)) == "i_{42}"
def test_str_coordinate(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(SpatialCoordinate(domain)) == "x"
assert str(SpatialCoordinate(domain)[0]) == "x[0]"
def test_str_normal(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(FacetNormal(domain)) == "n"
assert str(FacetNormal(domain)[0]) == "n[0]"
def test_str_circumradius(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(Circumradius(domain)) == "circumradius"
def test_str_diameter(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(CellDiameter(domain)) == "diameter"
def test_str_facetarea(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(FacetArea(domain)) == "facetarea"
def test_str_volume(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
assert str(CellVolume(domain)) == "volume"
def test_str_scalar_argument(self):
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
v = TestFunction(FunctionSpace(domain, LagrangeElement(triangle, 1)))
u = TrialFunction(FunctionSpace(domain, LagrangeElement(triangle, 1)))
assert str(v) == "v_0"
assert str(u) == "v_1"
# def test_str_vector_argument(self): # FIXME
# def test_str_scalar_coefficient(self): # FIXME
# def test_str_vector_coefficient(self): # FIXME
def test_str_list_vector():
domain = Mesh(LagrangeElement(tetrahedron, 1, (3,)))
x, y, z = SpatialCoordinate(domain)
v = as_vector((z, y, x))
assert str(v) == (f"[{z}, {y}, {x}]")
def test_str_list_vector_with_zero():
domain = Mesh(LagrangeElement(tetrahedron, 1, (3,)))
x, _y, _z = SpatialCoordinate(domain)
v = as_vector((x, 0, 0))
assert str(v) == (f"[{x}, 0, 0]")
def test_str_list_matrix():
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
x, y = SpatialCoordinate(domain)
v = as_matrix(((2 * x, 3 * y), (4 * x, 5 * y)))
a = str(2 * x)
b = str(3 * y)
c = str(4 * x)
d = str(5 * y)
assert str(v) == (f"[\n [{a}, {b}],\n [{c}, {d}]\n]")
def test_str_list_matrix_with_zero():
domain = Mesh(LagrangeElement(triangle, 1, (2,)))
x, y = SpatialCoordinate(domain)
v = as_matrix(((2 * x, 3 * y), (0, 0)))
a = str(2 * x)
b = str(3 * y)
c = str(as_vector((0, 0)))
assert str(v) == (f"[\n [{a}, {b}],\n{c}\n]")
# FIXME: Add more tests for tensors collapsing
# partly or completely into Zero!
def test_str_element():
elem = FiniteElement("Q", quadrilateral, 1, (), identity_pullback, H1)
assert repr(elem) == 'utils.FiniteElement("Q", quadrilateral, 1, (), IdentityPullback(), H1)'
assert str(elem) == "<Q1 on a quadrilateral>"
|