diff --git a/examples/advection/var-velocity.py b/examples/advection/var-velocity.py index 625b559b3807802127caece829ba4a5a27744f02..d01f4fd8066c5a3a65495aad19683df59fb3a38f 100644 --- a/examples/advection/var-velocity.py +++ b/examples/advection/var-velocity.py @@ -65,9 +65,12 @@ def main(write_output=True, order=4): return 0 from grudge.models.advection import VariableCoefficientAdvectionOperator + from meshmode.discretization.poly_element import QuadratureSimplexGroupFactory - discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, - order=order, quad_min_degrees={"product": 4*order}) + discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, order=order, + quad_group_factory={ + "product": QuadratureSimplexGroupFactory(order=4*order) + }) op = VariableCoefficientAdvectionOperator(2, advec_v, u_analytic(sym.nodes(dim, sym.BTAG_ALL)), quad_tag="product", diff --git a/grudge/discretization.py b/grudge/discretization.py index 6f5cae13fd8a2463a9b91efdbf425d83b98753dd..ccd9a5d1f1d53414a92c417256ee23d9c92e5a19 100644 --- a/grudge/discretization.py +++ b/grudge/discretization.py @@ -47,17 +47,17 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): .. automethod :: zeros """ - def __init__(self, cl_ctx, mesh, order, quad_min_degrees=None): + def __init__(self, cl_ctx, mesh, order, quad_group_factory=None): """ :param quad_min_degrees: A mapping from quadrature tags to the degrees to which the desired quadrature is supposed to be exact. """ - if quad_min_degrees is None: - quad_min_degrees = {} + if quad_group_factory is None: + quad_group_factory = {} self.order = order - self.quad_min_degrees = quad_min_degrees + self.quad_group_factory = quad_group_factory from meshmode.discretization import Discretization @@ -203,12 +203,10 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): quadrature_tag = sym.QTAG_NONE from meshmode.discretization.poly_element import \ - PolynomialWarpAndBlendGroupFactory, \ - QuadratureSimplexGroupFactory + PolynomialWarpAndBlendGroupFactory if quadrature_tag is not sym.QTAG_NONE: - return QuadratureSimplexGroupFactory( - order=self.quad_min_degrees[quadrature_tag]) + return self.quad_group_factory[quadrature_tag] else: return PolynomialWarpAndBlendGroupFactory(order=self.order) diff --git a/test/test_grudge.py b/test/test_grudge.py index 66c786b39665fdc85af58850e5e2e417d4f84108..79a88df336644c8e456ee9e07862252a88fb7322 100644 --- a/test/test_grudge.py +++ b/test/test_grudge.py @@ -409,6 +409,7 @@ def test_improvement_quadrature(ctx_factory, order): from grudge.models.advection import VariableCoefficientAdvectionOperator from pytools.convergence import EOCRecorder from pytools.obj_array import join_fields + from meshmode.discretization.poly_element import QuadratureSimplexGroupFactory cl_ctx = cl.create_some_context() queue = cl.CommandQueue(cl_ctx) @@ -442,8 +443,10 @@ def test_improvement_quadrature(ctx_factory, order): n=(n,)*dims, order=order) - discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, - order=order, quad_min_degrees={"product": 4*order}) + discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, order=order, + quad_group_factory={ + "product": QuadratureSimplexGroupFactory(order=4*order) + }) bound_op = bind(discr, p_op.sym_operator()) fields = bind(discr, gaussian_mode())(queue, t=0)