From ecd685f529f2abbcf13212dd9a8b22ee8f09bb5f Mon Sep 17 00:00:00 2001 From: Simon Sticko Date: Tue, 8 Jun 2021 09:42:28 +0200 Subject: [PATCH] Enable get_face_interpolation_matrix() in 1D on FE_Q and FE_Bernstein Currently, get_face_interpolation_matrix() on FE_Q and FE_Bernstein throws an ExcImpossibleInDim(1) exception in 1D. This is strange because the interpolation matrix should just be a 1-by-1 unit matrix. Remove the dim > 1 assert in FE_Q_base and FE_Bernstein to fix this and modify two tests to check that it works. --- source/fe/fe_bernstein.cc | 5 +- source/fe/fe_q_base.cc | 3 +- tests/bits/face_interpolation.cc | 3 - tests/bits/face_interpolation.output | 576 ++++++++++++++++++ .../face_interpolation_fe_Bernstein_2_fe_q.cc | 53 +- ...e_interpolation_fe_Bernstein_2_fe_q.output | 25 +- 6 files changed, 634 insertions(+), 31 deletions(-) diff --git a/source/fe/fe_bernstein.cc b/source/fe/fe_bernstein.cc index b25f172e44..9f1f10ff3b 100644 --- a/source/fe/fe_bernstein.cc +++ b/source/fe/fe_bernstein.cc @@ -98,7 +98,6 @@ FE_Bernstein::get_face_interpolation_matrix( FullMatrix & interpolation_matrix, const unsigned int face_no) const { - Assert(dim > 1, ExcImpossibleInDim(1)); get_subface_interpolation_matrix(source_fe, numbers::invalid_unsigned_int, interpolation_matrix, @@ -145,8 +144,8 @@ FE_Bernstein::get_subface_interpolation_matrix( // Rule of thumb for FP accuracy, that can be expected for a given // polynomial degree. This value is used to cut off values close to // zero. - double eps = - 2e-13 * std::max(this->degree, source_fe->degree) * (dim - 1); + const double eps = 2e-13 * std::max(this->degree, source_fe->degree) * + std::max(dim - 1, 1); // compute the interpolation matrix by simply taking the value at the // support points. diff --git a/source/fe/fe_q_base.cc b/source/fe/fe_q_base.cc index f0eb0cd8e0..ab3d5cef45 100644 --- a/source/fe/fe_q_base.cc +++ b/source/fe/fe_q_base.cc @@ -611,7 +611,6 @@ FE_Q_Base::get_face_interpolation_matrix( FullMatrix & interpolation_matrix, const unsigned int face_no) const { - Assert(dim > 1, ExcImpossibleInDim(1)); get_subface_interpolation_matrix(source_fe, numbers::invalid_unsigned_int, interpolation_matrix, @@ -660,7 +659,7 @@ FE_Q_Base::get_subface_interpolation_matrix( // Rule of thumb for FP accuracy, that can be expected for a given // polynomial degree. This value is used to cut off values close to // zero. - double eps = 2e-13 * this->q_degree * (dim - 1); + const double eps = 2e-13 * this->q_degree * std::max(dim - 1, 1); // compute the interpolation matrix by simply taking the value at the // support points. diff --git a/tests/bits/face_interpolation.cc b/tests/bits/face_interpolation.cc index 11321aef7f..69f2c67362 100644 --- a/tests/bits/face_interpolation.cc +++ b/tests/bits/face_interpolation.cc @@ -27,9 +27,6 @@ template void check_this(const FiniteElement &fe1, const FiniteElement &fe2) { - if (dim == 1) - return; - // check all combinations of fe1 and fe2 FullMatrix face_constraints; try diff --git a/tests/bits/face_interpolation.output b/tests/bits/face_interpolation.output index 5b9de4c838..bd3cbfee26 100644 --- a/tests/bits/face_interpolation.output +++ b/tests/bits/face_interpolation.output @@ -1,6 +1,38 @@ DEAL::Checking Q1 against Q1 in 1d: +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q1 against Q1 in 1d: +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q1 against Q1 in 2d: DEAL::FE_Q<2>(1) vs. FE_Q<2>(1) DEAL::1.0000000 1.0000000 @@ -70,7 +102,39 @@ DEAL::1.0000000 1.0000000 DEAL::2.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking Q1 against Q2 in 1d: +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q2 against Q1 in 1d: +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q1 against Q2 in 2d: DEAL::FE_Q<2>(1) vs. FE_Q<2>(1) DEAL::1.0000000 1.0000000 @@ -120,7 +184,39 @@ DEAL::FE_Q<3>(1) vs. FE_Q<3>(2) DEAL::2.2500000 1.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking Q1 against Q3 in 1d: +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q3 against Q1 in 1d: +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(1) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(1) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q1 against Q3 in 2d: DEAL::FE_Q<2>(1) vs. FE_Q<2>(1) DEAL::1.0000000 1.0000000 @@ -170,7 +266,39 @@ DEAL::FE_Q<3>(1) vs. FE_Q<3>(3) DEAL::4.0000000 1.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking Q2 against Q2 in 1d: +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q2 against Q2 in 1d: +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q2 against Q2 in 2d: DEAL::FE_Q<2>(2) vs. FE_Q<2>(2) DEAL::1.0000000 1.0000000 @@ -240,7 +368,39 @@ DEAL::1.0000000 1.0000000 DEAL::3.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 1.0000000 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking Q2 against Q3 in 1d: +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q3 against Q2 in 1d: +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(2) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(2) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q2 against Q3 in 2d: DEAL::FE_Q<2>(2) vs. FE_Q<2>(2) DEAL::1.0000000 1.0000000 @@ -290,7 +450,39 @@ DEAL::FE_Q<3>(2) vs. FE_Q<3>(3) DEAL::2.5600000 1.5555418 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 0.80000000 0.80000000 0 0 0 0 0 -0.12360680 0 0.32360680 DEAL::Checking Q3 against Q3 in 1d: +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q3 against Q3 in 1d: +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 +DEAL::FE_Q<1>(3) vs. FE_Q<1>(3) +DEAL::1.0000000 1.0000000 +DEAL::1.0000000 +DEAL::1.0000000 1.0000000 DEAL::Checking Q3 against Q3 in 2d: DEAL::FE_Q<2>(3) vs. FE_Q<2>(3) DEAL::1.0000000 1.0000000 @@ -360,7 +552,23 @@ DEAL::1.0000000 1.0000000 DEAL::4.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking DGQ0 against DGQ0 in 1d: +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ0 in 1d: +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ0 in 2d: DEAL::FE_DGQ<2>(0) vs. FE_DGQ<2>(0) DEAL::(Empty matrix) @@ -398,7 +606,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(0) vs. FE_DGQ<3>(0) DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ1 in 1d: +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ0 in 1d: +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ1 in 2d: DEAL::FE_DGQ<2>(0) vs. FE_DGQ<2>(0) DEAL::(Empty matrix) @@ -436,7 +660,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(0) vs. FE_DGQ<3>(1) DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ0 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ2 in 2d: DEAL::FE_DGQ<2>(0) vs. FE_DGQ<2>(0) DEAL::(Empty matrix) @@ -474,7 +714,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(0) vs. FE_DGQ<3>(2) DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ4 in 1d: +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGQ4 against DGQ0 in 1d: +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(0) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) DEAL::Checking DGQ0 against DGQ4 in 2d: DEAL::FE_DGQ<2>(0) vs. FE_DGQ<2>(0) DEAL::(Empty matrix) @@ -512,7 +768,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(0) vs. FE_DGQ<3>(4) DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ1 in 1d: +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ1 in 1d: +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ1 in 2d: DEAL::FE_DGQ<2>(1) vs. FE_DGQ<2>(1) DEAL::(Empty matrix) @@ -550,7 +822,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(1) vs. FE_DGQ<3>(1) DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ3 in 1d: +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGQ3 against DGQ1 in 1d: +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(1) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGQ1 against DGQ3 in 2d: DEAL::FE_DGQ<2>(1) vs. FE_DGQ<2>(1) DEAL::(Empty matrix) @@ -588,7 +876,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(1) vs. FE_DGQ<3>(3) DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 2d: DEAL::FE_DGQ<2>(2) vs. FE_DGQ<2>(2) DEAL::(Empty matrix) @@ -626,7 +930,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(2) vs. FE_DGQ<3>(2) DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ2 in 2d: DEAL::FE_DGQ<2>(2) vs. FE_DGQ<2>(2) DEAL::(Empty matrix) @@ -664,7 +984,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(2) vs. FE_DGQ<3>(2) DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ4 in 1d: +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGQ4 against DGQ2 in 1d: +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(4) vs. FE_DGQ<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(2) vs. FE_DGQ<1>(4) +DEAL::(Empty matrix) DEAL::Checking DGQ2 against DGQ4 in 2d: DEAL::FE_DGQ<2>(2) vs. FE_DGQ<2>(2) DEAL::(Empty matrix) @@ -702,7 +1038,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(2) vs. FE_DGQ<3>(4) DEAL::(Empty matrix) DEAL::Checking DGQ3 against DGQ3 in 1d: +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGQ3 against DGQ3 in 1d: +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGQ<1>(3) vs. FE_DGQ<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGQ3 against DGQ3 in 2d: DEAL::FE_DGQ<2>(3) vs. FE_DGQ<2>(3) DEAL::(Empty matrix) @@ -740,7 +1092,23 @@ DEAL::(Empty matrix) DEAL::FE_DGQ<3>(3) vs. FE_DGQ<3>(3) DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP0 in 1d: +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP0 in 1d: +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP0 in 2d: DEAL::FE_DGP<2>(0) vs. FE_DGP<2>(0) DEAL::(Empty matrix) @@ -778,7 +1146,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(0) vs. FE_DGP<3>(0) DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP1 in 1d: +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP0 in 1d: +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP1 in 2d: DEAL::FE_DGP<2>(0) vs. FE_DGP<2>(0) DEAL::(Empty matrix) @@ -816,7 +1200,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(0) vs. FE_DGP<3>(1) DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP2 in 1d: +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP0 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP2 in 2d: DEAL::FE_DGP<2>(0) vs. FE_DGP<2>(0) DEAL::(Empty matrix) @@ -854,7 +1254,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(0) vs. FE_DGP<3>(2) DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP4 in 1d: +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) DEAL::Checking DGP4 against DGP0 in 1d: +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(0) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(0) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) DEAL::Checking DGP0 against DGP4 in 2d: DEAL::FE_DGP<2>(0) vs. FE_DGP<2>(0) DEAL::(Empty matrix) @@ -892,7 +1308,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(0) vs. FE_DGP<3>(4) DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP1 in 1d: +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP1 in 1d: +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP1 in 2d: DEAL::FE_DGP<2>(1) vs. FE_DGP<2>(1) DEAL::(Empty matrix) @@ -930,7 +1362,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(1) vs. FE_DGP<3>(1) DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP3 in 1d: +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) DEAL::Checking DGP3 against DGP1 in 1d: +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(1) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(1) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGP1 against DGP3 in 2d: DEAL::FE_DGP<2>(1) vs. FE_DGP<2>(1) DEAL::(Empty matrix) @@ -968,7 +1416,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(1) vs. FE_DGP<3>(3) DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 2d: DEAL::FE_DGP<2>(2) vs. FE_DGP<2>(2) DEAL::(Empty matrix) @@ -1006,7 +1470,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(2) vs. FE_DGP<3>(2) DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP2 in 2d: DEAL::FE_DGP<2>(2) vs. FE_DGP<2>(2) DEAL::(Empty matrix) @@ -1044,7 +1524,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(2) vs. FE_DGP<3>(2) DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP4 in 1d: +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) DEAL::Checking DGP4 against DGP2 in 1d: +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(4) vs. FE_DGP<1>(2) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(2) vs. FE_DGP<1>(4) +DEAL::(Empty matrix) DEAL::Checking DGP2 against DGP4 in 2d: DEAL::FE_DGP<2>(2) vs. FE_DGP<2>(2) DEAL::(Empty matrix) @@ -1082,7 +1578,23 @@ DEAL::(Empty matrix) DEAL::FE_DGP<3>(2) vs. FE_DGP<3>(4) DEAL::(Empty matrix) DEAL::Checking DGP3 against DGP3 in 1d: +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGP3 against DGP3 in 1d: +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) +DEAL::FE_DGP<1>(3) vs. FE_DGP<1>(3) +DEAL::(Empty matrix) DEAL::Checking DGP3 against DGP3 in 2d: DEAL::FE_DGP<2>(3) vs. FE_DGP<2>(3) DEAL::(Empty matrix) @@ -1188,11 +1700,75 @@ DEAL::1.0000000 1.0000000 DEAL::2.0000000 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 DEAL::Checking FE_Q<1>(1)3 against FE_Q<1>(2)3 in 1d: +DEAL::FESystem<1>[FE_Q<1>(1)^3] vs. FESystem<1>[FE_Q<1>(1)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(2)^3] vs. FESystem<1>[FE_Q<1>(2)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(1)^3] vs. FESystem<1>[FE_Q<1>(2)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(2)^3] vs. FESystem<1>[FE_Q<1>(1)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d: +DEAL::FESystem<1>[FE_Q<1>(2)^3] vs. FESystem<1>[FE_Q<1>(2)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(1)^3] vs. FESystem<1>[FE_Q<1>(1)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(2)^3] vs. FESystem<1>[FE_Q<1>(1)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 +DEAL::FESystem<1>[FE_Q<1>(1)^3] vs. FESystem<1>[FE_Q<1>(2)^3] +DEAL::1.0000000 1.0000000 +DEAL::1.7320508 +DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d: +DEAL::FESystem<1>[FE_DGQ<1>(2)^2] vs. FESystem<1>[FE_DGQ<1>(2)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(3)^2] vs. FESystem<1>[FE_DGQ<1>(3)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(2)^2] vs. FESystem<1>[FE_DGQ<1>(3)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(3)^2] vs. FESystem<1>[FE_DGQ<1>(2)^2] +DEAL::(Empty matrix) DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d: +DEAL::FESystem<1>[FE_DGQ<1>(3)^2] vs. FESystem<1>[FE_DGQ<1>(3)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(2)^2] vs. FESystem<1>[FE_DGQ<1>(2)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(3)^2] vs. FESystem<1>[FE_DGQ<1>(2)^2] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGQ<1>(2)^2] vs. FESystem<1>[FE_DGQ<1>(3)^2] +DEAL::(Empty matrix) DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d: +DEAL::FESystem<1>[FE_DGP<1>(3)] vs. FESystem<1>[FE_DGP<1>(3)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(1)] vs. FESystem<1>[FE_DGP<1>(1)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(3)] vs. FESystem<1>[FE_DGP<1>(1)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(1)] vs. FESystem<1>[FE_DGP<1>(3)] +DEAL::(Empty matrix) DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d: +DEAL::FESystem<1>[FE_DGP<1>(1)] vs. FESystem<1>[FE_DGP<1>(1)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(3)] vs. FESystem<1>[FE_DGP<1>(3)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(1)] vs. FESystem<1>[FE_DGP<1>(3)] +DEAL::(Empty matrix) +DEAL::FESystem<1>[FE_DGP<1>(3)] vs. FESystem<1>[FE_DGP<1>(1)] +DEAL::(Empty matrix) DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d: DEAL::FESystem<2>[FE_Q<2>(1)^3] vs. FESystem<2>[FE_Q<2>(1)^3] DEAL::1.0000000 1.0000000 diff --git a/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.cc b/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.cc index 8dc698a658..292afc23ad 100644 --- a/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.cc +++ b/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.cc @@ -14,8 +14,8 @@ // --------------------------------------------------------------------- // Test that we can use FE_Bernstein::get_face_interpolation_matrix to create -// an interpolation matrix between FE_Bernstein and an element that has support -// points. +// an interpolation matrix when the incoming element is either FE_Bernstein or +// FE_Q. #include #include @@ -25,26 +25,23 @@ #include "../tests.h" -// Set up an FE_Q element and an FE_Bernstein element with the incoming order. // Call get_face_interpolation_matrix to create the interpolation matrix -// between these and write it to deallog. +// between the two incoming elements and write it to deallog. template void -create_and_print_face_interpolation_matrix(const unsigned int order) +create_and_print_face_interpolation_matrix( + const FiniteElement &fe_destination, + const FiniteElement &fe_source) { - deallog << "dim = " << dim << ", order = " << order << std::endl; - - const FE_Q fe_q(order); - const FE_Bernstein fe_bernstein(order); - - FullMatrix interpolation_matrix(fe_q.n_dofs_per_face(), - fe_bernstein.n_dofs_per_face()); + deallog << fe_source.get_name() << " to " << fe_destination.get_name() + << std::endl; + FullMatrix interpolation_matrix(fe_destination.n_dofs_per_face(), + fe_source.n_dofs_per_face()); const unsigned int face_index = 0; - - fe_bernstein.get_face_interpolation_matrix(fe_q, - interpolation_matrix, - face_index); + fe_source.get_face_interpolation_matrix(fe_destination, + interpolation_matrix, + face_index); interpolation_matrix.print(deallog); deallog << std::endl; @@ -52,14 +49,28 @@ create_and_print_face_interpolation_matrix(const unsigned int order) +template +void +run_test() +{ + const std::vector orders = {1, 2}; + for (const unsigned int order : orders) + { + const FE_Q fe_q(order); + const FE_Bernstein fe_bernstein(order); + create_and_print_face_interpolation_matrix(fe_q, fe_bernstein); + create_and_print_face_interpolation_matrix(fe_bernstein, + fe_bernstein); + } +} + + + int main() { initlog(); - const int dim = 2; - - const std::vector orders = {1, 2}; - for (const unsigned int order : orders) - create_and_print_face_interpolation_matrix(order); + run_test<1>(); + run_test<2>(); } diff --git a/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.output b/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.output index 9096def154..83c2fd77cd 100644 --- a/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.output +++ b/tests/fe/face_interpolation_fe_Bernstein_2_fe_q.output @@ -1,9 +1,30 @@ -DEAL::dim = 2, order = 1 +DEAL::FE_Bernstein<1>(1) to FE_Q<1>(1) +DEAL::1.0 +DEAL:: +DEAL::FE_Bernstein<1>(1) to FE_Bernstein<1>(1) +DEAL::1.0 +DEAL:: +DEAL::FE_Bernstein<1>(2) to FE_Q<1>(2) +DEAL::1.0 +DEAL:: +DEAL::FE_Bernstein<1>(2) to FE_Bernstein<1>(2) +DEAL::1.0 +DEAL:: +DEAL::FE_Bernstein<2>(1) to FE_Q<2>(1) DEAL::1.0 0.0 DEAL::0.0 1.0 DEAL:: -DEAL::dim = 2, order = 2 +DEAL::FE_Bernstein<2>(1) to FE_Bernstein<2>(1) +DEAL::1.0 0.0 +DEAL::0.0 1.0 +DEAL:: +DEAL::FE_Bernstein<2>(2) to FE_Q<2>(2) +DEAL::1.0 0.0 0.0 +DEAL::0.0 1.0 0.0 +DEAL::0.25 0.25 0.50 +DEAL:: +DEAL::FE_Bernstein<2>(2) to FE_Bernstein<2>(2) DEAL::1.0 0.0 0.0 DEAL::0.0 1.0 0.0 DEAL::0.25 0.25 0.50 -- 2.39.5