18 #include <deal.II/base/qprojector.h>
19 #include <deal.II/base/polynomial_space.h>
20 #include <deal.II/fe/fe_values.h>
21 #include <deal.II/fe/fe_poly_face.h>
26 template <
class POLY,
int dim,
int spacedim>
28 const POLY &poly_space,
30 const std::vector<bool> &restriction_is_additive_flags):
32 restriction_is_additive_flags,
34 poly_space(poly_space)
40 template <
class POLY,
int dim,
int spacedim>
55 template <
class POLY,
int dim,
int spacedim>
69 template <
class POLY,
int dim,
int spacedim>
90 template <
class POLY,
int dim,
int spacedim>
102 template <
class POLY,
int dim,
int spacedim>
122 const unsigned int n_q_points = quadrature.
size();
125 std::vector<double> values(0);
126 std::vector<
Tensor<1,dim-1> > grads(0);
127 std::vector<Tensor<2,dim-1> > grad_grads(0);
134 values.resize (poly_space.n());
136 std::vector<double> (n_q_points));
137 for (
unsigned int i=0; i<n_q_points; ++i)
139 poly_space.compute(quadrature.
point(i),
140 values, grads, grad_grads);
142 for (
unsigned int k=0; k<poly_space.n(); ++k)
158 template <
class POLY,
int dim,
int spacedim>
165 return get_face_data (flags, mapping,
176 template <
class POLY,
int dim,
int spacedim>
185 CellSimilarity::Similarity &)
const
193 template <
class POLY,
int dim,
int spacedim>
198 const unsigned int face,
213 const unsigned int foffset = fe_data.
shape_values.size() * face;
215 for (
unsigned int i=0; i<quadrature.
size(); ++i)
217 for (
unsigned int k=0; k<this->dofs_per_cell; ++k)
219 for (
unsigned int k=0; k<fe_data.
shape_values.size(); ++k)
225 template <
class POLY,
int dim,
int spacedim>
230 const unsigned int face,
231 const unsigned int subface,
246 const unsigned int foffset = fe_data.
shape_values.size() * face;
247 const unsigned int offset = subface*quadrature.
size();
250 for (
unsigned int i=0; i<quadrature.
size(); ++i)
252 for (
unsigned int k=0; k<this->dofs_per_cell; ++k)
254 for (
unsigned int k=0; k<fe_data.
shape_values.size(); ++k)
262 DEAL_II_NAMESPACE_CLOSE
Transformed quadrature weights.
#define AssertDimension(dim1, dim2)
std::vector< std::vector< double > > shape_values
virtual void fill_fe_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const Quadrature< dim > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data, CellSimilarity::Similarity &cell_similarity) const
const Point< dim > & point(const unsigned int i) const
unsigned int get_degree() const
unsigned int size() const
#define Assert(cond, exc)
virtual UpdateFlags update_each(const UpdateFlags flags) const
Mapping< dim, spacedim >::InternalDataBase * get_face_data(const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &quadrature) const
virtual void fill_fe_subface_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int sub_no, const Quadrature< dim-1 > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data) const
FE_PolyFace(const POLY &poly_space, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags)
virtual Mapping< dim, spacedim >::InternalDataBase * get_data(const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature) const
Second derivatives of shape functions.
virtual void fill_fe_face_values(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const Quadrature< dim-1 > &quadrature, typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, typename Mapping< dim, spacedim >::InternalDataBase &fe_internal, FEValuesData< dim, spacedim > &data) const
virtual UpdateFlags update_once(const UpdateFlags flags) const
Mapping< dim, spacedim >::InternalDataBase * get_subface_data(const UpdateFlags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &quadrature) const
Shape function gradients.
::ExceptionBase & ExcNotImplemented()
::ExceptionBase & ExcInternalError()
Covariant transformation.