From cfefc59d5608a31a60af39b9a8b1c605c70c0438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de> Date: Thu, 18 Aug 2016 17:16:35 +0200 Subject: [PATCH] Operator file names by index --- python/dune/perftool/compile.py | 36 ++++++++++---------- python/dune/perftool/pdelab/localoperator.py | 16 +++++++-- test/heatequation/heatequation.ufl | 8 +++-- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/python/dune/perftool/compile.py b/python/dune/perftool/compile.py index 2284e14a..452aec89 100644 --- a/python/dune/perftool/compile.py +++ b/python/dune/perftool/compile.py @@ -90,21 +90,21 @@ def compile_form(): with cache_context('driver', delete=True): generate_driver(formdatas[0].preprocessed_form, get_option("driver_file")) - # Generate local operator files - for formdata in formdatas: - with global_context(formdata=formdata): - if get_option("operator_file"): - from dune.perftool.pdelab.localoperator import generate_localoperator_kernels - kernels = generate_localoperator_kernels(formdata, data) - - # TODO insert sophisticated analysis/feedback loops here - if get_option("interactive"): - from dune.perftool.interactive import start_interactive_session - start_interactive_session(kernels) - - if get_option("operator_file"): - from dune.perftool.pdelab.localoperator import name_localoperator_file - filename = name_localoperator_file(formdata, data) - - from dune.perftool.pdelab.localoperator import generate_localoperator_file - generate_localoperator_file(kernels, filename) + # Generate local operator files + for formdata in formdatas: + with global_context(data=data, formdata=formdata): + if get_option("operator_file"): + from dune.perftool.pdelab.localoperator import generate_localoperator_kernels + kernels = generate_localoperator_kernels(formdata, data) + + # TODO insert sophisticated analysis/feedback loops here + if get_option("interactive"): + from dune.perftool.interactive import start_interactive_session + start_interactive_session(kernels) + + if get_option("operator_file"): + from dune.perftool.pdelab.localoperator import name_localoperator_file + filename = name_localoperator_file(formdata, data) + + from dune.perftool.pdelab.localoperator import generate_localoperator_file + generate_localoperator_file(kernels, filename) diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index a072bc9d..cf5bf30b 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -19,12 +19,22 @@ from dune.perftool.cgen.clazz import (AccessModifier, from dune.perftool import Restriction -def name_localoperator_file(formdata, data): +def name_form(formdata, data): # Check wether the formdata has a name in UFL try: - suffix = '_' + data.object_names[id(formdata.original_form)] + name = data.object_names[id(formdata.original_form)] + return name except: - suffix = '' + for index, form in enumerate(data.forms): + if formdata.preprocessed_form.equals(form): + name = str(index) + return name + # If the form has no name and can not be found in data.forms something went wrong + assert False + + +def name_localoperator_file(formdata, data): + suffix = '_' + name_form(formdata, data) from dune.perftool.options import get_option basename, extension = splitext(get_option("operator_file")) filename = basename + suffix + extension diff --git a/test/heatequation/heatequation.ufl b/test/heatequation/heatequation.ufl index 922c3276..8392d99e 100644 --- a/test/heatequation/heatequation.ufl +++ b/test/heatequation/heatequation.ufl @@ -5,7 +5,9 @@ V = FiniteElement("CG", "triangle", 1, dirichlet_expression=g) u = TrialFunction(V) v = TestFunction(V) -mass = (u*v)*dx -poisson = (inner(grad(u), grad(v)) - f*v)*dx +# mass = (u*v)*dx +# poisson = (inner(grad(u), grad(v)) - f*v)*dx -forms = [poisson,mass] +# forms = [poisson,mass] + +forms = [(u*v)*dx,(inner(grad(u), grad(v)) - f*v)*dx] \ No newline at end of file -- GitLab