Skip to content
Snippets Groups Projects
test_grudge.py 32.3 KiB
Newer Older
    logger.info("norm: %.5e %.5e", norm, ref_norm)
    assert abs(norm-ref_norm) / abs(ref_norm) < 1e-13


Alexandru Fikl's avatar
Alexandru Fikl committed
@pytest.mark.parametrize("p", [2, np.inf])
def test_norm_complex(actx_factory, p):
    actx = actx_factory()
    mesh = mgen.generate_regular_rect_mesh(
            a=(0,)*dim, b=(1,)*dim,
            nelements_per_axis=(8,)*dim, order=1)
    dcoll = DiscretizationCollection(actx, mesh, order=4)
    nodes = actx.thaw(dcoll.nodes())
    norm = op.norm(dcoll, (1 + 1j)*nodes[0], p)
    if p == 2:
        ref_norm = (2/3)**0.5
    elif p == np.inf:
        ref_norm = 2**0.5
    logger.info("norm: %.5e %.5e", norm, ref_norm)
    assert abs(norm-ref_norm) / abs(ref_norm) < 1e-13
@pytest.mark.parametrize("p", [2, np.inf])
def test_norm_obj_array(actx_factory, p):
    actx = actx_factory()
    dim = 2
    mesh = mgen.generate_regular_rect_mesh(
            a=(0,)*dim, b=(1,)*dim,
            nelements_per_axis=(8,)*dim, order=1)
    dcoll = DiscretizationCollection(actx, mesh, order=4)
    nodes = actx.thaw(dcoll.nodes())
    norm = op.norm(dcoll, nodes, p)
    if p == 2:
        ref_norm = (dim/3)**0.5
    elif p == np.inf:
        ref_norm = 1
    logger.info("norm: %.5e %.5e", norm, ref_norm)
    assert abs(norm-ref_norm) / abs(ref_norm) < 1e-14
Matt Smith's avatar
Matt Smith committed
# }}}


# {{{ empty boundaries
def test_empty_boundary(actx_factory):
    # https://github.com/inducer/grudge/issues/54

    from meshmode.mesh import BTAG_NONE
    actx = actx_factory()
    mesh = mgen.generate_regular_rect_mesh(
            a=(-0.5,)*dim, b=(0.5,)*dim,
            nelements_per_axis=(8,)*dim, order=4)
    dcoll = DiscretizationCollection(actx, mesh, order=4)
    normal = dcoll.normal(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)
Matt Smith's avatar
Matt Smith committed
# }}}

# You can test individual routines by typing
# $ python test_grudge.py 'test_routine()'

if __name__ == "__main__":
    import sys
    if len(sys.argv) > 1:
        exec(sys.argv[1])
    else:
        pytest.main([__file__])

# vim: fdm=marker