From 33a36c472851f581418223818c689e96fa14d5a3 Mon Sep 17 00:00:00 2001 From: "angela.klewinghaus" Date: Mon, 25 Feb 2013 16:08:44 +0000 Subject: [PATCH] the new trace element git-svn-id: https://svn.dealii.org/branches/branch_face_elements@28555 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/include/deal.II/fe/fe_trace.h | 88 +++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 deal.II/include/deal.II/fe/fe_trace.h diff --git a/deal.II/include/deal.II/fe/fe_trace.h b/deal.II/include/deal.II/fe/fe_trace.h new file mode 100644 index 0000000000..e98b6c8c88 --- /dev/null +++ b/deal.II/include/deal.II/fe/fe_trace.h @@ -0,0 +1,88 @@ + +#ifndef __deal2__fe_trace_h +#define __deal2__fe_trace_h + +#include +#include +#include + +DEAL_II_NAMESPACE_OPEN + +/** + * A finite element, which is the trace of Fe_Q elements, that is + * a tensor product of polynomials on the faces, + * undefined in the interior of the cells and continuous. The basis functions on + * the faces are from Polynomials::LagrangeEquidistant + * + * This finite element is the trace space of FE_Q on the + * faces. + * + * @note Since these are only finite elements on faces, only + * FEFaceValues and FESubfaceValues will be able to extract reasonable + * values from any face polynomial. In order to make the use of + * FESystem simpler, FEValues objects will not fail using this finite + * element space, but all shape function values extracted will equal + * to zero. + * + * @todo Polynomials::LagrangeEquidistant should be and will be + * replaced by Polynomials::LagrangeGaussLobatto as soon as such a + * polynomial set exists. + * @todo so far only implemented for 2D + * + */ + +template +class FE_TraceQ : public FE_PolyFace, dim, spacedim> +{ +public: + /** + * Constructor for tensor product + * polynomials of degree + * p. The shape + * functions created using this + * constructor correspond to + * Legendre polynomials in each + * coordinate direction. + */ + FE_TraceQ(unsigned int p); + + virtual FiniteElement *clone() const; + + /** + * Return a string that uniquely + * identifies a finite + * element. This class returns + * FE_DGQ(degree), with + * dim and degree + * replaced by appropriate + * values. + */ + virtual std::string get_name () const; + + /** + * Check for non-zero values on a face. + * + * This function returns + * @p true, if the shape + * function @p shape_index has + * non-zero values on the face + * @p face_index. + * + * Implementation of the + * interface in + * FiniteElement + */ + virtual bool has_support_on_face (const unsigned int shape_index, + const unsigned int face_index) const; + +private: + /** + * Return vector with dofs per + * vertex, line, quad, hex. + */ + static std::vector get_dpo_vector (const unsigned int deg); +}; + +DEAL_II_NAMESPACE_CLOSE + +#endif -- 2.39.5