From 84b37e952c5257fea2dfa2bad6fd1e0ab2d30a63 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Tue, 26 Apr 2016 17:24:47 +0200 Subject: [PATCH] Implement poisson_neumann_symdiff! and split mini files to avoid reuse of old vtu files! --- python/dune/perftool/pdelab/localoperator.py | 11 ++++++++++- test/poisson/CMakeLists.txt | 15 ++++++++++++--- test/poisson/poisson_neumann_numdiff.mini | 11 +++++++++++ test/poisson/poisson_neumann_symdiff.mini | 11 +++++++++++ .../{poisson.mini => poisson_numdiff.mini} | 4 ++-- test/poisson/poisson_symdiff.mini | 11 +++++++++++ 6 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 test/poisson/poisson_neumann_numdiff.mini create mode 100644 test/poisson/poisson_neumann_symdiff.mini rename test/poisson/{poisson.mini => poisson_numdiff.mini} (77%) create mode 100644 test/poisson/poisson_symdiff.mini diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 370ef617..90555510 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -213,7 +213,8 @@ class AssemblyMethod(ClassMember): from cgen import LiteralLines, Block content = signature content.append('{') - content.extend(' ' + l for l in generate_code(kernel)[0].split('\n')) + if kernel is not None: + content.extend(' ' + l for l in generate_code(kernel)[0].split('\n')) content.append('}') ClassMember.__init__(self, content) @@ -314,6 +315,14 @@ def generate_localoperator_kernels(formdata, namedata): kernel = generate_kernel(integral) operator_kernels[(integral.integral_type(), 'jacobian')] = kernel + # Generate dummy functions for those kernels, that vanished in the differentiation process + # We *could* solve this problem by using lambda_* terms but we do not really want that, so + # we use empty jacobian assembly methods instead + alpha_measures = set(i.integral_type() for i in form.integrals()) + jacobian_measures = set(i.integral_type() for i in jacform.integrals()) + for it in alpha_measures - jacobian_measures: + operator_kernels[(it, 'jacobian')] = None + # TODO: JacobianApply for matrix-free computations. # Return the set of generated kernels diff --git a/test/poisson/CMakeLists.txt b/test/poisson/CMakeLists.txt index c4e3a69d..d18236b9 100644 --- a/test/poisson/CMakeLists.txt +++ b/test/poisson/CMakeLists.txt @@ -5,7 +5,7 @@ add_generated_executable(UFLFILE poisson.ufl ) dune_add_system_test(TARGET poisson_numdiff - INIFILE poisson.mini + INIFILE poisson_numdiff.mini SCRIPT dune_vtkcompare.py ) @@ -19,7 +19,7 @@ add_generated_executable(UFLFILE poisson.ufl ) dune_add_system_test(TARGET poisson_symdiff - INIFILE poisson.mini + INIFILE poisson_symdiff.mini SCRIPT dune_vtkcompare.py ) @@ -30,6 +30,15 @@ add_generated_executable(UFLFILE poisson_neumann.ufl ) dune_add_system_test(TARGET poisson_neumann_numdiff - INIFILE poisson.mini + INIFILE poisson_neumann_numdiff.mini SCRIPT dune_vtkcompare.py ) + +# 4. Poisson Test Case: source f, mixed neumann/dirichlet boundary + symbolic differentiation +add_generated_executable(UFLFILE poisson_neumann.ufl + TARGET poisson_neumann_symdiff + ) + +dune_add_system_test(TARGET poisson_neumann_symdiff + INIFILE poisson_neumann_symdiff.mini + ) diff --git a/test/poisson/poisson_neumann_numdiff.mini b/test/poisson/poisson_neumann_numdiff.mini new file mode 100644 index 00000000..5c779a14 --- /dev/null +++ b/test/poisson/poisson_neumann_numdiff.mini @@ -0,0 +1,11 @@ +__name = poisson_neumann_numdiff + +lowerleft = 0.0 0.0 +upperright = 1.0 1.0 +elements = 32 32 +elementType = simplical + +[wrapper.vtkcompare] +name = {__name} +reference = poisson_ref +extension = vtu diff --git a/test/poisson/poisson_neumann_symdiff.mini b/test/poisson/poisson_neumann_symdiff.mini new file mode 100644 index 00000000..8e2c2fb0 --- /dev/null +++ b/test/poisson/poisson_neumann_symdiff.mini @@ -0,0 +1,11 @@ +__name = poisson_neumann_symdiff + +lowerleft = 0.0 0.0 +upperright = 1.0 1.0 +elements = 32 32 +elementType = simplical + +[wrapper.vtkcompare] +name = {__name} +reference = poisson_ref +extension = vtu diff --git a/test/poisson/poisson.mini b/test/poisson/poisson_numdiff.mini similarity index 77% rename from test/poisson/poisson.mini rename to test/poisson/poisson_numdiff.mini index 0abecdd8..6d450718 100644 --- a/test/poisson/poisson.mini +++ b/test/poisson/poisson_numdiff.mini @@ -1,4 +1,4 @@ -__name = laplace +__name = poisson_numdiff lowerleft = 0.0 0.0 upperright = 1.0 1.0 @@ -6,6 +6,6 @@ elements = 32 32 elementType = simplical [wrapper.vtkcompare] -name = poisson +name = {__name} reference = poisson_ref extension = vtu diff --git a/test/poisson/poisson_symdiff.mini b/test/poisson/poisson_symdiff.mini new file mode 100644 index 00000000..e3fa2f3f --- /dev/null +++ b/test/poisson/poisson_symdiff.mini @@ -0,0 +1,11 @@ +__name = poisson_symdiff + +lowerleft = 0.0 0.0 +upperright = 1.0 1.0 +elements = 32 32 +elementType = simplical + +[wrapper.vtkcompare] +name = {__name} +reference = poisson_ref +extension = vtu -- GitLab