Skip to content
Snippets Groups Projects
Commit 3af141bd authored by Dominic Kempf's avatar Dominic Kempf
Browse files

Generate preambles and fix some quadrature stuff

parent 0d85a3e5
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ from dune.perftool.generation import generator_factory ...@@ -7,7 +7,7 @@ from dune.perftool.generation import generator_factory
from dune.perftool.cgen.clazz import AccessModifier from dune.perftool.cgen.clazz import AccessModifier
symbol = generator_factory(item_tags=("symbol",)) 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): def include_file(include, filetag=None):
......
from dune.perftool.generation import preamble, symbol from dune.perftool.generation import preamble, symbol
from dune.perftool.pdelab.quadrature import (name_quadrature_position,
quadrature_preamble,
)
@preamble @preamble
def define_geometry(name): def define_geometry(name):
...@@ -18,13 +20,14 @@ def name_dimension(): ...@@ -18,13 +20,14 @@ def name_dimension():
return "dim" return "dim"
@preamble
def define_jacobian_inverse_transposed(name): def define_jacobian_inverse_transposed(name):
geo = name_geometry() geo = name_geometry()
return "auto {} = {}.jacobianInverseTransposed();".format(name, pos = name_quadrature_position()
geo, return quadrature_preamble("auto {} = {}.jacobianInverseTransposed({});".format(name,
) geo,
pos,
)
)
@symbol @symbol
def name_jacobian_inverse_transposed(): def name_jacobian_inverse_transposed():
......
...@@ -98,13 +98,13 @@ def generate_kernel(integrand=None, measure=None): ...@@ -98,13 +98,13 @@ def generate_kernel(integrand=None, measure=None):
domains = [i for i in retrieve_cache_items("domain")] domains = [i for i in retrieve_cache_items("domain")]
instructions = [i for i in retrieve_cache_items("instruction")] instructions = [i for i in retrieve_cache_items("instruction")]
temporaries = {i.name: i for i in retrieve_cache_items("temporary")} 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")] arguments = [i for i in retrieve_cache_items("argument")]
# Create the kernel # Create the kernel
from loopy import make_kernel, preprocess_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, 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) kernel = preprocess_kernel(kernel)
# All items with the kernel tags can be destroyed once a kernel has been generated # All items with the kernel tags can be destroyed once a kernel has been generated
......
...@@ -5,8 +5,6 @@ from dune.perftool.generation import (cached, ...@@ -5,8 +5,6 @@ from dune.perftool.generation import (cached,
symbol, symbol,
temporary_variable, temporary_variable,
) )
from dune.perftool.pdelab.geometry import (name_geometry,
)
@iname @iname
...@@ -38,6 +36,7 @@ def name_quadrature_weight(): ...@@ -38,6 +36,7 @@ def name_quadrature_weight():
def define_quadrature_factor(fac): def define_quadrature_factor(fac):
weight = name_quadrature_weight() weight = name_quadrature_weight()
from dune.perftool.pdelab.geometry import name_geometry
geo = name_geometry() geo = name_geometry()
pos = name_quadrature_position() pos = name_quadrature_position()
code = "{} = {}*{}.integrationElement({});".format(fac, code = "{} = {}*{}.integrationElement({});".format(fac,
...@@ -66,6 +65,7 @@ def name_order(): ...@@ -66,6 +65,7 @@ def name_order():
@cached @cached
def quadrature_loop_statement(): def quadrature_loop_statement():
qp = name_quadrature_point() qp = name_quadrature_point()
from dune.perftool.pdelab.geometry import name_geometry
geo = name_geometry() geo = name_geometry()
order = name_order() order = name_order()
return "const auto& {} : quadratureRule({}, {})".format(qp, return "const auto& {} : quadratureRule({}, {})".format(qp,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment