16 #ifndef dealii_fe_poly_face_h 17 #define dealii_fe_poly_face_h 20 #include <deal.II/base/qprojector.h> 21 #include <deal.II/base/std_cxx14/memory.h> 22 #include <deal.II/fe/fe.h> 25 DEAL_II_NAMESPACE_OPEN
55 template <
class PolynomialType,
int dim=PolynomialType::dimension+1,
int spacedim=dim>
85 std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
91 return std_cxx14::make_unique<InternalData>();
94 std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
102 auto data = std_cxx14::make_unique<InternalData>();
105 const unsigned int n_q_points = quadrature.
size();
108 std::vector<double> values(0);
109 std::vector<
Tensor<1,dim-1> > grads(0);
110 std::vector<
Tensor<2,dim-1> > grad_grads(0);
111 std::vector<
Tensor<3,dim-1> > empty_vector_of_3rd_order_tensors;
112 std::vector<
Tensor<4,dim-1> > empty_vector_of_4th_order_tensors;
121 std::vector<double> (n_q_points));
122 for (
unsigned int i=0; i<n_q_points; ++i)
125 values, grads, grad_grads,
126 empty_vector_of_3rd_order_tensors,
127 empty_vector_of_4th_order_tensors);
130 data->shape_values[k][i] = values[k];
140 return std::move(data);
143 std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
161 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
168 const unsigned int face_no,
172 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
179 const unsigned int face_no,
180 const unsigned int sub_no,
184 const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
222 DEAL_II_NAMESPACE_CLOSE
std::vector< std::vector< double > > shape_values
std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_face_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &, const Quadrature< dim-1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &) const
const Point< dim > & point(const unsigned int i) const
std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_subface_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim-1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const
#define Assert(cond, exc)
Abstract base class for mapping classes.
Second derivatives of shape functions.
PolynomialType poly_space
unsigned int size() const
unsigned int get_degree() const
Shape function gradients.
static ::ExceptionBase & ExcNotImplemented()
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_data(const UpdateFlags, const Mapping< dim, spacedim > &, const Quadrature< dim > &, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &) const
FE_PolyFace(const PolynomialType &poly_space, const FiniteElementData< dim > &fe_data, const std::vector< bool > &restriction_is_additive_flags)
const std::vector< bool > restriction_is_additive_flags