From c4a0d4caec8f3d5b9a3de78a8a89a1687cb377c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene@debian> Date: Wed, 5 Oct 2016 14:11:24 +0200 Subject: [PATCH] Pass RF as template parameter to lop --- python/dune/perftool/pdelab/driver.py | 3 ++- python/dune/perftool/pdelab/localoperator.py | 23 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py index bc76d54b..5bf9b95c 100644 --- a/python/dune/perftool/pdelab/driver.py +++ b/python/dune/perftool/pdelab/driver.py @@ -623,7 +623,8 @@ def typedef_localoperator(name, formdata): include_file(filename, filetag="driver") from dune.perftool.pdelab.localoperator import localoperator_basename lopname = localoperator_basename(formdata, data) - return "using {} = {}<{}, {}>;".format(name, lopname, ugfs, vgfs) + range_type = type_range() + return "using {} = {}<{}, {}, {}>;".format(name, lopname, ugfs, vgfs, range_type) def type_localoperator(formdata): diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index ed4d5a45..c0701b39 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -56,6 +56,24 @@ def lop_template_test_gfs(): return "GFSV" +@template_parameter("operator") +def lop_template_range_field(): + return "RF" + + +@class_member("operator") +def lop_domain_field(name): + # TODO: Rethink for not Galerkin Method + gfs = lop_template_ansatz_gfs() + return "using {} = typename {}::Traits::GridView::ctype;".format(name, gfs) + + +def name_domain_field(): + name = "DF" + lop_domain_field(name) + return name + + def lop_template_gfs(ma): from ufl.classes import Argument, Coefficient if isinstance(ma.argexpr, Argument): @@ -414,6 +432,7 @@ def generate_localoperator_kernels(formdata, data): localoperator_basename(formdata, data) lop_template_ansatz_gfs() lop_template_test_gfs() + lop_template_range_field() from dune.perftool.pdelab.parameter import parameterclass_basename parameterclass_basename(formdata, data) @@ -426,8 +445,8 @@ def generate_localoperator_kernels(formdata, data): base_class('Dune::PDELab::LocalOperatorDefaultFlags', classtag="operator") from dune.perftool.pdelab.driver import is_stationary if not is_stationary(): - # TODO replace double with clever typename stuff - base_class('Dune::PDELab::InstationaryLocalOperatorDefaultMethods<double>', classtag="operator") + rf = lop_template_range_field() + 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 -- GitLab