Newer
Older
def test_norm_obj_array(actx_factory, p):
"""Test :func:`grudge.op.norm` for object arrays."""
mesh = mgen.generate_regular_rect_mesh(
nelements_per_axis=(8,)*dim, order=1)
dcoll = DiscretizationCollection(actx, mesh, order=4)
w = make_obj_array([1.0, 2.0, 3.0])[:dim]
# {{ scalar
norm_exact = w[0]
logger.info("norm: %.5e %.5e", norm, norm_exact)
assert abs(norm - norm_exact) < 1.0e-14
norm_exact = np.sqrt(np.sum(w**2)) if p == 2 else np.max(w)
logger.info("norm: %.5e %.5e", norm, norm_exact)
assert abs(norm - norm_exact) < 1.0e-14
def test_empty_boundary(actx_factory):
# https://github.com/inducer/grudge/issues/54
from meshmode.mesh import BTAG_NONE
mesh = mgen.generate_regular_rect_mesh(
nelements_per_axis=(8,)*dim, order=4)
dcoll = DiscretizationCollection(actx, mesh, order=4)
normal = op.normal(dcoll, BTAG_NONE)
from meshmode.dof_array import DOFArray
for component in normal:
assert isinstance(component, DOFArray)
assert len(component) == len(dcoll.discr_from_dd(BTAG_NONE).groups)
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
# {{{ DiscretizationCollection testing
def test_dcoll_nodes_and_normals(actx_factory):
actx = actx_factory()
from meshmode.mesh import BTAG_ALL
from meshmode.mesh.generation import generate_warped_rect_mesh
mesh = generate_warped_rect_mesh(dim=2, order=4, nelements_side=6)
dcoll = DiscretizationCollection(actx, mesh, order=3)
# Nodes should be *indentical*
nodes = thaw(op.nodes(dcoll), actx)
dcoll_nodes = thaw(dcoll.nodes(), actx)
assert op.norm(dcoll, nodes - dcoll_nodes, np.inf) == 0.0
nodes_btag = thaw(op.nodes(dcoll, BTAG_ALL), actx)
dcoll_nodes_btag = thaw(dcoll.nodes(BTAG_ALL), actx)
assert op.norm(dcoll, nodes_btag - dcoll_nodes_btag, np.inf) == 0.0
# Normals should be *indentical*
normals = thaw(op.normal(dcoll, "int_faces"), actx)
dcoll_normals = thaw(dcoll.normal("int_faces"), actx)
assert op.norm(dcoll, normals - dcoll_normals, np.inf) == 0.0
normals_btag = thaw(op.normal(dcoll, BTAG_ALL), actx)
dcoll_normals_btag = thaw(dcoll.normal(BTAG_ALL), actx)
assert op.norm(dcoll, normals_btag - dcoll_normals_btag, np.inf) == 0.0
# }}}
# $ python test_grudge.py 'test_routine()'
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
exec(sys.argv[1])
else:
pytest.main([__file__])