diff --git a/test/sumfact/poisson/CMakeLists.txt b/test/sumfact/poisson/CMakeLists.txt index 1dc2483f40d0e3a4af5542c2dc2a12dabbce53f4..6d88816a9849c2ff47bbdee9c97c0f488075a037 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 85e91b2135c564ac9ab743fec5502040b2c34a65..6f70b71dae74402374423f4fc7518f92031300a6 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 0000000000000000000000000000000000000000..d3370049c69cfe5f3fc6e900a6dd7ad3112f09d5 --- /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 576c603e5c5f8b8d00bad8ea4cdcb6ec19ebd332..0000000000000000000000000000000000000000 --- 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 5cdd15ff4bf39a8839ec1b1aa74f623ff4ad5585..0000000000000000000000000000000000000000 --- 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 702ba911668471600d003213c66745fb865922f0..0000000000000000000000000000000000000000 --- 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 d794e0dca0f7f6b2147b22893a98339e33e3ee52..a5e2d647fe524bdb2ecd8855869ca1bb2c8e7bfa 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 0000000000000000000000000000000000000000..fd56ae0a4dd9d8070b489a9d00812c92ff87ee2b --- /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 8333b12131ae392ff2bc0fac753a7953ba2e1362..0000000000000000000000000000000000000000 --- 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 c81eae557caa00dbd1268b54292fee936cd29213..0000000000000000000000000000000000000000 --- 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 66870b07d109d4fbe3fe342df81691651232c16e..0000000000000000000000000000000000000000 --- 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 9019467539150010b6aff3eaebc74216984bbe1e..b39a0a0f56f3fdce2c5f3a24b478fa8b78ba5cce 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 c0153667d89981fe2310cffa23beef6d34e4079a..0000000000000000000000000000000000000000 --- 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 8c8caa9ccdacfb53d980822cbf3e956463fd1e37..0000000000000000000000000000000000000000 --- 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