]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Allow for the possibility of an approximation gap
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 11 Aug 2006 17:50:54 +0000 (17:50 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 11 Aug 2006 17:50:54 +0000 (17:50 +0000)
git-svn-id: https://svn.dealii.org/trunk@13676 0785d39b-7218-0410-832d-ea1e28bc413d

tests/deal.II/project_common.cc
tests/deal.II/project_nedelec_01.cc
tests/deal.II/project_nedelec_01/cmp/generic
tests/deal.II/project_rt_01.cc

index 12615f8a552f16b048e4331084495a7b5dbeeeda..a817111468f6111b1075d254122f16e17b061254 100644 (file)
@@ -93,9 +93,14 @@ class F :  public Function<dim>
 
 
 
+// check the given element of polynomial order p. the last parameter, if
+// given, denotes a gap in convergence order; for example, the Nedelec element
+// of polynomial degree p has normal components of degree p-1 and therefore
+// can only represent polynomials of degree p-1 exactly. the gap is then 1.
 template <int dim>
 void test_no_hanging_nodes (const FiniteElement<dim> &fe,
-                           const unsigned int        p)
+                           const unsigned int        p,
+                           const unsigned int        order_difference = 0)
 {
   Triangulation<dim>     triangulation;
   GridGenerator::hyper_cube (triangulation);
@@ -132,7 +137,7 @@ void test_no_hanging_nodes (const FiniteElement<dim> &fe,
              << ", rel. error=" << error.l2_norm() / projection.l2_norm()
              << std::endl;
          
-      if (q<=p)
+      if (q<=p-order_difference)
        Assert (error.l2_norm() <= 1e-12*projection.l2_norm(),
                ExcInternalError());
     }
index 12682fbb0fb460d4eaa4e3feb91dee7cfffee2c0..675f5fba8804cb9f0a1ad0f10f0bdd01a7512176 100644 (file)
@@ -27,5 +27,5 @@ void test ()
   if (dim > 1)
                                     // only p=1 implemented at present
     for (unsigned int p=1; p<2; ++p)
-      test_no_hanging_nodes (FE_Nedelec<dim>(p), p);
+      test_no_hanging_nodes (FE_Nedelec<dim>(p), p, 1);
 }
index 6c31f57c16ba43e1a3fafd9198eb80cd65059ab1..2987642701bf5a2a486ddf18a4735570775af002 100644 (file)
 
-DEAL::n_dofs=9
-DEAL:cg::Starting value 0.342
+DEAL::n_dofs=144
+DEAL:cg::Starting value 5.65
 DEAL:cg::Convergence step 8 value 0
-DEAL::FE_Q<1>(1), P_0, rel. error=0
-DEAL:cg::Starting value 0.709
+DEAL::FE_Nedelec<2>(1), P_0, rel. error=0
+DEAL:cg::Starting value 11.4
 DEAL:cg::Convergence step 8 value 0
-DEAL::FE_Q<1>(1), P_1, rel. error=0
-DEAL:cg::Starting value 1.12
+DEAL::FE_Nedelec<2>(1), P_1, rel. error=0.0129
+DEAL:cg::Starting value 17.4
 DEAL:cg::Convergence step 8 value 0
-DEAL::FE_Q<1>(1), P_2, rel. error=0.000336
-DEAL:cg::Starting value 1.57
+DEAL::FE_Nedelec<2>(1), P_2, rel. error=0.0220
+DEAL:cg::Starting value 23.7
 DEAL:cg::Convergence step 8 value 0
-DEAL::FE_Q<1>(1), P_3, rel. error=0.000737
-DEAL::n_dofs=17
-DEAL:cg::Starting value 0.262
-DEAL:cg::Convergence step 12 value 0
-DEAL::FE_Q<1>(2), P_0, rel. error=0
-DEAL:cg::Starting value 0.544
-DEAL:cg::Convergence step 12 value 0
-DEAL::FE_Q<1>(2), P_1, rel. error=0
-DEAL:cg::Starting value 0.869
-DEAL:cg::Convergence step 13 value 0
-DEAL::FE_Q<1>(2), P_2, rel. error=0
-DEAL:cg::Starting value 1.23
-DEAL:cg::Convergence step 13 value 0
-DEAL::FE_Q<1>(2), P_3, rel. error=1.24e-05
-DEAL:cg::Starting value 1.63
-DEAL:cg::Convergence step 13 value 0
-DEAL::FE_Q<1>(2), P_4, rel. error=3.41e-05
-DEAL::n_dofs=25
-DEAL:cg::Starting value 0.206
-DEAL:cg::Convergence step 13 value 0
-DEAL::FE_Q<1>(3), P_0, rel. error=0
-DEAL:cg::Starting value 0.429
-DEAL:cg::Convergence step 14 value 0
-DEAL::FE_Q<1>(3), P_1, rel. error=0
-DEAL:cg::Starting value 0.685
-DEAL:cg::Convergence step 14 value 0
-DEAL::FE_Q<1>(3), P_2, rel. error=0
-DEAL:cg::Starting value 0.974
-DEAL:cg::Convergence step 14 value 0
-DEAL::FE_Q<1>(3), P_3, rel. error=0
-DEAL:cg::Starting value 1.29
-DEAL:cg::Convergence step 14 value 0
-DEAL::FE_Q<1>(3), P_4, rel. error=1.77e-07
-DEAL:cg::Starting value 1.64
-DEAL:cg::Convergence step 15 value 0
-DEAL::FE_Q<1>(3), P_5, rel. error=6.01e-07
-DEAL::n_dofs=33
-DEAL:cg::Starting value 0.191
-DEAL:cg::Convergence step 15 value 0
-DEAL::FE_Q<1>(4), P_0, rel. error=0
-DEAL:cg::Starting value 0.398
-DEAL:cg::Convergence step 15 value 0
-DEAL::FE_Q<1>(4), P_1, rel. error=0
-DEAL:cg::Starting value 0.638
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<1>(4), P_2, rel. error=0
-DEAL:cg::Starting value 0.908
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<1>(4), P_3, rel. error=0
-DEAL:cg::Starting value 1.21
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<1>(4), P_4, rel. error=0
-DEAL:cg::Starting value 1.53
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<1>(4), P_5, rel. error=6.36e-09
-DEAL:cg::Starting value 1.88
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<1>(4), P_6, rel. error=2.50e-08
-DEAL::n_dofs=81
-DEAL:cg::Starting value 0.352
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<2>(1), P_0, rel. error=0
-DEAL:cg::Starting value 0.717
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<2>(1), P_1, rel. error=0
-DEAL:cg::Starting value 1.10
+DEAL::FE_Nedelec<2>(1), P_3, rel. error=0.0315
+DEAL::n_dofs=1944
+DEAL:cg::Starting value 5.35
 DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(1), P_2, rel. error=8.80e-05
