From: Martin Kronbichler Date: Mon, 26 Nov 2012 13:08:18 +0000 (+0000) Subject: FE_FaceQ should have unit face support points just like FE_DGQ has unit cell support... X-Git-Tag: v8.0.0~1765 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18d3f5cb040633c2bf81a47604710d78af58e395;p=dealii.git FE_FaceQ should have unit face support points just like FE_DGQ has unit cell support points. git-svn-id: https://svn.dealii.org/trunk@27684 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/source/fe/fe_face.cc b/deal.II/source/fe/fe_face.cc index 9ad45b4825..be980ad419 100644 --- a/deal.II/source/fe/fe_face.cc +++ b/deal.II/source/fe/fe_face.cc @@ -24,7 +24,35 @@ FE_FaceQ::FE_FaceQ (const unsigned int degree) TensorProductPolynomials(Polynomials::LagrangeEquidistant::generate_complete_basis(degree)), FiniteElementData(get_dpo_vector(degree), 1, degree, FiniteElementData::L2), std::vector(1,true)) -{} +{ + // initialize unit face support points + const unsigned int codim = dim-1; + this->unit_face_support_points.resize(Utilities::fixed_power(this->degree+1)); + + if (this->degree == 0) + for (unsigned int d=0; dunit_face_support_points[0][d] = 0.5; + else + { + const double step = 1./this->degree; + Point p; + + unsigned int k=0; + for (unsigned int iz=0; iz <= ((codim>2) ? this->degree : 0) ; ++iz) + for (unsigned int iy=0; iy <= ((codim>1) ? this->degree : 0) ; ++iy) + for (unsigned int ix=0; ix<=this->degree; ++ix) + { + p(0) = ix * step; + if (codim>1) + p(1) = iy * step; + if (codim>2) + p(2) = iz * step; + + this->unit_face_support_points[k++] = p; + } + AssertDimension (k, this->unit_face_support_points.size()); + } +} template diff --git a/tests/fe/fe_data_test/cmp/generic b/tests/fe/fe_data_test/cmp/generic index 21b24f8752..b9bf826691 100644 --- a/tests/fe/fe_data_test/cmp/generic +++ b/tests/fe/fe_data_test/cmp/generic @@ -1024,9 +1024,9 @@ DEAL::blocks=1:[4]->4 DEAL::degree=0 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=1 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=1 DEAL::face_to_equivalent_cell_index: 0 DEAL::face_to_cell_index: 0 DEAL::face_to_cell_index: 1 @@ -1055,9 +1055,9 @@ DEAL::blocks=1:[8]->8 DEAL::degree=1 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=2 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=2 DEAL::face_to_equivalent_cell_index: 0 1 DEAL::face_to_cell_index: 0 1 DEAL::face_to_cell_index: 2 3 @@ -1086,9 +1086,9 @@ DEAL::blocks=1:[16]->16 DEAL::degree=3 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=4 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=4 DEAL::face_to_equivalent_cell_index: 0 1 2 3 DEAL::face_to_cell_index: 0 1 2 3 DEAL::face_to_cell_index: 4 5 6 7 @@ -2351,9 +2351,9 @@ DEAL::blocks=1:[6]->6 DEAL::degree=0 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=1 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=1 DEAL::face_to_equivalent_cell_index: 0 DEAL::face_to_cell_index: 0 DEAL::face_to_cell_index: 1 @@ -2386,9 +2386,9 @@ DEAL::blocks=1:[24]->24 DEAL::degree=1 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=4 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=4 DEAL::face_to_equivalent_cell_index: 0 1 2 3 DEAL::face_to_cell_index: 0 1 2 3 DEAL::face_to_cell_index: 4 5 6 7 @@ -2421,9 +2421,9 @@ DEAL::blocks=1:[96]->96 DEAL::degree=3 DEAL::conformity= L2 DEAL::unit_support_points=0 -DEAL::unit_face_support_points=0 +DEAL::unit_face_support_points=16 DEAL::generalized_support_points=0 -DEAL::generalized_face_support_points=0 +DEAL::generalized_face_support_points=16 DEAL::face_to_equivalent_cell_index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DEAL::face_to_cell_index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DEAL::face_to_cell_index: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31