From ded892a00b9f360d38779c11630f844ce00f105f Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Mon, 23 Jan 2017 16:51:32 +0100 Subject: [PATCH] Ensure CSE of integration factor --- python/dune/perftool/pdelab/localoperator.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 3d39a243..5d53d25d 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -34,6 +34,7 @@ from pymbolic.primitives import Variable import pymbolic.primitives as prim from pytools import Record +import ufl.classes as uc import loopy as lp import cgen @@ -420,6 +421,13 @@ def visit_integrals(integrals): if name.startswith("cse"): subst_rule(name, expr, visitor) + # Ensure CSE on detjac * quadrature weight + domain = term.argument.argexpr.ufl_domain() + if term.argument.restriction: + subst_rule("integration_factor", uc.FacetJacobianDeterminant(domain)*uc.QuadratureWeight(domain), visitor) + else: + subst_rule("integration_factor", uc.JacobianDeterminant(domain)*uc.QuadratureWeight(domain), visitor) + get_backend(interface="accum_insn")(visitor, term, measure, subdomain_id) -- GitLab