deal.II version GIT relicensing-6842-g793a97d2aa 2026-10-02 14:00:01+00:00
\(\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\}}\)
Loading...
Searching...
No Matches
fe_values_views_internal.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2023 - 2026 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_fe_values_views_internal_h
14#define dealii_fe_values_views_internal_h
15
16#include <deal.II/base/config.h>
17
20#include <deal.II/base/table.h>
21#include <deal.II/base/tensor.h>
22
24
25#include <vector>
26
28
29namespace FEValuesViews
30{
35 namespace internal
36 {
37 // Given values of degrees of freedom, evaluate the
38 // values/gradients/... at quadrature points
39
40 // ------------------------- scalar functions --------------------------
41
45 template <int dim, int spacedim, typename Number>
46 void
48 const ArrayView<const Number> &dof_values,
49 const Table<2, double> &shape_values,
50 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
51 &shape_function_data,
52 std::vector<typename ProductType<Number, double>::type> &values);
53
58 template <int order, int dim, int spacedim, typename Number>
59 void
61 const ArrayView<const Number> &dof_values,
62 const Table<2, ::Tensor<order, spacedim>> &shape_derivatives,
63 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
64 &shape_function_data,
65 std::vector<
66 typename ProductType<Number, ::Tensor<order, spacedim>>::type>
67 &derivatives);
68
72 template <int dim, int spacedim, typename Number>
73 void
75 const ArrayView<const Number> &dof_values,
76 const Table<2, ::Tensor<2, spacedim>> &shape_hessians,
77 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
78 &shape_function_data,
79 std::vector<typename Scalar<dim, spacedim>::
80 template solution_laplacian_type<Number>> &laplacians);
81
82 // ----------------------------- vector part ---------------------------
83
87 template <int dim, int spacedim, typename Number>
88 void
90 const ArrayView<const Number> &dof_values,
91 const Table<2, double> &shape_values,
92 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
93 &shape_function_data,
94 std::vector<
95 typename ProductType<Number, ::Tensor<1, spacedim>>::type>
96 &values);
97
102 template <int order, int dim, int spacedim, typename Number>
103 void
105 const ArrayView<const Number> &dof_values,
106 const Table<2, ::Tensor<order, spacedim>> &shape_derivatives,
107 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
108 &shape_function_data,
109 std::vector<
110 typename ProductType<Number, ::Tensor<order + 1, spacedim>>::type>
111 &derivatives);
112
116 template <int dim, int spacedim, typename Number>
117 void
119 const ArrayView<const Number> &dof_values,
120 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
121 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
122 &shape_function_data,
123 std::vector<
124 typename ProductType<Number,
126 &symmetric_gradients);
127
131 template <int dim, int spacedim, typename Number>
132 void
134 const ArrayView<const Number> &dof_values,
135 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
136 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
137 &shape_function_data,
138 std::vector<typename Vector<dim, spacedim>::
139 template solution_divergence_type<Number>> &divergences);
140
144 template <int dim, int spacedim, typename Number>
145 void
147 const ArrayView<const Number> &dof_values,
148 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
149 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
150 &shape_function_data,
151 std::vector<
152 typename ProductType<Number,
154 &curls);
155
159 template <int dim, int spacedim, typename Number>
160 void
162 const ArrayView<const Number> &dof_values,
163 const Table<2, ::Tensor<2, spacedim>> &shape_hessians,
164 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
165 &shape_function_data,
166 std::vector<typename Vector<dim, spacedim>::
167 template solution_laplacian_type<Number>> &laplacians);
168
169 // ---------------------- symmetric tensor part ------------------------
170
174 template <int dim, int spacedim, typename Number>
175 void
177 const ArrayView<const Number> &dof_values,
178 const ::Table<2, double> &shape_values,
179 const std::vector<
181 &shape_function_data,
182 std::vector<
183 typename ProductType<Number,
185 &values);
186
190 template <int dim, int spacedim, typename Number>
191 void
193 const ArrayView<const Number> &dof_values,
194 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
195 const std::vector<
197 &shape_function_data,
198 std::vector<typename SymmetricTensor<2, dim, spacedim>::
199 template solution_divergence_type<Number>> &divergences);
200
201 // ---------------------- non-symmetric tensor part ------------------------
202
206 template <int dim, int spacedim, typename Number>
207 void
209 const ArrayView<const Number> &dof_values,
210 const ::Table<2, double> &shape_values,
211 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
212 &shape_function_data,
213 std::vector<
214 typename ProductType<Number, ::Tensor<2, spacedim>>::type>
215 &values);
216
220 template <int dim, int spacedim, typename Number>
221 void
223 const ArrayView<const Number> &dof_values,
224 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
225 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
226 &shape_function_data,
227 std::vector<typename Tensor<2, dim, spacedim>::
228 template solution_divergence_type<Number>> &divergences);
229
233 template <int dim, int spacedim, typename Number>
234 void
236 const ArrayView<const Number> &dof_values,
237 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
238 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
239 &shape_function_data,
240 std::vector<typename Tensor<2, dim, spacedim>::
241 template solution_gradient_type<Number>> &gradients);
242 } // end of namespace internal
243} // namespace FEValuesViews
244
245
247
248#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
void do_function_divergences(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Vector< dim, spacedim >::template solution_divergence_type< Number > > &divergences)
void do_function_symmetric_gradients(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, ::SymmetricTensor< 2, spacedim > >::type > &symmetric_gradients)
void do_function_derivatives(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< order, spacedim > > &shape_derivatives, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, ::Tensor< order, spacedim > >::type > &derivatives)
void do_function_gradients(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Tensor< 2, dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Tensor< 2, dim, spacedim >::template solution_gradient_type< Number > > &gradients)
void do_function_values(const ArrayView< const Number > &dof_values, const Table< 2, double > &shape_values, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, double >::type > &values)
void do_function_curls(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 1, spacedim > > &shape_gradients, const std::vector< typename Vector< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename ProductType< Number, ::internal::CurlType< spacedim > >::type > &curls)
void do_function_laplacians(const ArrayView< const Number > &dof_values, const Table< 2, ::Tensor< 2, spacedim > > &shape_hessians, const std::vector< typename Scalar< dim, spacedim >::ShapeFunctionData > &shape_function_data, std::vector< typename Scalar< dim, spacedim >::template solution_laplacian_type< Number > > &laplacians)
std::conditional_t< dim==3, Tensor< 1, 3, NumberType >, std::conditional_t< dim==2, NumberType, std::monostate > > CurlType
typename internal::ProductTypeImpl< std::decay_t< T >, std::decay_t< U > >::type type