Reference documentation for deal.II version 9.1.1
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
shape_info.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2011 - 2019 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 
17 #ifndef dealii_matrix_free_shape_info_h
18 #define dealii_matrix_free_shape_info_h
19 
20 
21 #include <deal.II/base/aligned_vector.h>
22 #include <deal.II/base/exceptions.h>
23 #include <deal.II/base/quadrature_lib.h>
24 
25 #include <deal.II/fe/fe.h>
26 
27 
28 DEAL_II_NAMESPACE_OPEN
29 
30 namespace internal
31 {
32  namespace MatrixFreeFunctions
33  {
51  {
61 
68 
75 
80 
86 
93  };
94 
105  template <typename Number>
106  struct ShapeInfo
107  {
111  ShapeInfo();
112 
116  template <int dim>
117  ShapeInfo(const Quadrature<1> & quad,
118  const FiniteElement<dim> &fe,
119  const unsigned int base_element = 0);
120 
129  template <int dim>
130  void
131  reinit(const Quadrature<1> & quad,
132  const FiniteElement<dim> &fe_dim,
133  const unsigned int base_element = 0);
134 
138  std::size_t
139  memory_consumption() const;
140 
147 
156 
165 
174 
181 
188 
195 
202 
209 
216 
222 
228 
234 
242  std::vector<unsigned int> lexicographic_numbering;
243 
247  unsigned int fe_degree;
248 
252  unsigned int n_q_points_1d;
253 
258  unsigned int n_q_points;
259 
265 
269  unsigned int n_q_points_face;
270 
275 
281 
318 
358 
363  bool
364  check_1d_shapes_symmetric(const unsigned int n_q_points_1d);
365 
372  bool
374  };
375 
376 
377 
378  // ------------------------------------------ inline functions
379 
380  template <typename Number>
381  template <int dim>
383  const FiniteElement<dim> &fe_in,
384  const unsigned int base_element_number)
385  : element_type(tensor_general)
386  , fe_degree(0)
387  , n_q_points_1d(0)
388  , n_q_points(0)
389  , dofs_per_component_on_cell(0)
390  , n_q_points_face(0)
391  , dofs_per_component_on_face(0)
392  , nodal_at_cell_boundaries(false)
393  {
394  reinit(quad, fe_in, base_element_number);
395  }
396 
397  } // end of namespace MatrixFreeFunctions
398 
399 } // end of namespace internal
400 
401 DEAL_II_NAMESPACE_CLOSE
402 
403 #endif
internal::MatrixFreeFunctions::ShapeInfo::memory_consumption
std::size_t memory_consumption() const
internal::MatrixFreeFunctions::ShapeInfo::element_type
ElementType element_type
Definition: shape_info.h:146
internal::MatrixFreeFunctions::ShapeInfo::ShapeInfo
ShapeInfo()
internal::MatrixFreeFunctions::ShapeInfo::shape_hessians_collocation_eo
AlignedVector< Number > shape_hessians_collocation_eo
Definition: shape_info.h:208
internal::MatrixFreeFunctions::ShapeInfo::fe_degree
unsigned int fe_degree
Definition: shape_info.h:247
internal::MatrixFreeFunctions::ShapeInfo::check_1d_shapes_collocation
bool check_1d_shapes_collocation()
internal::MatrixFreeFunctions::ShapeInfo::n_q_points
unsigned int n_q_points
Definition: shape_info.h:258
internal::MatrixFreeFunctions::ShapeInfo
Definition: shape_info.h:106
internal::MatrixFreeFunctions::ShapeInfo::face_to_cell_index_nodal
::Table< 2, unsigned int > face_to_cell_index_nodal
Definition: shape_info.h:317
internal::MatrixFreeFunctions::tensor_symmetric
Definition: shape_info.h:74
internal::MatrixFreeFunctions::truncated_tensor
Definition: shape_info.h:85
internal::MatrixFreeFunctions::ShapeInfo::shape_gradients_collocation_eo
AlignedVector< Number > shape_gradients_collocation_eo
Definition: shape_info.h:201
internal::MatrixFreeFunctions::ShapeInfo::lexicographic_numbering
std::vector< unsigned int > lexicographic_numbering
Definition: shape_info.h:242
Table< 2, unsigned int >
internal::MatrixFreeFunctions::ElementType
ElementType
Definition: shape_info.h:50
internal::MatrixFreeFunctions::ShapeInfo::n_q_points_face
unsigned int n_q_points_face
Definition: shape_info.h:269
internal::MatrixFreeFunctions::ShapeInfo::shape_values
AlignedVector< Number > shape_values
Definition: shape_info.h:155
internal::MatrixFreeFunctions::ShapeInfo::check_1d_shapes_symmetric
bool check_1d_shapes_symmetric(const unsigned int n_q_points_1d)
internal::MatrixFreeFunctions::ShapeInfo::nodal_at_cell_boundaries
bool nodal_at_cell_boundaries
Definition: shape_info.h:280
AlignedVector< Number >
internal::MatrixFreeFunctions::ShapeInfo::dofs_per_component_on_face
unsigned int dofs_per_component_on_face
Definition: shape_info.h:274
internal::MatrixFreeFunctions::ShapeInfo::n_q_points_1d
unsigned int n_q_points_1d
Definition: shape_info.h:252
internal::MatrixFreeFunctions::tensor_general
Definition: shape_info.h:79
internal::MatrixFreeFunctions::tensor_symmetric_hermite
Definition: shape_info.h:67
internal::MatrixFreeFunctions::ShapeInfo::shape_values_eo
AlignedVector< Number > shape_values_eo
Definition: shape_info.h:180
FiniteElement< dim >
internal::MatrixFreeFunctions::ShapeInfo::hessians_within_subface
AlignedVector< Number > hessians_within_subface[2]
Definition: shape_info.h:233
internal::MatrixFreeFunctions::ShapeInfo::reinit
void reinit(const Quadrature< 1 > &quad, const FiniteElement< dim > &fe_dim, const unsigned int base_element=0)
internal::MatrixFreeFunctions::ShapeInfo::shape_gradients_eo
AlignedVector< Number > shape_gradients_eo
Definition: shape_info.h:187
internal::MatrixFreeFunctions::tensor_symmetric_collocation
Definition: shape_info.h:60
internal::MatrixFreeFunctions::ShapeInfo::values_within_subface
AlignedVector< Number > values_within_subface[2]
Definition: shape_info.h:221
internal::MatrixFreeFunctions::ShapeInfo::gradients_within_subface
AlignedVector< Number > gradients_within_subface[2]
Definition: shape_info.h:227
internal::MatrixFreeFunctions::ShapeInfo::shape_data_on_face
AlignedVector< Number > shape_data_on_face[2]
Definition: shape_info.h:215
internal::MatrixFreeFunctions::ShapeInfo::face_to_cell_index_hermite
::Table< 2, unsigned int > face_to_cell_index_hermite
Definition: shape_info.h:357
internal
Definition: aligned_vector.h:357
Quadrature< 1 >
internal::MatrixFreeFunctions::ShapeInfo::dofs_per_component_on_cell
unsigned int dofs_per_component_on_cell
Definition: shape_info.h:264
internal::MatrixFreeFunctions::tensor_symmetric_plus_dg0
Definition: shape_info.h:92
internal::MatrixFreeFunctions::ShapeInfo::shape_hessians
AlignedVector< Number > shape_hessians
Definition: shape_info.h:173
internal::MatrixFreeFunctions::ShapeInfo::shape_hessians_eo
AlignedVector< Number > shape_hessians_eo
Definition: shape_info.h:194
internal::MatrixFreeFunctions::ShapeInfo::shape_gradients
AlignedVector< Number > shape_gradients
Definition: shape_info.h:164