Reference documentation for deal.II version Git 67353a5f2d 2021-01-26 18:33:38 +0100
\(\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 - 2020 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 
215 template <int dim, int spacedim = dim>
216 class FESystem : public FiniteElement<dim, spacedim>
217 {
218 public:
250  const unsigned int n_elements);
251 
259  const unsigned int n1,
260  const FiniteElement<dim, spacedim> &fe2,
261  const unsigned int n2);
262 
270  const unsigned int n1,
271  const FiniteElement<dim, spacedim> &fe2,
272  const unsigned int n2,
273  const FiniteElement<dim, spacedim> &fe3,
274  const unsigned int n3);
275 
283  const unsigned int n1,
284  const FiniteElement<dim, spacedim> &fe2,
285  const unsigned int n2,
286  const FiniteElement<dim, spacedim> &fe3,
287  const unsigned int n3,
288  const FiniteElement<dim, spacedim> &fe4,
289  const unsigned int n4);
290 
298  const unsigned int n1,
299  const FiniteElement<dim, spacedim> &fe2,
300  const unsigned int n2,
301  const FiniteElement<dim, spacedim> &fe3,
302  const unsigned int n3,
303  const FiniteElement<dim, spacedim> &fe4,
304  const unsigned int n4,
305  const FiniteElement<dim, spacedim> &fe5,
306  const unsigned int n5);
307 
493  FESystem(const std::vector<const FiniteElement<dim, spacedim> *> &fes,
494  const std::vector<unsigned int> &multiplicities);
495 
496 # if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
497 
539  template <
540  class... FEPairs,
541  typename = typename enable_if_all<
542  (std::is_same<typename std::decay<FEPairs>::type,
543  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
544  unsigned int>>::value ||
545  std::is_base_of<FiniteElement<dim, spacedim>,
546  typename std::decay<FEPairs>::type>::value)...>::type>
547  FESystem(FEPairs &&... fe_pairs);
548 
561  FESystem(
562  const std::initializer_list<
563  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
564  &fe_systems);
565 # endif
566 
571  FESystem(const FESystem<dim, spacedim> &) = delete;
572 
576  FESystem(FESystem<dim, spacedim> &&other_fe_system) noexcept
577  : FiniteElement<dim, spacedim>(std::move(other_fe_system))
578  {
579  base_elements = std::move(other_fe_system.base_elements);
581  std::move(other_fe_system.generalized_support_points_index_table);
582  }
583 
587  virtual ~FESystem() override = default;
588 
597  virtual std::string
598  get_name() const override;
599 
600  virtual std::unique_ptr<FiniteElement<dim, spacedim>>
601  clone() const override;
602 
603  virtual UpdateFlags
604  requires_update_flags(const UpdateFlags update_flags) const override;
605 
606  // make variant with ComponentMask also available:
608 
612  virtual const FiniteElement<dim, spacedim> &
613  get_sub_fe(const unsigned int first_component,
614  const unsigned int n_selected_components) const override;
615 
628  virtual double
629  shape_value(const unsigned int i, const Point<dim> &p) const override;
630 
639  virtual double
640  shape_value_component(const unsigned int i,
641  const Point<dim> & p,
642  const unsigned int component) const override;
643 
658  virtual Tensor<1, dim>
659  shape_grad(const unsigned int i, const Point<dim> &p) const override;
660 
669  virtual Tensor<1, dim>
670  shape_grad_component(const unsigned int i,
671  const Point<dim> & p,
672  const unsigned int component) const override;
673 
688  virtual Tensor<2, dim>
689  shape_grad_grad(const unsigned int i, const Point<dim> &p) const override;
690 
699  virtual Tensor<2, dim>
700  shape_grad_grad_component(const unsigned int i,
701  const Point<dim> & p,
702  const unsigned int component) const override;
703 
718  virtual Tensor<3, dim>
719  shape_3rd_derivative(const unsigned int i,
720  const Point<dim> & p) const override;
721 
730  virtual Tensor<3, dim>
731  shape_3rd_derivative_component(const unsigned int i,
732  const Point<dim> & p,
733  const unsigned int component) const override;
734 
749  virtual Tensor<4, dim>
750  shape_4th_derivative(const unsigned int i,
751  const Point<dim> & p) const override;
752 
761  virtual Tensor<4, dim>
762  shape_4th_derivative_component(const unsigned int i,
763  const Point<dim> & p,
764  const unsigned int component) const override;
765 
777  virtual void
779  FullMatrix<double> &matrix) const override;
780 
787  virtual const FiniteElement<dim, spacedim> &
788  base_element(const unsigned int index) const override;
789 
794  virtual bool
795  has_support_on_face(const unsigned int shape_index,
796  const unsigned int face_index) const override;
797 
821  virtual const FullMatrix<double> &
823  const unsigned int child,
824  const RefinementCase<dim> &refinement_case =
826 
854  virtual const FullMatrix<double> &
856  const unsigned int child,
857  const RefinementCase<dim> &refinement_case =
859 
898  virtual unsigned int
899  face_to_cell_index(const unsigned int face_dof_index,
900  const unsigned int face,
901  const bool face_orientation = true,
902  const bool face_flip = false,
903  const bool face_rotation = false) const override;
904 
908  virtual Point<dim>
909  unit_support_point(const unsigned int index) const override;
910 
914  virtual Point<dim - 1>
915  unit_face_support_point(const unsigned int index,
916  const unsigned int face_no = 0) const override;
917 
925  virtual std::pair<Table<2, bool>, std::vector<unsigned int>>
926  get_constant_modes() const override;
927 
940  virtual bool
941  hp_constraints_are_implemented() const override;
942 
955  virtual void
957  FullMatrix<double> & matrix,
958  const unsigned int face_no = 0) const override;
959 
960 
973  virtual void
975  const FiniteElement<dim, spacedim> &source,
976  const unsigned int subface,
977  FullMatrix<double> & matrix,
978  const unsigned int face_no = 0) const override;
979 
995  virtual std::vector<std::pair<unsigned int, unsigned int>>
997  const FiniteElement<dim, spacedim> &fe_other) const override;
998 
1003  virtual std::vector<std::pair<unsigned int, unsigned int>>
1005  const FiniteElement<dim, spacedim> &fe_other) const override;
1006 
1011  virtual std::vector<std::pair<unsigned int, unsigned int>>
1013  const unsigned int face_no = 0) const override;
1014 
1020  const unsigned int codim = 0) const override final;
1021 
1023 
1038  virtual void
1040  const std::vector<Vector<double>> &support_point_values,
1041  std::vector<double> & dof_values) const override;
1042 
1051  virtual std::size_t
1052  memory_consumption() const override;
1053 
1054 protected:
1055  virtual std::unique_ptr<
1057  get_data(
1058  const UpdateFlags update_flags,
1059  const Mapping<dim, spacedim> &mapping,
1060  const Quadrature<dim> & quadrature,
1062  spacedim>
1063  &output_data) const override;
1064 
1066 
1067  virtual std::unique_ptr<
1069  get_face_data(
1070  const UpdateFlags update_flags,
1071  const Mapping<dim, spacedim> & mapping,
1072  const hp::QCollection<dim - 1> &quadrature,
1074  spacedim>
1075  &output_data) const override;
1076 
1077  virtual std::unique_ptr<
1080  const UpdateFlags update_flags,
1081  const Mapping<dim, spacedim> &mapping,
1082  const Quadrature<dim - 1> & quadrature,
1084  spacedim>
1085  &output_data) const override;
1086 
1087  virtual void
1089  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1090  const CellSimilarity::Similarity cell_similarity,
1091  const Quadrature<dim> & quadrature,
1092  const Mapping<dim, spacedim> & mapping,
1093  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1094  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1095  spacedim>
1096  & mapping_data,
1097  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1099  spacedim>
1100  &output_data) const override;
1101 
1103 
1104  virtual void
1106  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1107  const unsigned int face_no,
1108  const hp::QCollection<dim - 1> & quadrature,
1109  const Mapping<dim, spacedim> & mapping,
1110  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1111  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1112  spacedim>
1113  & mapping_data,
1114  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1116  spacedim>
1117  &output_data) const override;
1118 
1119  virtual void
1121  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1122  const unsigned int face_no,
1123  const unsigned int sub_no,
1124  const Quadrature<dim - 1> & quadrature,
1125  const Mapping<dim, spacedim> & mapping,
1126  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1127  const ::internal::FEValuesImplementation::MappingRelatedData<dim,
1128  spacedim>
1129  & mapping_data,
1130  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_internal,
1132  spacedim>
1133  &output_data) const override;
1134 
1145  template <int dim_1>
1146  void
1147  compute_fill(
1148  const Mapping<dim, spacedim> & mapping,
1149  const typename Triangulation<dim, spacedim>::cell_iterator &cell,
1150  const unsigned int face_no,
1151  const unsigned int sub_no,
1152  const hp::QCollection<dim_1> & quadrature,
1153  const CellSimilarity::Similarity cell_similarity,
1154  const typename Mapping<dim, spacedim>::InternalDataBase &mapping_internal,
1155  const typename FiniteElement<dim, spacedim>::InternalDataBase &fe_data,
1157  &mapping_data,
1159  &output_data) const;
1160 
1161 private:
1166 
1174  std::vector<std::pair<std::unique_ptr<const FiniteElement<dim, spacedim>>,
1175  unsigned int>>
1177 
1190  std::vector<std::vector<std::size_t>> generalized_support_points_index_table;
1191 
1197  void
1198  initialize(const std::vector<const FiniteElement<dim, spacedim> *> &fes,
1199  const std::vector<unsigned int> &multiplicities);
1200 
1204  void
1206 
1212  template <int structdim>
1213  std::vector<std::pair<unsigned int, unsigned int>>
1215  const unsigned int face_no = 0) const;
1216 
1223  class InternalData : public FiniteElement<dim, spacedim>::InternalDataBase
1224  {
1225  public:
1230  InternalData(const unsigned int n_base_elements);
1231 
1236  ~InternalData() override;
1237 
1242  void
1243  set_fe_data(
1244  const unsigned int base_no,
1245  std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>);
1246 
1252  get_fe_data(const unsigned int base_no) const;
1253 
1260  get_fe_output_object(const unsigned int base_no) const;
1261 
1262  private:
1273  typename std::vector<
1274  std::unique_ptr<typename FiniteElement<dim, spacedim>::InternalDataBase>>
1276 
1285  mutable std::vector<
1288  };
1289 
1293  mutable std::mutex mutex;
1294 
1295  friend class FE_Enriched<dim, spacedim>;
1296 };
1297 
1298 //------------------------variadic template constructor------------------------
1299 
1300 # ifndef DOXYGEN
1301 namespace internal
1302 {
1303  namespace FESystemImplementation
1304  {
1305  template <int dim, int spacedim>
1306  unsigned int
1307  count_nonzeros(
1308  const std::initializer_list<
1309  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
1310  &fe_systems)
1311  {
1312  return std::count_if(
1313  fe_systems.begin(),
1314  fe_systems.end(),
1315  [](const std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1316  unsigned int> &fe_system) {
1317  return fe_system.second > 0;
1318  });
1319  }
1320 
1321 
1322 
1323  template <int dim, int spacedim>
1324  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>
1325  promote_to_fe_pair(const FiniteElement<dim, spacedim> &fe)
1326  {
1327  return std::make_pair(std::move(fe.clone()), 1u);
1328  }
1329 
1330 
1331 
1332  template <int dim, int spacedim>
1333  auto
1334  promote_to_fe_pair(std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1335  unsigned int> &&p)
1336  -> decltype(
1337  std::forward<std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1338  unsigned int>>(p))
1339  {
1340  return std::forward<
1341  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>(
1342  p);
1343  }
1344  } // namespace FESystemImplementation
1345 } // namespace internal
1346 
1347 
1348 
1349 # if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
1350 // We are just forwarding/delegating to the constructor taking a
1351 // std::initializer_list. If we decide to remove the deprecated constructors, we
1352 // might just use the variadic constructor with a suitable static_assert instead
1353 // of the std::enable_if.
1354 template <int dim, int spacedim>
1355 template <class... FEPairs, typename>
1356 FESystem<dim, spacedim>::FESystem(FEPairs &&... fe_pairs)
1357  : FESystem<dim, spacedim>(
1358  {internal::FESystemImplementation::promote_to_fe_pair<dim, spacedim>(
1359  std::forward<FEPairs>(fe_pairs))...})
1360 {}
1361 
1362 
1363 
1364 template <int dim, int spacedim>
1366  const std::initializer_list<
1367  std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>, unsigned int>>
1368  &fe_systems)
1369  : FiniteElement<dim, spacedim>(
1370  FETools::Compositing::multiply_dof_numbers<dim, spacedim>(fe_systems),
1372  spacedim>(
1373  fe_systems),
1374  FETools::Compositing::compute_nonzero_components<dim, spacedim>(
1375  fe_systems))
1376  , base_elements(internal::FESystemImplementation::count_nonzeros(fe_systems))
1377 {
1378  std::vector<const FiniteElement<dim, spacedim> *> fes;
1379  std::vector<unsigned int> multiplicities;
1380 
1381  const auto extract =
1382  [&fes, &multiplicities](
1383  const std::pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
1384  unsigned int> &fe_system) {
1385  fes.push_back(fe_system.first.get());
1386  multiplicities.push_back(fe_system.second);
1387  };
1388 
1389  for (const auto &p : fe_systems)
1390  extract(p);
1391 
1392  initialize(fes, multiplicities);
1393 }
1394 # endif
1395 
1396 # endif // DOXYGEN
1397 
1399 
1400 #endif
1401 /*---------------------------- fe_system.h ---------------------------*/
~InternalData() override
Definition: fe_system.cc:58
virtual std::size_t memory_consumption() const override
Definition: fe_system.cc:2604
virtual Point< dim > unit_support_point(const unsigned int index) const override
Definition: fe_system.cc:2389
std::vector< internal::FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > > base_fe_output_objects
Definition: fe_system.h:1287
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:1408
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:576
void initialize(const std::vector< const FiniteElement< dim, spacedim > *> &fes, const std::vector< unsigned int > &multiplicities)
Definition: fe_system.cc:1632
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:2295
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:2441
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:2174
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:2497
virtual bool has_support_on_face(const unsigned int shape_index, const unsigned int face_index) const override
Definition: fe_system.cc:2376
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:2305
virtual Point< dim - 1 > unit_face_support_point(const unsigned int index, const unsigned int face_no=0) const override
Definition: fe_system.cc:2410
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:2366
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
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 hp::QCollection< dim_1 > &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
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:2050
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:1190
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:1293
UpdateFlags
static const unsigned int invalid_face_number
Definition: fe_system.h:1165
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:380
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:1921
std::vector< std::unique_ptr< typename FiniteElement< dim, spacedim >::InternalDataBase > > base_fe_datas
Definition: fe_system.h:1275
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:2287
virtual FiniteElementDomination::Domination compare_for_domination(const FiniteElement< dim, spacedim > &fe_other, const unsigned int codim=0) const override final
Definition: fe_system.cc:2316
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
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:379
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:1934
FESystem(const FiniteElement< dim, spacedim > &fe, const unsigned int n_elements)
Definition: fe_system.cc:108
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:1176
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