From ee1998134cbae0f2e7d8404d6e9b806a1a2bebca Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Tue, 19 Apr 2016 11:34:23 +0200
Subject: [PATCH] Some changes to make the thing compile (but not yet run)

---
 python/dune/perftool/generation/cpp.py       |  7 ++++---
 python/dune/perftool/loopy/transformer.py    | 10 +++++-----
 python/dune/perftool/pdelab/driver.py        | 19 ++++++++++---------
 python/dune/perftool/pdelab/localoperator.py |  8 ++++----
 test/CMakeLists.txt                          |  2 +-
 test/laplace.mini                            |  6 ++++++
 6 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py
index 38b2450a..6a73a9b2 100644
--- a/python/dune/perftool/generation/cpp.py
+++ b/python/dune/perftool/generation/cpp.py
@@ -19,8 +19,8 @@ def include_file(include, filetag=None):
 
 def initializer_list(obj, params, classtag=None):
     assert classtag
-    gen = generator_factory(item_tags=(classtag, "initializer"), counted=True, cache_key_generator=lambda *a: a[0])
-    return "{}({})".format(obj, ", ".join(params))
+    gen = generator_factory(item_tags=(classtag, "initializer"), counted=True, no_deco=True, cache_key_generator=lambda *a: a[0])
+    return gen("{}({})".format(obj, ", ".join(params)))
 
 
 def base_class(baseclass, classtag=None, access=AccessModifier.PUBLIC, construction=[]):
@@ -48,5 +48,6 @@ def constructor_parameter(_type, name, classtag=None, constructortag=None):
     assert constructortag
     from cgen import Value
 
-    gen = generator_factory(item_tags=(classtag, constructortag, "constructor", "parameter"), counted=True, no_deco=True)
+
+    gen = generator_factory(item_tags=(classtag, constructortag, "constructor_param"), counted=True, no_deco=True)
     return gen(Value(_type, name))
diff --git a/python/dune/perftool/loopy/transformer.py b/python/dune/perftool/loopy/transformer.py
index 2f290ac9..3bf90701 100644
--- a/python/dune/perftool/loopy/transformer.py
+++ b/python/dune/perftool/loopy/transformer.py
@@ -154,11 +154,11 @@ def transform_accumulation_term(term):
 
     from dune.perftool.pdelab.quadrature import name_factor
     factor = name_factor()
