Reference documentation for deal.II version 9.0.0
fe_dgp_nonparametric.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2002 - 2018 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_fe_dgp_nonparametric_h
17 #define dealii_fe_dgp_nonparametric_h
18 
19 #include <deal.II/base/config.h>
20 #include <deal.II/base/polynomial.h>
21 #include <deal.II/base/polynomial_space.h>
22 #include <deal.II/fe/fe.h>
23 #include <deal.II/fe/mapping.h>
24 
25 DEAL_II_NAMESPACE_OPEN
26 
29 
268 template <int dim, int spacedim=dim>
269 class FE_DGPNonparametric : public FiniteElement<dim,spacedim>
270 {
271 public:
275  FE_DGPNonparametric (const unsigned int k);
276 
282  virtual std::string get_name () const;
283 
284  virtual
285  std::unique_ptr<FiniteElement<dim,spacedim> >
286  clone() const;
287 
288  // for documentation, see the FiniteElement base class
289  virtual
291  requires_update_flags (const UpdateFlags update_flags) const;
292 
303  virtual double shape_value (const unsigned int i,
304  const Point<dim> &p) const;
305 
316  virtual double shape_value_component (const unsigned int i,
317  const Point<dim> &p,
318  const unsigned int component) const;
319 
330  virtual Tensor<1,dim> shape_grad (const unsigned int i,
331  const Point<dim> &p) const;
332 
343  virtual Tensor<1,dim> shape_grad_component (const unsigned int i,
344  const Point<dim> &p,
345  const unsigned int component) const;
346 
357  virtual Tensor<2,dim> shape_grad_grad (const unsigned int i,
358  const Point<dim> &p) const;
359 
370  virtual Tensor<2,dim> shape_grad_grad_component (const unsigned int i,
371  const Point<dim> &p,
372  const unsigned int component) const;
373 
378  unsigned int get_degree () const;
379 
391  virtual void
393  FullMatrix<double> &matrix) const;
394 
406  virtual void
408  const unsigned int subface,
409  FullMatrix<double> &matrix) const;
410 
434  virtual
435  std::vector<std::pair<unsigned int, unsigned int> >
437 
445  virtual
446  std::vector<std::pair<unsigned int, unsigned int> >
447  hp_line_dof_identities (const FiniteElement<dim,spacedim> &fe_other) const;
448 
456  virtual
457  std::vector<std::pair<unsigned int, unsigned int> >
458  hp_quad_dof_identities (const FiniteElement<dim,spacedim> &fe_other) const;
459 
468  virtual bool hp_constraints_are_implemented () const;
469 
479  virtual
482 
491  virtual bool has_support_on_face (const unsigned int shape_index,
492  const unsigned int face_index) const;
493 
502  virtual std::size_t memory_consumption () const;
503 
504 protected:
505 
510  virtual
511  std::unique_ptr<typename FiniteElement<dim,spacedim>::InternalDataBase>
512  get_data (const UpdateFlags update_flags,
513  const Mapping<dim,spacedim> &mapping,
514  const Quadrature<dim> &quadrature,
516 
517  virtual
518  void
519  fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
520  const CellSimilarity::Similarity cell_similarity,
521  const Quadrature<dim> &quadrature,
522  const Mapping<dim,spacedim> &mapping,
523  const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
524  const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
525  const typename FiniteElement<dim,spacedim>::InternalDataBase &fe_internal,
527 
528  virtual
529  void
530  fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
531  const unsigned int face_no,
532  const Quadrature<dim-1> &quadrature,
533  const Mapping<dim,spacedim> &mapping,
534  const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
535  const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
536  const typename FiniteElement<dim,spacedim>::InternalDataBase &fe_internal,
538 
539  virtual
540  void
541  fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
542  const unsigned int face_no,
543  const unsigned int sub_no,
544  const Quadrature<dim-1> &quadrature,
545  const Mapping<dim,spacedim> &mapping,
546  const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
547  const ::internal::FEValuesImplementation::MappingRelatedData<dim, spacedim> &mapping_data,
548  const typename FiniteElement<dim,spacedim>::InternalDataBase &fe_internal,
550 
551 private:
552 
559  static
560  std::vector<unsigned int>
561  get_dpo_vector (const unsigned int degree);
562 
567 
571  template <int, int> friend class FE_DGPNonparametric;
572 };
573 
576 DEAL_II_NAMESPACE_CLOSE
577 
578 #endif
virtual void get_face_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) const
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_vertex_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
virtual FiniteElementDomination::Domination compare_for_face_domination(const FiniteElement< dim, spacedim > &fe_other) const
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const
friend class FE_DGPNonparametric
virtual std::size_t memory_consumption() const
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const Quadrature< dim > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
const unsigned int degree
Definition: fe_base.h:311
const PolynomialSpace< dim > polynomial_space
virtual bool hp_constraints_are_implemented() const
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_line_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const
virtual double shape_value_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
unsigned int get_degree() const
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_quad_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const
UpdateFlags
Abstract base class for mapping classes.
Definition: dof_tools.h:46
virtual bool has_support_on_face(const unsigned int shape_index, const unsigned int face_index) const
virtual Tensor< 2, dim > shape_grad_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const
virtual Tensor< 1, dim > shape_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const
virtual double shape_value(const unsigned int i, const Point< dim > &p) const
static std::vector< unsigned int > get_dpo_vector(const unsigned int degree)
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const
virtual void get_subface_interpolation_matrix(const FiniteElement< dim, spacedim > &source, const unsigned int subface, FullMatrix< double > &matrix) const
virtual std::string get_name() const