Reference documentation for deal.II version Git d3aed38b93 2021-10-28 13:33:27 +0200
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
fe_system.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2021 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.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_fe_system_h
17 # define dealii_fe_system_h
18 
19 
20 /*---------------------------- fe_system.h ---------------------------*/
21 
22 
23 # include <deal.II/base/config.h>
24 
26 
27 # include <deal.II/fe/fe.h>
28 # include <deal.II/fe/fe_tools.h>
29 
30 # include <memory>
31 # include <type_traits>
32 # include <utility>
33 # include <vector>
34 
35 
37 
38 // Forward declaration
39 # ifndef DOXYGEN
40 template <int dim, int spacedim>
41 class FE_Enriched;
42 # endif
43 
214 template <int dim, int spacedim = dim>
215 class FESystem : public FiniteElement<dim, spacedim>
216 {
217 public:
222  FESystem() = delete;
223 
255  const unsigned int n_elements);
256 
264  const unsigned int n1,
265  const FiniteElement<dim, spacedim> &fe2,
266  const unsigned int n2);
267 
275  const unsigned int n1,
276  const FiniteElement<dim, spacedim> &fe2,
277  const unsigned int n2,
278  const FiniteElement<dim, spacedim> &fe3,
279  const unsigned int n3);
280 
288  const unsigned int n1,
289  const FiniteElement<dim, spacedim> &fe2,
290  const unsigned int n2,
291  const FiniteElement<dim, spacedim> &fe3,
292  const unsigned int n3,
293  const FiniteElement<dim, spacedim> &fe4,
294  const unsigned int n4);
295 
303  const unsigned int n1,
304  const FiniteElement<dim, spacedim> &fe2,
305  const unsigned int n2,
306  const FiniteElement<dim, spacedim> &fe3,
307  const unsigned int n3,
308  const FiniteElement<dim, spacedim> &fe4,
309  const unsigned int n4,
310  const FiniteElement<dim, spacedim> &fe5,
311  const unsigned int n5);
312 
498  FESystem(const std::vector<const FiniteElement<dim, spacedim> *> &fes,
499  const std::vector<unsigned int> &multiplicities);
500 
501 # if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
502 
544  template <
545  class... FEPairs,
546  typename = typename enable_if_all<
547  (std::is_same<typename std::decay<FEPairs>::type,
548  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
549  unsigned int>>::value ||
550  std::is_base_of<FiniteElement<dim, spacedim>,
551  typename std::decay<FEPairs>::type>::value)...>::type>
552  FESystem(FEPairs &&...fe_pairs);
553 
566  FESystem(
567  const std::initializer_list<
568  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
569  &fe_systems);
570 # endif
571 
576  FESystem(const FESystem<dim, spacedim> &) = delete;
577 
581  FESystem(FESystem<dim, spacedim> &&other_fe_system) noexcept
582  : FiniteElement<dim, spacedim>(std::move(other_fe_system))
583  {
584  base_elements = std::move(other_fe_system.base_elements);
586  std::move(other_fe_system.generalized_support_points_index_table);
587  }
588 
592  virtual ~FESystem() override = default;
593 
602  virtual std::string
603  get_name() const override;
604 
605  virtual std::unique_ptr<FiniteElement<dim, spacedim>>
606  clone() const override;
607 
608  virtual UpdateFlags
609  requires_update_flags(const UpdateFlags update_flags) const override;
610 
611  // make variant with ComponentMask also available:
613 
617  virtual const FiniteElement<dim, spacedim> &
618  get_sub_fe(const unsigned int first_component,
619  const unsigned int n_selected_components) const override;
620 
633  virtual double
634  shape_value(const unsigned int i, const Point<dim> &p) const override;
635 
644  virtual double
645  shape_value_component(const unsigned int i,
646  const Point<dim> & p,
647  const unsigned int component) const override;
648 
663  virtual Tensor<1, dim>
664  shape_grad(const unsigned int i, const Point<dim> &p) const override;
665 
674  virtual Tensor<1, dim>
675  shape_grad_component(const unsigned int i,
676  const Point<dim> & p,
677  const unsigned int component) const override;
678 
693  virtual Tensor<2, dim>
694  shape_grad_grad(const unsigned int i, const Point<dim> &p) const override;
695 
704  virtual Tensor<2, dim>
705  shape_grad_grad_component(const unsigned int i,
706  const Point<dim> & p,
707  const unsigned int component) const override;
708 
723  virtual Tensor<3, dim>
724  shape_3rd_derivative(const unsigned int i,
725  const Point<dim> & p) const override;
726 
735  virtual Tensor<3, dim>
736  shape_3rd_derivative_component(const unsigned int i,
737  const Point<dim> & p,
738  const unsigned int component) const override;
739 
754  virtual Tensor<4, dim>
755  shape_4th_derivative(const unsigned int i,
756  const Point<dim> & p) const override;
757 
766  virtual Tensor<4, dim>
767  shape_4th_derivative_component(const unsigned int i,
768  const Point<dim> & p,
769  const unsigned int component) const override;
770 
782  virtual void
784  FullMatrix<double> &matrix) const override;
785 
792  virtual const FiniteElement<dim, spacedim> &
793  base_element(const unsigned int index) const override;
794 
799  virtual bool
800  has_support_on_face(const unsigned int shape_index,
801  const unsigned int face_index) const override;
802 
826  virtual const FullMatrix<double> &
828  const unsigned int child,
829  const RefinementCase<dim> &refinement_case =
831 
859  virtual const FullMatrix<double> &
861  const unsigned int child,
862  const RefinementCase<dim> &refinement_case =
864 
903  virtual unsigned int
904  face_to_cell_index(const unsigned int face_dof_index,
905  const unsigned int face,
906  const bool face_orientation = true,
907  const bool face_flip = false,
908  const bool face_rotation = false) const override;
909 
913  virtual Point<dim>
914  unit_support_point(const unsigned int index) const override;
915 
919  virtual Point<dim - 1>
920  unit_face_support_point(const unsigned int index,
921  const unsigned int face_no = 0) const override;
922 
930  virtual std::pair<Table<2, bool>, std::vector<unsigned int>>
931  get_constant_modes() const override;
932 
945  virtual bool
946  hp_constraints_are_implemented() const override;
947 
960  virtual void
962  FullMatrix<double> & matrix,
963  const unsigned int face_no = 0) const override;
964 
965 
978  virtual void
980  const FiniteElement<dim, spacedim> &source,
981  const unsigned int subface,
982  FullMatrix<double> & matrix,
983  const unsigned int face_no = 0) const override;
984 
1000  virtual std::vector<std::pair<unsigned int, unsigned int>>
1002  const FiniteElement<dim, spacedim> &fe_other) const override;
1003 
1008  virtual std::vector<std::pair<unsigned int, unsigned int>>
1010  const FiniteElement<dim, spacedim> &fe_other) const override;
1011 
1016  virtual std::vector<std::pair<unsigned int, unsigned int>>
1018  const unsigned int face_no = 0) const override;
1019 
1025  const unsigned int codim = 0) const override final;
1026 
1028 
1043  virtual void
1045  const std::vector<Vector<double>> &support_point_values,
1046  std::vector<double> & dof_values) const override;
1047 
1056  virtual std::size_t
1057  memory_consumption() const override;
1058 
1059 protected:
1060  virtual std::unique_ptr<
1062  get_data(
1063  const UpdateFlags update_flags,
1064  const Mapping<dim, spacedim> &mapping,
1065  const Quadrature<dim> & quadrature,
1067  spacedim>
1068  &output_data) const override;
1069 
1071 
1072  virtual std::unique_ptr<
1074  get_face_data(
1075  const UpdateFlags update_flags,
1076  const Mapping<dim, spacedim> & mapping,
1077  const hp::QCollection<dim - 1> &quadrature,
1079  spacedim>
1080  &output_data) const override;
1081 
1082  virtual std::unique_ptr<
1085  const UpdateFlags update_flags,
1086  const Mapping<dim, spacedim> &mapping,
1087  const Quadrature<dim - 1> & quadrature,
1089  spacedim>
1090  &output_data) const override;
1091 
1092  virtual void
1094  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1095  const CellSimilarity::Similarity cell_similarity,
1096  const Quadrature<dim> & quadrature,
1097  const Mapping<dim, spacedim> & mapping,
1098  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1099  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1100  spacedim>
1101  & mapping_data,
1102  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1104  spacedim>
1105  &output_data) const override;
1106 
1108 
1109  virtual void
1111  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1112  const unsigned int face_no,
1113  const hp::QCollection<dim - 1> & quadrature,
1114  const Mapping<dim, spacedim> & mapping,
1115  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1116  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1117  spacedim>
1118  & mapping_data,
1119  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1121  spacedim>
1122  &output_data) const override;
1123 
1124  virtual void
1126  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1127  const unsigned int face_no,
1128  const unsigned int sub_no,
1129  const Quadrature<dim - 1> & quadrature,
1130  const Mapping<dim, spacedim> & mapping,
1131  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1132  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1133  spacedim>
1134  & mapping_data,
1135  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1137  spacedim>
1138  &output_data) const override;
1139 
1150  template <class Q_or_QC>
1151  void
1152  compute_fill(
1153  const Mapping<dim, spacedim> & mapping,
1154  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1155  const unsigned int face_no,
1156  const unsigned int sub_no,
1157  const Q_or_QC & quadrature,
1158  const CellSimilarity::Similarity cell_similarity,
1159  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1160  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_data,
1162  &mapping_data,
1164  &output_data) const;
1165 
1166 private:
1171 
1179  std::vector<std::pair<std::unique_ptr<const FiniteElement<dim, spacedim>>,
1180  unsigned int>>
1182 
1195  std::vector<std::vector<std::size_t>> generalized_support_points_index_table;
1196 
1202  void
1203  initialize(const std::vector<const FiniteElement<dim, spacedim> *> &fes,
1204  const std::vector<unsigned int> &multiplicities);
1205 
1209  void
1211 
1217  template <int structdim>
1218  std::vector<std::pair<unsigned int, unsigned int>>
1220  const unsigned int face_no = 0) const;
1221 
1228  class InternalData : public FiniteElement<dim, spacedim>::InternalDataBase
1229  {
1230  public:
1235  InternalData(const unsigned int n_base_elements);
1236 
1241  ~InternalData() override;
1242 
1247  void
1248  set_fe_data(
1249  const unsigned int base_no,
1250  std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>);
1251 
1257  get_fe_data(const unsigned int base_no) const;
1258 
1265  get_fe_output_object(const unsigned int base_no) const;
1266 
1267  private:
1278  typename std::vector<
1279  std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>>
1281 
1290  mutable std::vector<
1293  };
1294 
1298  mutable std::mutex mutex;
1299 
1300  friend class FE_Enriched<dim, spacedim>;
1301 };
1302 
1303 //------------------------variadic template constructor------------------------
1304 
1305 # ifndef DOXYGEN
1306 namespace internal
1307 {
1308  namespace FESystemImplementation
1309  {
1310  template <int dim, int spacedim>
1311  unsigned int
1312  count_nonzeros(
1313  const std::initializer_list<
1314  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
1315  &fe_systems)
1316  {
1317  return std::count_if(
1318  fe_systems.begin(),
1319  fe_systems.end(),
1320  [](const std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1321  unsigned int> &fe_system) {
1322  return fe_system.second > 0;
1323  });
1324  }
1325 
1326 
1327 
1328  template <int dim, int spacedim>
1329  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>
1330  promote_to_fe_pair(const FiniteElement<dim, spacedim> &fe)
1331  {
1332  return std::make_pair(std::move(fe.clone()), 1u);
1333  }
1334 
1335 
1336 
1337  template <int dim, int spacedim>
1338  auto
1339  promote_to_fe_pair(std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1340  unsigned int> &&p)
1341  -> decltype(
1342  std::forward<std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1343  unsigned int>>(p))
1344  {
1345  return std::forward<
1346  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>(
1347  p);
1348  }
1349  } // namespace FESystemImplementation
1350 } // namespace internal
1351 
1352 
1353 
1354 # if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
1355 // We are just forwarding/delegating to the constructor taking a
1356 // std::initializer_list. If we decide to remove the deprecated constructors, we
1357 // might just use the variadic constructor with a suitable static_assert instead
1358 // of the std::enable_if.
1359 template <int dim, int spacedim>
1360 template <class... FEPairs, typename>
1361 FESystem<dim, spacedim>::FESystem(FEPairs &&...fe_pairs)
1362  : FESystem<dim, spacedim>(
1363  {internal::FESystemImplementation::promote_to_fe_pair<dim, spacedim>(
1364  std::forward<FEPairs>(fe_pairs))...})
1365 {}
1366 
1367 
1368 
1369 template <int dim, int spacedim>
1371  const std::initializer_list<
1372  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
1373  &fe_systems)
1374  : FiniteElement<dim, spacedim>(
1375  FETools::Compositing::multiply_dof_numbers<dim, spacedim>(fe_systems),
1377  spacedim>(
1378  fe_systems),
1379  FETools::Compositing::compute_nonzero_components<dim, spacedim>(
1380  fe_systems))
1381  , base_elements(internal::FESystemImplementation::count_nonzeros(fe_systems))
1382 {
1383  std::vector<const FiniteElement<dim, spacedim> *> fes;
1384  std::vector<unsigned int> multiplicities;
1385 
1386  const auto extract =
1387  [&fes, &multiplicities](
1388  const std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1389  unsigned int> &fe_system) {
1390  fes.push_back(fe_system.first.get());
1391  multiplicities.push_back(fe_system.second);
1392  };
1393 
1394  for (const auto &p : fe_systems)
1395  extract(p);
1396 
1397  initialize(fes, multiplicities);
1398 }
1399 # endif
1400 
1401 # endif // DOXYGEN
1402 
1404 
1405 #endif
1406 /*---------------------------- fe_system.h ---------------------------*/
~InternalData() override
Definition: fe_system.cc:58
virtual std::size_t memory_consumption() const override
Definition: fe_system.cc:2601
virtual Point< dim > unit_support_point(const unsigned int index) const override
Definition: fe_system.cc:2386
std::vector< internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > > base_fe_output_objects
Definition: fe_system.h:1292
static const unsigned int invalid_unsigned_int
Definition: types.h:196
virtual double shape_value_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
Definition: fe_system.cc:401
void build_interface_constraints()
Definition: fe_system.cc:1405
FiniteElementData< dim > multiply_dof_numbers(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities, const bool do_tensor_product=true)
FESystem(FESystem< dim, spacedim > &&other_fe_system) noexcept
Definition: fe_system.h:581
void initialize(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities)
Definition: fe_system.cc:1629
virtual std::string get_name() const override
Definition: fe_system.cc:310
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_line_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const override
Definition: fe_system.cc:2292
Contents is actually a matrix.
virtual Tensor< 4, dim > shape_4th_derivative(const unsigned int i, const Point< dim > &p) const override
Definition: fe_system.cc:572
virtual std::pair< Table< 2, bool >, std::vector< unsigned int > > get_constant_modes() const override
Definition: fe_system.cc:2438
virtual ~FESystem() override=default
std::vector< std::pair< unsigned int, unsigned int > > hp_object_dof_identities(const FiniteElement< dim, spacedim > &fe_other, const unsigned int face_no=0) const
Definition: fe_system.cc:2171
virtual void convert_generalized_support_point_values_to_dof_values(const std::vector< Vector< double >> &support_point_values, std::vector< double > &dof_values) const override
Definition: fe_system.cc:2494
virtual bool has_support_on_face(const unsigned int shape_index, const unsigned int face_index) const override
Definition: fe_system.cc:2373
virtual std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > get_face_data(const UpdateFlags update_flags, const Mapping< dim, spacedim > &mapping, const hp::QCollection< dim - 1 > &quadrature, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
Definition: fe_system.cc:973
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_quad_dof_identities(const FiniteElement< dim, spacedim > &fe_other, const unsigned int face_no=0) const override
Definition: fe_system.cc:2302
virtual Point< dim - 1 > unit_face_support_point(const unsigned int index, const unsigned int face_no=0) const override
Definition: fe_system.cc:2407
virtual Tensor< 1, dim > shape_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
Definition: fe_system.cc:453
virtual const FiniteElement< dim, spacedim > & base_element(const unsigned int index) const override
Definition: fe_system.cc:2363
std::vector< bool > compute_restriction_is_additive_flags(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities)
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const =0
virtual double shape_value(const unsigned int i, const Point< dim > &p) const override
Definition: fe_system.cc:385
virtual unsigned int face_to_cell_index(const unsigned int face_dof_index, const unsigned int face, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false) const override
Definition: fe_system.cc:851
virtual const FiniteElement< dim, spacedim > & get_sub_fe(const unsigned int first_component, const unsigned int n_selected_components) const override
Definition: fe_system.cc:356
virtual Tensor< 4, dim > shape_4th_derivative_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
Definition: fe_system.cc:588
InternalData(const unsigned int n_base_elements)
Definition: fe_system.cc:49
virtual void get_subface_interpolation_matrix(const FiniteElement< dim, spacedim > &source, const unsigned int subface, FullMatrix< double > &matrix, const unsigned int face_no=0) const override
Definition: fe_system.cc:2047
virtual Tensor< 3, dim > shape_3rd_derivative(const unsigned int i, const Point< dim > &p) const override
Definition: fe_system.cc:527
std::vector< std::vector< std::size_t > > generalized_support_points_index_table
Definition: fe_system.h:1195
virtual std::unique_ptr< FiniteElement< dim, spacedim > > clone() const override
Definition: fe_system.cc:339
virtual UpdateFlags requires_update_flags(const UpdateFlags update_flags) const override
Definition: fe_system.cc:896
virtual void fill_fe_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const CellSimilarity::Similarity cell_similarity, const Quadrature< dim > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const ::internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
Definition: fe_system.cc:1097
constexpr ReturnType< rank, T >::value_type & extract(T &t, const ArrayType &indices)
std::mutex mutex
Definition: fe_system.h:1298
UpdateFlags
static const unsigned int invalid_face_number
Definition: fe_system.h:1170
virtual const FullMatrix< double > & get_prolongation_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const override
Definition: fe_system.cc:785
Abstract base class for mapping classes.
Definition: mapping.h:303
Definition: fe.h:44
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:401
void set_fe_data(const unsigned int base_no, std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase >)
Definition: fe_system.cc:79
virtual 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 override
Definition: fe_system.cc:1036
virtual Tensor< 2, dim > shape_grad_grad(const unsigned int i, const Point< dim > &p) const override
Definition: fe_system.cc:482
virtual void fill_fe_face_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const hp::QCollection< dim - 1 > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const ::internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
Definition: fe_system.cc:1127
virtual bool hp_constraints_are_implemented() const override
Definition: fe_system.cc:1918
std::vector< std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > > base_fe_datas
Definition: fe_system.h:1280
virtual std::vector< std::pair< unsigned int, unsigned int > > hp_vertex_dof_identities(const FiniteElement< dim, spacedim > &fe_other) const override
Definition: fe_system.cc:2284
virtual FiniteElementDomination::Domination compare_for_domination(const FiniteElement< dim, spacedim > &fe_other, const unsigned int codim=0) const override final
Definition: fe_system.cc:2313
virtual Tensor< 3, dim > shape_3rd_derivative_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
Definition: fe_system.cc:543
virtual void get_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix) const override
Definition: fe_system.cc:617
void compute_fill(const Mapping< dim, spacedim > &mapping, const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int sub_no, const Q_or_QC &quadrature, const CellSimilarity::Similarity cell_similarity, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_data, const internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const
Definition: fe_system.cc:1189
FiniteElement< dim, spacedim >::InternalDataBase & get_fe_data(const unsigned int base_no) const
Definition: fe_system.cc:68
virtual const FullMatrix< double > & get_restriction_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const override
Definition: fe_system.cc:694
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:400
std::vector< ComponentMask > compute_nonzero_components(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities, const bool do_tensor_product=true)
virtual void get_face_interpolation_matrix(const FiniteElement< dim, spacedim > &source, FullMatrix< double > &matrix, const unsigned int face_no=0) const override
Definition: fe_system.cc:1931
internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & get_fe_output_object(const unsigned int base_no) const
Definition: fe_system.cc:91
virtual Tensor< 1, dim > shape_grad(const unsigned int i, const Point< dim > &p) const override
Definition: fe_system.cc:437
virtual Tensor< 2, dim > shape_grad_grad_component(const unsigned int i, const Point< dim > &p, const unsigned int component) const override
Definition: fe_system.cc:498
unsigned int n_base_elements() const
Definition: fe.h:3114
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 override
Definition: fe_system.cc:910
std::vector< std::pair< std::unique_ptr< const FiniteElement< dim, spacedim > >, unsigned int > > base_elements
Definition: fe_system.h:1181
virtual void fill_fe_subface_values(const typename Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int sub_no, const Quadrature< dim - 1 > &quadrature, const Mapping< dim, spacedim > &mapping, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_internal, const ::internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &mapping_data, const typename FiniteElement< dim, spacedim >::InternalDataBase &fe_internal, ::internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) const override
Definition: fe_system.cc:1157
FESystem()=delete