-DEAL:cg::Starting value 1.51
+DEAL::FE_Nedelec<3>(1), P_0, rel. error=0
+DEAL:cg::Starting value 10.8
 DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(1), P_3, rel. error=0.000198
-DEAL::n_dofs=289
-DEAL:cg::Starting value 0.206
-DEAL:cg::Convergence step 16 value 0
-DEAL::FE_Q<2>(2), P_0, rel. error=0
-DEAL:cg::Starting value 0.421
-DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(2), P_1, rel. error=0
-DEAL:cg::Starting value 0.654
-DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(2), P_2, rel. error=0
-DEAL:cg::Starting value 0.905
-DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(2), P_3, rel. error=2.41e-06
-DEAL:cg::Starting value 1.17
-DEAL:cg::Convergence step 17 value 0
-DEAL::FE_Q<2>(2), P_4, rel. error=6.79e-06
-DEAL::n_dofs=625
-DEAL:cg::Starting value 0.127
+DEAL::FE_Nedelec<3>(1), P_1, rel. error=0.00261
+DEAL:cg::Starting value 16.3
 DEAL:cg::Convergence step 18 value 0
-DEAL::FE_Q<2>(3), P_0, rel. error=0
-DEAL:cg::Starting value 0.261
+DEAL::FE_Nedelec<3>(1), P_2, rel. error=0.00450
+DEAL:cg::Starting value 21.9
 DEAL:cg::Convergence step 18 value 0
-DEAL::FE_Q<2>(3), P_1, rel. error=0
-DEAL:cg::Starting value 0.406
-DEAL:cg::Convergence step 19 value 0
-DEAL::FE_Q<2>(3), P_2, rel. error=0
-DEAL:cg::Starting value 0.562
-DEAL:cg::Convergence step 19 value 0
-DEAL::FE_Q<2>(3), P_3, rel. error=0
-DEAL:cg::Starting value 0.730
-DEAL:cg::Convergence step 19 value 0
-DEAL::FE_Q<2>(3), P_4, rel. error=2.90e-08
-DEAL:cg::Starting value 0.908
-DEAL:cg::Convergence step 19 value 0
-DEAL::FE_Q<2>(3), P_5, rel. error=1.00e-07
-DEAL::n_dofs=729
-DEAL:cg::Starting value 0.241
-DEAL:cg::Convergence step 22 value 0
-DEAL::FE_Q<3>(1), P_0, rel. error=0
-DEAL:cg::Starting value 0.488
-DEAL:cg::Convergence step 22 value 0
-DEAL::FE_Q<3>(1), P_1, rel. error=0
-DEAL:cg::Starting value 0.744
-DEAL:cg::Convergence step 22 value 0
-DEAL::FE_Q<3>(1), P_2, rel. error=2.51e-05
-DEAL:cg::Starting value 1.01
-DEAL:cg::Convergence step 22 value 0
-DEAL::FE_Q<3>(1), P_3, rel. error=5.72e-05
-DEAL::n_dofs=4913
-DEAL:cg::Starting value 0.108
-DEAL:cg::Convergence step 22 value 0
-DEAL::FE_Q<3>(2), P_0, rel. error=0
-DEAL:cg::Starting value 0.219
-DEAL:cg::Convergence step 23 value 0
-DEAL::FE_Q<3>(2), P_1, rel. error=0
-DEAL:cg::Starting value 0.337
-DEAL:cg::Convergence step 23 value 0
-DEAL::FE_Q<3>(2), P_2, rel. error=0
-DEAL:cg::Starting value 0.461
-DEAL:cg::Convergence step 24 value 0
-DEAL::FE_Q<3>(2), P_3, rel. error=5.06e-07
-DEAL:cg::Starting value 0.592
-DEAL:cg::Convergence step 24 value 0
-DEAL::FE_Q<3>(2), P_4, rel. error=1.44e-06
+DEAL::FE_Nedelec<3>(1), P_3, rel. error=0.00649
index cdf61823720aff9aa94a849e4792b62f2ab478f4..d455d8d74659f6532e4e2d241cdceea4d7c76b0e 100644 (file)
@@ -26,5 +26,5 @@ void test ()
 {
   if (dim != 1)
     for (unsigned int p=0; p<6-dim; ++p)
-      test_no_hanging_nodes (FE_RaviartThomas<dim>(p), p);
+      test_no_hanging_nodes (FE_RaviartThomas<dim>(p), p+1, 1);
 }

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.