From 82fecff990dbc9ba609462e18452964a0a57a812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de> Date: Mon, 10 Oct 2016 10:46:25 +0200 Subject: [PATCH] Use estimade degrees from metadata --- patches/ufl/ufl.patch | 30 -------------------- python/dune/perftool/pdelab/localoperator.py | 7 +++-- python/dune/perftool/pdelab/quadrature.py | 4 +-- 3 files changed, 6 insertions(+), 35 deletions(-) delete mode 100644 patches/ufl/ufl.patch diff --git a/patches/ufl/ufl.patch b/patches/ufl/ufl.patch deleted file mode 100644 index 9680ee42..00000000 --- a/patches/ufl/ufl.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 7f4831b0b8220365ca4427922fcbeba07e934b5f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de> -Date: Fri, 7 Oct 2016 14:34:38 +0200 -Subject: [PATCH] Function view degree estimation for ReferenceValue - ---- - ufl/algorithms/estimate_degrees.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/ufl/algorithms/estimate_degrees.py b/ufl/algorithms/estimate_degrees.py -index caa9f19..d2d4e69 100644 ---- a/ufl/algorithms/estimate_degrees.py -+++ b/ufl/algorithms/estimate_degrees.py -@@ -76,7 +76,12 @@ class SumDegreeEstimator(MultiFunction): - def function_view(self, v, a, i): - # TODO How would the element_replace_map interfere with the function_view class? - from ufl.functionview import select_subelement -- return select_subelement(v.ufl_operands[0].ufl_element(), v.ufl_operands[1]).degree() -+ from ufl.referencevalue import ReferenceValue -+ if isinstance(v.ufl_operands[0], ReferenceValue): -+ return select_subelement(v.ufl_operands[0].ufl_operands[0].ufl_element(), v.ufl_operands[1]).degree() -+ else: -+ return select_subelement(v.ufl_operands[0].ufl_element(), v.ufl_operands[1]).degree() -+ - - def _reduce_degree(self, v, f): - """Reduces the estimated degree by one; used when derivatives --- -2.9.3 - diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index b7ad0e72..2c49b7e3 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -429,7 +429,8 @@ def generate_localoperator_kernels(formdata, data): include_file('dune/pdelab/localoperator/flags.hh', filetag="operatorfile") include_file('dune/pdelab/localoperator/pattern.hh', filetag="operatorfile") - # Trigger this one once early on to avoid wrong stuff happening + # Trigger this one once early on to assure that template + # parameters are set in the right order localoperator_basename(formdata, data) lop_template_ansatz_gfs() lop_template_test_gfs() @@ -443,11 +444,13 @@ def generate_localoperator_kernels(formdata, data): from dune.perftool.pdelab.parameter import name_paramclass name_paramclass() + # Add right base classes for stationary/instationary operators base_class('Dune::PDELab::LocalOperatorDefaultFlags', classtag="operator") from dune.perftool.pdelab.driver import is_stationary if not is_stationary(): rf = lop_template_range_field() - base_class('Dune::PDELab::InstationaryLocalOperatorDefaultMethods<{}>'.format(rf), classtag="operator") + base_class('Dune::PDELab::InstationaryLocalOperatorDefaultMethods<{}>' + .format(rf), classtag="operator") # Create set time method in parameter class from dune.perftool.pdelab.parameter import define_set_time_method diff --git a/python/dune/perftool/pdelab/quadrature.py b/python/dune/perftool/pdelab/quadrature.py index 64f015ed..bf943177 100644 --- a/python/dune/perftool/pdelab/quadrature.py +++ b/python/dune/perftool/pdelab/quadrature.py @@ -1,5 +1,3 @@ -from ufl.algorithms import estimate_total_polynomial_degree - from dune.perftool import Restriction from dune.perftool.generation import (cached, domain, @@ -81,7 +79,7 @@ def estimate_quadrature_order(): integrals = form.integrals_by_type(integral_type) polynomial_degree = 0 for i in integrals: - polynomial_degree = max(polynomial_degree, estimate_total_polynomial_degree(i)) + polynomial_degree = max(polynomial_degree, i.metadata()['estimated_polynomial_degree']) # Note: In PDELab quadrature order m means that integration of # polynomials of degree m is exact. -- GitLab