From fd3fe07c747b922e13477d5fe8addc20103ded4f Mon Sep 17 00:00:00 2001 From: Marcel Koch <marcel.koch@uni-muenster.de> Date: Mon, 21 Jan 2019 10:57:29 +0100 Subject: [PATCH] use mixin to get quadrature inames --- python/dune/codegen/blockstructured/geometry.py | 8 ++++---- python/dune/codegen/blockstructured/quadrature.py | 8 ++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/python/dune/codegen/blockstructured/geometry.py b/python/dune/codegen/blockstructured/geometry.py index f19202ec..a2bfd1de 100644 --- a/python/dune/codegen/blockstructured/geometry.py +++ b/python/dune/codegen/blockstructured/geometry.py @@ -307,7 +307,7 @@ def name_jacobian_inverse_transposed(restriction): # translate a point in the micro element into macro coordinates -def define_point_in_macro(name, point_in_micro): +def define_point_in_macro(name, point_in_micro, visitor): dim = local_dimension() if get_form_option('vectorization_blockstructured'): temporary_variable(name, shape=(dim,), managed=True) @@ -327,17 +327,17 @@ def define_point_in_macro(name, point_in_micro): # TODO relax within inames instruction(assignee=prim.Subscript(prim.Variable(name), (i,)), expression=expr, - within_inames=frozenset(subelem_inames + get_backend(interface="quad_inames")()), + within_inames=frozenset(subelem_inames + visitor.quadrature_inames()), tags=frozenset({subelem_inames[i]}) ) # TODO add subelem inames if this function gets called # TODO change input parameter to string -def name_point_in_macro(point_in_micro): +def name_point_in_macro(point_in_micro, visitor): assert isinstance(point_in_micro, prim.Expression) name = get_pymbolic_basename(point_in_micro) + "_macro" - define_point_in_macro(name, point_in_micro) + define_point_in_macro(name, point_in_micro, visitor) return name diff --git a/python/dune/codegen/blockstructured/quadrature.py b/python/dune/codegen/blockstructured/quadrature.py index d2875435..f69ddae8 100644 --- a/python/dune/codegen/blockstructured/quadrature.py +++ b/python/dune/codegen/blockstructured/quadrature.py @@ -8,9 +8,13 @@ import pymbolic.primitives as prim @quadrature_mixin("blockstructured") class BlockstructuredQuadratureMixin(GenericQuadratureMixin): - def quadrature_position(self): + def quadrature_position(self, index=None): original = GenericQuadratureMixin.quadrature_position(self) - return prim.Variable(name_point_in_macro(original)) + qp = prim.Variable(name_point_in_macro(original, self), ) + if index is not None: + return prim.Subscript(qp, (index,)) + else: + return qp # # @backend(interface="quad_pos", name='blockstructured') -- GitLab