diff --git a/python/dune/perftool/sumfact/__init__.py b/python/dune/perftool/sumfact/__init__.py index c4de2b6162c47b6a58a8a02368abf4e3ff122217..16ab4fd16d4271b6d403506a577770efd0291441 100644 --- a/python/dune/perftool/sumfact/__init__.py +++ b/python/dune/perftool/sumfact/__init__.py @@ -5,6 +5,7 @@ from dune.perftool.sumfact.quadrature import (quadrature_inames, from dune.perftool.sumfact.basis import (lfs_inames, pymbolic_basis, pymbolic_trialfunction, + pymbolic_trialfunction_gradient, ) from dune.perftool.pdelab import PDELabInterface @@ -17,6 +18,9 @@ class SumFactInterface(PDELabInterface): def pymbolic_basis(self, element, restriction, number): return pymbolic_basis(element, restriction, number) + def pymbolic_trialfunction_gradient(self, element, restriction, component): + return pymbolic_trialfunction_gradient(element, restriction, component) + def pymbolic_trialfunction(self, element, restriction, component): return pymbolic_trialfunction(element, restriction, component) diff --git a/python/dune/perftool/sumfact/basis.py b/python/dune/perftool/sumfact/basis.py index 0d62567971627bc32aba813a2959f8a86edb31b6..fb4b411c9d0b097a334710cc427514850dad4094 100644 --- a/python/dune/perftool/sumfact/basis.py +++ b/python/dune/perftool/sumfact/basis.py @@ -31,6 +31,19 @@ from pytools import product import pymbolic.primitives as prim +@cached +def pymbolic_trialfunction_gradient(element, restriction, component): + # palpo TODO -> copied from argument.py + rawname = "gradu" + "_".join(str(c) for c in component) + name = restricted_name(rawname, restriction) + from dune.perftool.pdelab.argument import name_coefficientcontainer + container = name_coefficientcontainer(restriction) + from dune.perftool.pdelab.argument import evaluate_coefficient_gradient + evaluate_coefficient_gradient(element, name, container, restriction, component) + from pymbolic.primitives import Variable + return Variable(name) + + @cached def pymbolic_trialfunction(element, restriction, component): theta = name_theta()