diff --git a/grudge/discretization.py b/grudge/discretization.py index a8bee7e11a046aaeaf810f3f47c0e01ae6df995d..7c0573c2e5ec3515843b6f8c377ad10301256aaa 100644 --- a/grudge/discretization.py +++ b/grudge/discretization.py @@ -48,8 +48,8 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): .. automethod :: zeros """ - def __init__(self, array_context, mesh, order, quad_tag_to_group_factory=None, - mpi_communicator=None): + def __init__(self, array_context, mesh, order=None, + quad_tag_to_group_factory=None, mpi_communicator=None): """ :param quad_tag_to_group_factory: A mapping from quadrature tags (typically strings--but may be any hashable/comparable object) to a @@ -61,10 +61,27 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): self._setup_actx = array_context + from meshmode.discretization.poly_element import \ + PolynomialWarpAndBlendGroupFactory + if quad_tag_to_group_factory is None: - quad_tag_to_group_factory = {} + if order is None: + raise TypeError("one of 'order' and " + "'quad_tag_to_group_factory' must be given") + + quad_tag_to_group_factory = { + sym.QTAG_NONE: PolynomialWarpAndBlendGroupFactory(order=order)} + else: + if order is not None: + quad_tag_to_group_factory = quad_tag_to_group_factory.copy() + if sym.QTAG_NONE in quad_tag_to_group_factory: + raise ValueError("if 'order' is given, " + "'quad_tag_to_group_factory' must not have a " + "key of QTAG_NONE") + + quad_tag_to_group_factory[sym.QTAG_NONE] = \ + PolynomialWarpAndBlendGroupFactory(order=order) - self.order = order self.quad_tag_to_group_factory = quad_tag_to_group_factory from meshmode.discretization import Discretization @@ -268,13 +285,7 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): if quadrature_tag is None: quadrature_tag = sym.QTAG_NONE - from meshmode.discretization.poly_element import \ - PolynomialWarpAndBlendGroupFactory - - if quadrature_tag is not sym.QTAG_NONE: - return self.quad_tag_to_group_factory[quadrature_tag] - else: - return PolynomialWarpAndBlendGroupFactory(order=self.order) + return self.quad_tag_to_group_factory[quadrature_tag] @memoize_method def _quad_volume_discr(self, quadrature_tag): @@ -375,5 +386,16 @@ class DGDiscretizationWithBoundaries(DiscretizationBase): where is None or where == sym.VTAG_ALL) + @property + def order(self): + from warnings import warn + warn("DGDiscretizationWithBoundaries.order is deprecated, " + "consider the orders of element groups instead. " + "'order' will go away in 2021.", + DeprecationWarning, stacklevel=2) + + from pytools import single_valued + return single_valued(egrp.order for egrp in self._volume_discr.groups) + # vim: foldmethod=marker