diff --git a/meshmode/discretization/__init__.py b/meshmode/discretization/__init__.py index 6f388fdd6bdf5235c0f96796bd38404840a09e30..eb448d9abecf289afea20817504ee4712ceeaa41 100644 --- a/meshmode/discretization/__init__.py +++ b/meshmode/discretization/__init__.py @@ -225,6 +225,9 @@ class Discretization(object): result = self.empty(dtype=vec.dtype) for grp in self.groups: + if grp.nelements == 0: + continue + mat = None for ref_axis in ref_axes: next_mat = grp.diff_matrices()[ref_axis] @@ -243,13 +246,17 @@ class Discretization(object): knl = lp.make_kernel( "{[k,i]: 0<=k<nelements and 0<=i<ndiscr_nodes}", "result[k,i] = weights[i]", - name="quad_weights") + name="quad_weights", + default_offset=lp.auto) knl = lp.split_iname(knl, "i", 16, inner_tag="l.0") return lp.tag_inames(knl, dict(k="g.0")) result = self.empty(dtype=self.real_dtype) for grp in self.groups: + if grp.nelements == 0: + continue + knl()(queue, result=grp.view(result), weights=grp.weights) return result @@ -280,6 +287,9 @@ class Discretization(object): with cl.CommandQueue(self.cl_context) as queue: for grp in self.groups: + if grp.nelements == 0: + continue + meg = grp.mesh_el_group knl()(queue, resampling_mat=grp.from_mesh_interp_matrix(),