From e72fec2dcc5388b49d3173473fc71b2ec6deed91 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Mon, 4 May 1998 16:45:21 +0000 Subject: [PATCH] Add support class for the projection of quadrature formula onto faces and subfaces. git-svn-id: https://svn.dealii.org/trunk@244 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/source/quadrature.cc | 109 ++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/deal.II/base/source/quadrature.cc b/deal.II/base/source/quadrature.cc index 3fae03bd06..c84fba356a 100644 --- a/deal.II/base/source/quadrature.cc +++ b/deal.II/base/source/quadrature.cc @@ -39,6 +39,115 @@ double Quadrature::weight (const unsigned int i) const { +template +const vector & Quadrature::get_weights () const { + return weights; +}; + + + + +template <> +void QProjector<2>::project_to_face (const Quadrature<1> &quadrature, + const unsigned int face_no, + vector > &q_points) { + const unsigned int dim=2; + Assert (face_no<2*dim, ExcInvalidIndex (face_no, 2*dim)); + + for (unsigned int p=0; p(quadrature.quad_point(p)(0),0); + break; + case 1: + q_points[p] = Point(1,quadrature.quad_point(p)(0)); + break; + case 2: + q_points[p] = Point(quadrature.quad_point(p)(0),1); + break; + case 3: + q_points[p] = Point(0,quadrature.quad_point(p)(0)); + break; + default: + Assert (false, ExcInternalError()); + }; +}; + + + +template <> +void QProjector<2>::project_to_subface (const Quadrature<1> &quadrature, + const unsigned int face_no, + const unsigned int subface_no, + vector > &q_points) { + const unsigned int dim=2; + Assert (face_no<2*dim, ExcInvalidIndex (face_no, 2*dim)); + Assert (subface_no<(1<<(dim-1)), ExcInvalidIndex (face_no, 1<<(dim-1))); + + for (unsigned int p=0; p(quadrature.quad_point(p)(0)/2,0); + break; + case 1: + q_points[p] + = Point(quadrature.quad_point(p)(0)/2+0.5,0); + break; + default: + Assert (false, ExcInternalError()); + }; + break; + case 1: + switch (subface_no) + { + case 0: + q_points[p] = Point(1,quadrature.quad_point(p)(0)/2); + break; + case 1: + q_points[p] = Point(1,quadrature.quad_point(p)(0)/2+0.5); + break; + default: + Assert (false, ExcInternalError()); + }; + break; + case 2: + switch (subface_no) + { + case 0: + q_points[p] = Point(quadrature.quad_point(p)(0)/2,1); + break; + case 1: + q_points[p] = Point(quadrature.quad_point(p)(0)/2+0.5,1); + break; + default: + Assert (false, ExcInternalError()); + }; + break; + case 3: + switch (subface_no) + { + case 0: + q_points[p] = Point(0,quadrature.quad_point(p)(0)/2); + break; + case 1: + q_points[p] = Point(0,quadrature.quad_point(p)(0)/2+0.5); + break; + default: + Assert (false, ExcInternalError()); + }; + break; + default: + Assert (false, ExcInternalError()); + }; +}; + + // explicite instantiations -- 2.39.5