-    instruction(code="{}.accumulate({}, {}*{})".format(residual,
-                                                       ", ".join(accumargs),
-                                                       expr_tv_name,
-                                                       factor,
-                                                       ),
+    instruction(code="{}.accumulate({}, {}*{});".format(residual,
+                                                        ", ".join(accumargs),
+                                                        expr_tv_name,
+                                                        factor,
+                                                        ),
                 assignees=frozenset({residual}),
                 read_variables=frozenset({residual, factor, expr_tv_name}),
                 forced_iname_deps=acc_inames,
diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py
index a43b48c0..228e4f50 100644
--- a/python/dune/perftool/pdelab/driver.py
+++ b/python/dune/perftool/pdelab/driver.py
@@ -251,8 +251,8 @@ def name_fem(expr):
 
 @preamble
 def typedef_vectorbackend(name):
-    include_file("dune/pdelab/backend/istlvectorbackend.hh", filetag="driver")
-    return "typedef Dune::PDELab::ISTLVectorBackend<Dune::PDELab::ISTLParameters::no_blocking, 1> {};".format(name)
+    include_file("dune/pdelab/backend/istl.hh", filetag="driver")
+    return "typedef Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::none, 1> {};".format(name)
 
 
 @symbol
@@ -376,7 +376,7 @@ def define_dofestimate(name):
     gfs = name_gfs(_form.coefficients()[0].element())
     ini = name_initree()
     return ["int generic_dof_estimate =  {} * {}.maxLocalSize();".format(geo_factor, gfs),
-            "int dof_estimate = {}.get<int>(\"istl.number_of_nnz\", generic_dof_estimate);".format(ini)]
+            "int {} = {}.get<int>(\"istl.number_of_nnz\", generic_dof_estimate);".format(name, ini)]
 
 
 @symbol
@@ -387,7 +387,7 @@ def name_dofestimate():
 
 @preamble
 def typedef_matrixbackend(name):
-    include_file("dune/pdelab/backend/istl/bcrsmatrixbackend.hh", filetag="driver")
+    include_file("dune/pdelab/backend/istl.hh", filetag="driver")
     return "typedef Dune::PDELab::istl::BCRSMatrixBackend<> {};".format(name)
 
 
@@ -453,8 +453,9 @@ def type_localoperator():
 def define_localoperator(name):
     loptype = type_localoperator()
     ini = name_initree()
-    params = name_parameters()
-    return "{} {}({}, {});".format(loptype, name, ini, params)
+#     params = name_parameters()
+#     return "{} {}({}, {});".format(loptype, name, ini, params)
+    return "{} {}({});".format(loptype, name, ini)
 
 
 @symbol
@@ -528,7 +529,7 @@ def name_vector():
 
 @preamble
 def typedef_linearsolver(name):
-    include_file("dune/pdelab/backend/istlsolverbackend.hh", filetag="driver")
+    include_file("dune/pdelab/backend/istl.hh", filetag="driver")
     return "typedef Dune::PDELab::ISTLBackend_SEQ_UMFPack {};".format(name)
 
 
@@ -562,13 +563,13 @@ def name_reduction():
     return "reduction"
 
 
-@symbol
+@preamble
 def typedef_stationarylinearproblemsolver(name):
     include_file("dune/pdelab/stationary/linearproblem.hh", filetag="driver")
     gotype = type_gridoperator()
     lstype = type_linearsolver()
     xtype = type_vector()
-    return "typedef Dune::PDELab::StationaryLinearProblemSolver<{}, {}, {}> {}".format(gotype, lstype, xtype, name)
+    return "typedef Dune::PDELab::StationaryLinearProblemSolver<{}, {}, {}> {};".format(gotype, lstype, xtype, name)
 
 
 @symbol
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index b7225e7e..3dc64c1a 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -50,10 +50,10 @@ def measure_specific_details(measure):
         base_class('Dune::PDELab::FullVolumePattern', classtag="operator")
         numerical_jacobian("Volume")
 
-        ret["residual_signature"] = ['template<typename EG, typename LFSV0, typename X, typename LFSV1, typename R>',
-                                     'void alpha_volume(const EG& eg, const LFSV0& lfsv0, const X& x, const LFSV1& lfsv1, R& r) const']
-        ret["jacobian_signature"] = ['template<typename EG, typename LFSV0, typename X, typename LFSV1, typename J>',
-                                     'void jacobian_volume(const EG& eg, const LFSV0& lfsv0, const X& x, const LFSV1& lfsv1, J& jac) const']
+        ret["residual_signature"] = ['template<typename EG, typename LFSU, typename X, typename LFSV, typename R>',
+                                     'void alpha_volume(const EG& eg, const LFSU& lfsu, const X& x, const LFSV& lfsv, R& r) const']
+        ret["jacobian_signature"] = ['template<typename EG, typename LFSU, typename X, typename LFSV, typename J>',
+                                     'void jacobian_volume(const EG& eg, const LFSU& lfsu, const X& x, const LFSV& lfsv, J& jac) const']
 
     if measure == "exterior_facet":
         base_class('Dune::PDELab::FullBoundaryPattern', classtag="operator")
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 408a12f2..7c7839cc 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_generated_executable(UFLFILE ../examples/laplace.ufl
                          TARGET laplace
-#                         FORM_COMPILER_ARGS --numerical-jacobian
+                         FORM_COMPILER_ARGS --numerical-jacobian
                          )
 
 dune_add_system_test(TARGET laplace
diff --git a/test/laplace.mini b/test/laplace.mini
index e69de29b..0ad21042 100644
--- a/test/laplace.mini
+++ b/test/laplace.mini
@@ -0,0 +1,6 @@
+__name = laplace
+
+lowerleft = 0.0 0.0
+upperright = 1.0 1.0
+elements = 4 4
+elementType = simplical
-- 
GitLab