From 5d78762bfd64a79e59c87b3d52e7abdb4a07f7ec Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Mon, 19 Dec 2016 13:57:57 +0100
Subject: [PATCH] Cleanup sumfact tests using ufl variation

---
 test/sumfact/poisson/CMakeLists.txt           | 41 ++++++++-----------
 ...poisson_2d_order1.mini => poisson_2d.mini} |  8 +++-
 test/sumfact/poisson/poisson_2d.ufl           | 12 ++++++
 test/sumfact/poisson/poisson_2d_order1.ufl    | 10 -----
 test/sumfact/poisson/poisson_2d_order2.mini   | 20 ---------
 test/sumfact/poisson/poisson_2d_order2.ufl    | 10 -----
 ...poisson_3d_order1.mini => poisson_3d.mini} | 10 +++--
 test/sumfact/poisson/poisson_3d.ufl           | 12 ++++++
 test/sumfact/poisson/poisson_3d_order1.ufl    | 15 -------
 test/sumfact/poisson/poisson_3d_order2.mini   | 22 ----------
 test/sumfact/poisson/poisson_3d_order2.ufl    | 10 -----
 .../{poisson_dg.mini => poisson_dg_2d.mini}   |  0
 .../{poisson_dg.ufl => poisson_dg_2d.ufl}     | 10 +++--
 .../poisson/poisson_dg_only_volume.mini       | 20 ---------
 .../poisson/poisson_dg_only_volume.ufl        | 19 ---------
 15 files changed, 60 insertions(+), 159 deletions(-)
 rename test/sumfact/poisson/{poisson_2d_order1.mini => poisson_2d.mini} (63%)
 create mode 100644 test/sumfact/poisson/poisson_2d.ufl
 delete mode 100644 test/sumfact/poisson/poisson_2d_order1.ufl
 delete mode 100644 test/sumfact/poisson/poisson_2d_order2.mini
 delete mode 100644 test/sumfact/poisson/poisson_2d_order2.ufl
 rename test/sumfact/poisson/{poisson_3d_order1.mini => poisson_3d.mini} (62%)
 create mode 100644 test/sumfact/poisson/poisson_3d.ufl
 delete mode 100644 test/sumfact/poisson/poisson_3d_order1.ufl
 delete mode 100644 test/sumfact/poisson/poisson_3d_order2.mini
 delete mode 100644 test/sumfact/poisson/poisson_3d_order2.ufl
 rename test/sumfact/poisson/{poisson_dg.mini => poisson_dg_2d.mini} (100%)
 rename test/sumfact/poisson/{poisson_dg.ufl => poisson_dg_2d.ufl} (58%)
 delete mode 100644 test/sumfact/poisson/poisson_dg_only_volume.mini
 delete mode 100644 test/sumfact/poisson/poisson_dg_only_volume.ufl

