deal.II version GIT relicensing-2289-g1e5549a87a 2024-12-21 21:30:00+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: LGPL-2.1-or-later
4// Copyright (C) 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15#ifndef dealii_fe_values_views_internal_h
16#define dealii_fe_values_views_internal_h
17
18#include <deal.II/base/config.h>
19
22#include <deal.II/base/table.h>
23#include <deal.II/base/tensor.h>
24
26
27#include <vector>
28
30
31namespace FEValuesViews
32{
37 namespace internal
38 {
39 // Given values of degrees of freedom, evaluate the
40 // values/gradients/... at quadrature points
41
42 // ------------------------- scalar functions --------------------------
43
47 template <int dim, int spacedim, typename Number>
48 void
50 const ArrayView<const Number> &dof_values,
51 const Table<2, double> &shape_values,
52 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
53 &shape_function_data,
54 std::vector<typename ProductType<Number, double>::type> &values);
55
60 template <int order, int dim, int spacedim, typename Number>
61 void
63 const ArrayView<const Number> &dof_values,
64 const Table<2, ::Tensor<order, spacedim>> &shape_derivatives,
65 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
66 &shape_function_data,
67 std::vector<
68 typename ProductType<Number, ::Tensor<order, spacedim>>::type>
69 &derivatives);
70
74 template <int dim, int spacedim, typename Number>
75 void
77 const ArrayView<const Number> &dof_values,
78 const Table<2, ::Tensor<2, spacedim>> &shape_hessians,
79 const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
80 &shape_function_data,
81 std::vector<typename Scalar<dim, spacedim>::
82 template solution_laplacian_type<Number>> &laplacians);
83
84 // ----------------------------- vector part ---------------------------
85
89 template <int dim, int spacedim, typename Number>
90 void
92 const ArrayView<const Number> &dof_values,
93 const Table<2, double> &shape_values,
94 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
95 &shape_function_data,
96 std::vector<
97 typename ProductType<Number, ::Tensor<1, spacedim>>::type>
98 &values);
99
104 template <int order, int dim, int spacedim, typename Number>
105 void
107 const ArrayView<const Number> &dof_values,
108 const Table<2, ::Tensor<order, spacedim>> &shape_derivatives,
109 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
110 &shape_function_data,
111 std::vector<
112 typename ProductType<Number, ::Tensor<order + 1, spacedim>>::type>
113 &derivatives);
114
118 template <int dim, int spacedim, typename Number>
119 void
121 const ArrayView<const Number> &dof_values,
122 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
123 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
124 &shape_function_data,
125 std::vector<
126 typename ProductType<Number,
128 &symmetric_gradients);
129
133 template <int dim, int spacedim, typename Number>
134 void
136 const ArrayView<const Number> &dof_values,
137 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
138 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
139 &shape_function_data,
140 std::vector<typename Vector<dim, spacedim>::
141 template solution_divergence_type<Number>> &divergences);
142
146 template <int dim, int spacedim, typename Number>
147 void
149 const ArrayView<const Number> &dof_values,
150 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
151 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
152 &shape_function_data,
153 std::vector<typename ProductType<
154 Number,
155 typename ::internal::CurlType<spacedim>::type>::type> &curls);
156
160 template <int dim, int spacedim, typename Number>
161 void
163 const ArrayView<const Number> &dof_values,
164 const Table<2, ::Tensor<2, spacedim>> &shape_hessians,
165 const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
166 &shape_function_data,
167 std::vector<typename Vector<dim, spacedim>::
168 template solution_laplacian_type<Number>> &laplacians);
169
170 // ---------------------- symmetric tensor part ------------------------
171
175 template <int dim, int spacedim, typename Number>
176 void
178 const ArrayView<const Number> &dof_values,
179 const ::Table<2, double> &shape_values,
180 const std::vector<
182 &shape_function_data,
183 std::vector<
184 typename ProductType<Number,
186 &values);
187
191 template <int dim, int spacedim, typename Number>
192 void
194 const ArrayView<const Number> &dof_values,
195 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
196 const std::vector<
198 &shape_function_data,
199 std::vector<typename SymmetricTensor<2, dim, spacedim>::
200 template solution_divergence_type<Number>> &divergences);
201
202 // ---------------------- non-symmetric tensor part ------------------------
203
207 template <int dim, int spacedim, typename Number>
208 void
210 const ArrayView<const Number> &dof_values,
211 const ::Table<2, double> &shape_values,
212 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
213 &shape_function_data,
214 std::vector<
215 typename ProductType<Number, ::Tensor<2, spacedim>>::type>
216 &values);
217
221 template <int dim, int spacedim, typename Number>
222 void
224 const ArrayView<const Number> &dof_values,
225 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
226 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
227 &shape_function_data,
228 std::vector<typename Tensor<2, dim, spacedim>::
229 template solution_divergence_type<Number>> &divergences);
230
234 template <int dim, int spacedim, typename Number>
235 void
237 const ArrayView<const Number> &dof_values,
238 const Table<2, ::Tensor<1, spacedim>> &shape_gradients,
239 const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
240 &shape_function_data,
241 std::vector<typename Tensor<2, dim, spacedim>::
242 template solution_gradient_type<Number>> &gradients);
243 } // end of namespace internal
244} // namespace FEValuesViews
245
246
248
249#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:498
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:499
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_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, typename ::internal::CurlType< spacedim >::type >::type > &curls)
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_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)
typename internal::ProductTypeImpl< std::decay_t< T >, std::decay_t< U > >::type type