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