diff --git a/test/sumfact/poisson/CMakeLists.txt b/test/sumfact/poisson/CMakeLists.txt
index 1dc2483f..6d88816a 100644
--- a/test/sumfact/poisson/CMakeLists.txt
+++ b/test/sumfact/poisson/CMakeLists.txt
@@ -1,42 +1,35 @@
-# Poisson CG 2D
-dune_add_formcompiler_system_test(UFLFILE poisson_2d_order1.ufl
-                                  BASENAME sumfact_poisson_2d_order1
-                                  INIFILE poisson_2d_order1.mini
+# 1. Poisson Test Case in 2D
+dune_add_formcompiler_system_test(UFLFILE poisson_2d.ufl
+                                  BASENAME sumfact_poisson_2d
+                                  INIFILE poisson_2d.mini
                                   )
 
-dune_add_formcompiler_system_test(UFLFILE poisson_2d_order2.ufl
-                                  BASENAME sumfact_poisson_2d_order2
-                                  INIFILE poisson_2d_order2.mini
+# 2. Poisson Test case in 3D
+dune_add_formcompiler_system_test(UFLFILE poisson_3d.ufl
+                                  BASENAME sumfact_poisson_3d
+                                  INIFILE poisson_3d.mini
                                   )
 
-
-# Poisson CG 3D
-dune_add_formcompiler_system_test(UFLFILE poisson_3d_order1.ufl
-                                  BASENAME sumfact_poisson_3d_order1
-                                  INIFILE poisson_3d_order1.mini
-                                  )
-dune_add_formcompiler_system_test(UFLFILE poisson_3d_order2.ufl
-                                  BASENAME sumfact_poisson_3d_order2
-                                  INIFILE poisson_3d_order2.mini
-                                  )
-
-
 # Operator counting test
 dune_add_formcompiler_system_test(UFLFILE opcount_poisson_2d_order2.ufl
                                   BASENAME opcount_sumfact_poisson_2d_order2
                                   INIFILE opcount_poisson_2d_order2.mini
                                   )
 
-
-# Poisson DG
-dune_add_formcompiler_system_test(UFLFILE poisson_dg.ufl
+# 3. Poisson Test Case: DG in 2D
+dune_add_formcompiler_system_test(UFLFILE poisson_dg_2d.ufl
                                   BASENAME sumfact_poisson_dg
-                                  INIFILE poisson_dg.mini
+                                  INIFILE poisson_dg_2d.mini
                                   )
 
+# 4. Poisson Test Case: DG in 3D
+dune_add_formcompiler_system_test(UFLFILE poisson_dg_3d.ufl
+                                  BASENAME sumfact_poisson_dg
+                                  INIFILE poisson_dg_3d.mini
+                                  )
 
 # Poisson DG using FastDGGridOperator
-dune_add_formcompiler_system_test(UFLFILE poisson_dg.ufl
+dune_add_formcompiler_system_test(UFLFILE poisson_dg_2d.ufl
                                   BASENAME sumfact_poisson_fastdg
                                   INIFILE poisson_fastdg.mini
                                   )
diff --git a/test/sumfact/poisson/poisson_2d_order1.mini b/test/sumfact/poisson/poisson_2d.mini
similarity index 63%
rename from test/sumfact/poisson/poisson_2d_order1.mini
rename to test/sumfact/poisson/poisson_2d.mini
index 85e91b21..6f70b71d 100644
--- a/test/sumfact/poisson/poisson_2d_order1.mini
+++ b/test/sumfact/poisson/poisson_2d.mini
@@ -1,8 +1,9 @@
-__name = sumfact_poisson_2d_order1_{__exec_suffix}
-__exec_suffix = {diff_suffix}_{vec_suffix}
+__name = sumfact_poisson_2d_{__exec_suffix}
+__exec_suffix = {deg_suffix}_{diff_suffix}_{vec_suffix}
 
 diff_suffix = numdiff, symdiff | expand num
 vec_suffix = vec, nonvec | expand vec
+deg_suffix = deg{formcompiler.ufl_variants.degree}
 
 cells = 8 8
 extension = 1. 1.
@@ -18,3 +19,6 @@ exact_solution_expression = g
 compare_l2errorsquared = 1e-4
 sumfact = 1
 vectorize_quad = 1, 0 | expand vec
+
+[formcompiler.ufl_variants]
+degree = 1, 2 | expand deg
diff --git a/test/sumfact/poisson/poisson_2d.ufl b/test/sumfact/poisson/poisson_2d.ufl
new file mode 100644
index 00000000..d3370049
--- /dev/null
+++ b/test/sumfact/poisson/poisson_2d.ufl
@@ -0,0 +1,12 @@
+cell = "quadrilateral"
+
+x = SpatialCoordinate(cell)
+c = (0.5-x[0])**2 + (0.5-x[1])**2
+g = exp(-1.*c)
+f = 4*(1.-c)*g
+
+V = FiniteElement("CG", cell, degree, dirichlet_expression=g)
+u = TrialFunction(V)
+v = TestFunction(V)
+
+forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_2d_order1.ufl b/test/sumfact/poisson/poisson_2d_order1.ufl
deleted file mode 100644
index 576c603e..00000000
--- a/test/sumfact/poisson/poisson_2d_order1.ufl
+++ /dev/null
@@ -1,10 +0,0 @@
-cell = "quadrilateral"
-
-f = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return 4.*(1.-c.two_norm2())*std::exp(-1.*c.two_norm2());", cell=cell)
-g = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", cell=cell)
-
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g)
-u = TrialFunction(V)
-v = TestFunction(V)
-
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_2d_order2.mini b/test/sumfact/poisson/poisson_2d_order2.mini
deleted file mode 100644
index 5cdd15ff..00000000
--- a/test/sumfact/poisson/poisson_2d_order2.mini
+++ /dev/null
@@ -1,20 +0,0 @@
-__name = sumfact_poisson_2d_order2_{__exec_suffix}
-__exec_suffix = {diff_suffix}_{vec_suffix}
-
-diff_suffix = numdiff, symdiff | expand num
-vec_suffix = vec, nonvec | expand vec
-
-cells = 8 8
-extension = 1. 1.
-
-[wrapper.vtkcompare]
-name = {__name}
-reference = poisson_ref
-extension = vtu
-
-[formcompiler]
-numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
-compare_l2errorsquared = 1e-8
-sumfact = 1
-vectorize_quad = 1, 0 | expand vec
diff --git a/test/sumfact/poisson/poisson_2d_order2.ufl b/test/sumfact/poisson/poisson_2d_order2.ufl
deleted file mode 100644
index 702ba911..00000000
--- a/test/sumfact/poisson/poisson_2d_order2.ufl
+++ /dev/null
@@ -1,10 +0,0 @@
-cell = "quadrilateral"
-
-f = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return 4.*(1.-c.two_norm2())*std::exp(-1.*c.two_norm2());", cell=cell)
-g = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", cell=cell)
-
-V = FiniteElement("CG", cell, 2, dirichlet_expression=g)
-u = TrialFunction(V)
-v = TestFunction(V)
-
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_3d_order1.mini b/test/sumfact/poisson/poisson_3d.mini
similarity index 62%
rename from test/sumfact/poisson/poisson_3d_order1.mini
rename to test/sumfact/poisson/poisson_3d.mini
index d794e0dc..a5e2d647 100644
--- a/test/sumfact/poisson/poisson_3d_order1.mini
+++ b/test/sumfact/poisson/poisson_3d.mini
@@ -1,9 +1,10 @@
-__name = sumfact_poisson_3d_order1_{__exec_suffix}
-__exec_suffix = {diff_suffix}_{vecq_suffix}_{vecg_suffix}
+__name = sumfact_poisson_3d_{__exec_suffix}
+__exec_suffix = {deg_suffix}_{diff_suffix}_{vecq_suffix}_{vecg_suffix}
 
 diff_suffix = numdiff, symdiff | expand num
 vecq_suffix = quadvec, nonquadvec | expand vec_q
 vecg_suffix = gradvec, nongradvec | expand vec_g
+deg_suffix = deg{formcompiler.ufl_variants.degree}
 
 cells = 8 8 8
 extension = 1. 1. 1.
@@ -16,7 +17,10 @@ extension = vtu
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
 exact_solution_expression = g
-compare_l2errorsquared = 1e-4
+compare_l2errorsquared = 2e-4
 sumfact = 1
 vectorize_quad = 1, 0 | expand vec_q
 vectorize_grads = 1, 0 | expand vec_g
+
+[formcompiler.ufl_variants]
+degree = 1, 2 | expand deg
diff --git a/test/sumfact/poisson/poisson_3d.ufl b/test/sumfact/poisson/poisson_3d.ufl
new file mode 100644
index 00000000..fd56ae0a
--- /dev/null
+++ b/test/sumfact/poisson/poisson_3d.ufl
@@ -0,0 +1,12 @@
+cell = "hexahedron"
+
+x = SpatialCoordinate(cell)
+c = (0.5 - x[0])**2 + (0.5 - x[1])**2 + (0.5 - x[2])**2
+g = exp(-1.*c)
+f = 6*(1.-c)*g
+
+V = FiniteElement("CG", cell, degree, dirichlet_expression=g)
+u = TrialFunction(V)
+v = TestFunction(V)
+
+forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_3d_order1.ufl b/test/sumfact/poisson/poisson_3d_order1.ufl
deleted file mode 100644
index 8333b121..00000000
--- a/test/sumfact/poisson/poisson_3d_order1.ufl
+++ /dev/null
@@ -1,15 +0,0 @@
-cell = "hexahedron"
-
-x = SpatialCoordinate(cell)
-c = (0.5 - x[0])**2 + (0.5 - x[1])**2 + (0.5 - x[2])**2
-g = exp(-1.*c)
-f = 6*(1.-c)*g
-
-#f = Expression("Dune::FieldVector<double,3> c(0.5); c-= x; return 6.*(1.-c.two_norm2())*std::exp(-1.*c.two_norm2());", cell=cell)
-#g = Expression("Dune::FieldVector<double,3> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", cell=cell)
-
-V = FiniteElement("CG", cell, 1, dirichlet_expression=g)
-u = TrialFunction(V)
-v = TestFunction(V)
-
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_3d_order2.mini b/test/sumfact/poisson/poisson_3d_order2.mini
deleted file mode 100644
index c81eae55..00000000
--- a/test/sumfact/poisson/poisson_3d_order2.mini
+++ /dev/null
@@ -1,22 +0,0 @@
-__name = sumfact_poisson_3d_order2_{__exec_suffix}
-__exec_suffix = {diff_suffix}_{vecq_suffix}_{vecg_suffix}
-
-diff_suffix = numdiff, symdiff | expand num
-vecq_suffix = quadvec, nonquadvec | expand vec_q
-vecg_suffix = gradvec, nongradvec | expand vec_g
-
-cells = 8 8 8
-extension = 1. 1. 1.
-
-[wrapper.vtkcompare]
-name = {__name}
-reference = poisson_ref
-extension = vtu
-
-[formcompiler]
-numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
-compare_l2errorsquared = 1e-8
-sumfact = 1
-vectorize_quad = 1, 0 | expand vec_q
-vectorize_grads = 1, 0 | expand vec_g
diff --git a/test/sumfact/poisson/poisson_3d_order2.ufl b/test/sumfact/poisson/poisson_3d_order2.ufl
deleted file mode 100644
index 66870b07..00000000
--- a/test/sumfact/poisson/poisson_3d_order2.ufl
+++ /dev/null
@@ -1,10 +0,0 @@
-cell = "hexahedron"
-
-f = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return 4.*(1.-c.two_norm2())*std::exp(-1.*c.two_norm2());", cell=cell)
-g = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", cell=cell)
-
-V = FiniteElement("CG", cell, 2, dirichlet_expression=g)
-u = TrialFunction(V)
-v = TestFunction(V)
-
-forms = [(inner(grad(u), grad(v)) - f*v)*dx]
diff --git a/test/sumfact/poisson/poisson_dg.mini b/test/sumfact/poisson/poisson_dg_2d.mini
similarity index 100%
rename from test/sumfact/poisson/poisson_dg.mini
rename to test/sumfact/poisson/poisson_dg_2d.mini
diff --git a/test/sumfact/poisson/poisson_dg.ufl b/test/sumfact/poisson/poisson_dg_2d.ufl
similarity index 58%
rename from test/sumfact/poisson/poisson_dg.ufl
rename to test/sumfact/poisson/poisson_dg_2d.ufl
index 90194675..b39a0a0f 100644
--- a/test/sumfact/poisson/poisson_dg.ufl
+++ b/test/sumfact/poisson/poisson_dg_2d.ufl
@@ -1,9 +1,11 @@
 cell = "quadrilateral"
 
-f = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return 4.*(1.-c.two_norm2())*std::exp(-1.*c.two_norm2());", cell=cell)
-g = Expression("Dune::FieldVector<double,2> c(0.5); c-= x; return std::exp(-1.*c.two_norm2());", on_intersection=True, cell=cell)
+x = SpatialCoordinate(cell)
+c = (0.5-x[0])**2 + (0.5-x[1])**2
+g = exp(-1.*c)
+f = 4*(1.-c)*g
 
-V = FiniteElement("DG", cell, 1)
+V = FiniteElement("DG", cell, degree)
 
 u = TrialFunction(V)
 v = TestFunction(V)
@@ -24,4 +26,4 @@ r = inner(grad(u), grad(v))*dx \
   + theta*g*inner(grad(v), n)*ds \
   - gamma*g*v*ds
 
-forms = [r]
\ No newline at end of file
+forms = [r]
diff --git a/test/sumfact/poisson/poisson_dg_only_volume.mini b/test/sumfact/poisson/poisson_dg_only_volume.mini
deleted file mode 100644
index c0153667..00000000
--- a/test/sumfact/poisson/poisson_dg_only_volume.mini
+++ /dev/null
@@ -1,20 +0,0 @@
-__name = sumfact_poisson_dg_only_volume_{__exec_suffix}
-
-__exec_suffix = {__num_suffix}_{__sumfact_suffix}
-__num_suffix  = numdiff, symdiff |expand num
-__sumfact_suffix = normal, sumfact | expand sumf
-
-cells = 1 1
-extension = 1. 1.
-printresidual = 1
-printmatrix = 1
-
-[wrapper.vtkcompare]
-name = {__name}
-extension = vtu
-
-[formcompiler]
-numerical_jacobian = 1, 0 | expand num
-sumfact = 0, 1 | expand sumf
-print_transformations = 1
-print_transformations_dir = .
diff --git a/test/sumfact/poisson/poisson_dg_only_volume.ufl b/test/sumfact/poisson/poisson_dg_only_volume.ufl
deleted file mode 100644
index 8c8caa9c..00000000
--- a/test/sumfact/poisson/poisson_dg_only_volume.ufl
+++ /dev/null
@@ -1,19 +0,0 @@
-cell = "quadrilateral"
-
-f = Expression("return -2.0*x.size();", cell=cell)
-g = Expression("return x.two_norm2();", on_intersection=True, cell=cell)
-
-V = FiniteElement("DG", cell, 1)
-
-u = TrialFunction(V)
-v = TestFunction(V)
-
-n = FacetNormal(cell)('+')
-
-gamma = 1.0
-theta = 1.0
-
-r = inner(grad(u), grad(v))*dx \
-  - f*v*dx
-
-forms = [r]
\ No newline at end of file
-- 
GitLab