diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py index 92a771c4e6bb518666c962fb8e1938490ef55d36..38b2450ad0b6947504514b22795cf6fb204275eb 100644 --- a/python/dune/perftool/generation/cpp.py +++ b/python/dune/perftool/generation/cpp.py @@ -7,7 +7,7 @@ from dune.perftool.generation import generator_factory from dune.perftool.cgen.clazz import AccessModifier symbol = generator_factory(item_tags=("symbol",)) -preamble = generator_factory(item_tags=("premable",), counted=True) +preamble = generator_factory(item_tags=("preamble",), counted=True) def include_file(include, filetag=None): diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py index 9dfdeee78275d4adbc820fcab7a77de2608b59fc..0ad5d5319ffb07d3890137bee3ecb2c43eb53a7b 100644 --- a/python/dune/perftool/pdelab/geometry.py +++ b/python/dune/perftool/pdelab/geometry.py @@ -1,5 +1,7 @@ from dune.perftool.generation import preamble, symbol - +from dune.perftool.pdelab.quadrature import (name_quadrature_position, + quadrature_preamble, + ) @preamble def define_geometry(name): @@ -18,13 +20,14 @@ def name_dimension(): return "dim" -@preamble def define_jacobian_inverse_transposed(name): geo = name_geometry() - return "auto {} = {}.jacobianInverseTransposed();".format(name, - geo, - ) - + pos = name_quadrature_position() + return quadrature_preamble("auto {} = {}.jacobianInverseTransposed({});".format(name, + geo, + pos, + ) + ) @symbol def name_jacobian_inverse_transposed(): diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index f56a7159f3715f00a60aca520a8a3d6f1bf69307..b7225e7e30fa185f738d6b4fe593189963721b1c 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -98,13 +98,13 @@ def generate_kernel(integrand=None, measure=None): domains = [i for i in retrieve_cache_items("domain")] instructions = [i for i in retrieve_cache_items("instruction")] temporaries = {i.name: i for i in retrieve_cache_items("temporary")} - # preambles = [i for i in retrieve_cache_items("preamble")] + preambles = [(i, p) for i, p in enumerate(retrieve_cache_items("preamble"))] arguments = [i for i in retrieve_cache_items("argument")] # Create the kernel from loopy import make_kernel, preprocess_kernel # kernel = make_kernel(domains, instructions, arguments, temporary_variables=temporaries, preambles=preambles, target=DuneTarget()) - kernel = make_kernel(domains, instructions, arguments, temporary_variables=temporaries, target=DuneTarget()) + kernel = make_kernel(domains, instructions, arguments, temporary_variables=temporaries, target=DuneTarget(), preambles=preambles) kernel = preprocess_kernel(kernel) # All items with the kernel tags can be destroyed once a kernel has been generated diff --git a/python/dune/perftool/pdelab/quadrature.py b/python/dune/perftool/pdelab/quadrature.py index c9c9edcecf4102d0679817efaf33b5bf31b1acc6..eb5b724e300c838ac69304b26253fc66576b38d6 100644 --- a/python/dune/perftool/pdelab/quadrature.py +++ b/python/dune/perftool/pdelab/quadrature.py @@ -5,8 +5,6 @@ from dune.perftool.generation import (cached, symbol, temporary_variable, ) -from dune.perftool.pdelab.geometry import (name_geometry, - ) @iname @@ -38,6 +36,7 @@ def name_quadrature_weight(): def define_quadrature_factor(fac): weight = name_quadrature_weight() + from dune.perftool.pdelab.geometry import name_geometry geo = name_geometry() pos = name_quadrature_position() code = "{} = {}*{}.integrationElement({});".format(fac, @@ -66,6 +65,7 @@ def name_order(): @cached def quadrature_loop_statement(): qp = name_quadrature_point() + from dune.perftool.pdelab.geometry import name_geometry geo = name_geometry() order = name_order() return "const auto& {} : quadratureRule({}, {})".format(qp,