From 4de16267228990e5faf6dd98975117dfbc72b0f8 Mon Sep 17 00:00:00 2001 From: Marcel Koch <marcel.koch@uni-muenster.de> Date: Thu, 18 Oct 2018 13:55:50 +0200 Subject: [PATCH] correctly determine if an element is dg --- python/dune/perftool/pdelab/driver/timings.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/python/dune/perftool/pdelab/driver/timings.py b/python/dune/perftool/pdelab/driver/timings.py index cdeb6b1d..e740a7d3 100644 --- a/python/dune/perftool/pdelab/driver/timings.py +++ b/python/dune/perftool/pdelab/driver/timings.py @@ -45,8 +45,18 @@ def dump_dof_numbers(stream): gvt = type_leafview() gv = name_leafview() - from dune.perftool.pdelab.driver import get_trial_element, isDG - if isDG(get_trial_element()): + from dune.perftool.pdelab.driver import get_trial_element, isDG, _flatten_list + from ufl import MixedElement, TensorProductElement + element = get_trial_element() + + def _apply_to_element(element, f): + if isinstance(element, MixedElement) or isinstance(element, TensorProductElement): + return tuple(_apply_to_element(e, f) for e in element.sub_elements()) + else: + return f(element) + element_is_dg = all(_flatten_list(_apply_to_element(element, isDG))) + + if element_is_dg: return ["Dune::PDELab::NonOverlappingEntitySet<{}> es({});".format(gvt, gv), "{} << \"{} \" << {} << \" dofs dofs \" << {}.maxLocalSize() * es.size(0) << std::endl;".format(stream, level, @@ -54,7 +64,7 @@ def dump_dof_numbers(stream): name_trial_gfs()) ] else: - return ["{} << \"{} \" << {} << \" dofs dofs \" << {}.() << std::endl;".format(stream, + return ["{} << \"{} \" << {} << \" dofs dofs \" << {}.size() << std::endl;".format(stream, level, ident, name_trial_gfs()) -- GitLab