deal.II version GIT relicensing-6809-ge913b9bb34 2026-09-25 17:20: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_extractors.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) 2012 - 2025 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_extractors_h
14#define dealii_fe_values_extractors_h
15
16
17#include <deal.II/base/config.h>
18
19#include <deal.II/base/types.h>
20
21#include <string>
22#include <variant>
23
24
26
27
86{
98 struct Scalar
99 {
103 unsigned int component;
104
112 constexpr Scalar();
113
117 constexpr Scalar(const unsigned int component);
118
122 std::string
123 get_name() const;
124 };
125
126
153 struct Vector
154 {
159
167 constexpr Vector();
168
173 constexpr Vector(const unsigned int first_vector_component);
174
178 std::string
179 get_name() const;
180 };
181
182
199 template <int rank>
201 {
206
214 constexpr SymmetricTensor();
215
220 constexpr SymmetricTensor(const unsigned int first_tensor_component);
221
225 std::string
226 get_name() const;
227 };
228
229
246 template <int rank>
247 struct Tensor
248 {
253
261 constexpr Tensor();
262
267 constexpr Tensor(const unsigned int first_tensor_component);
268
272 std::string
273 get_name() const;
274 };
275
280 template <typename Extractor>
282 {
286 constexpr FirstCoupling(const Extractor &extractor);
287
291 const Extractor extractor;
292 };
293
298 template <typename Extractor>
300 {
304 constexpr SecondCoupling(const Extractor &extractor);
305
309 const Extractor extractor;
310 };
311
321} // namespace FEValuesExtractors
322
323
324/*-------------- Inline functions: namespace FEValuesExtractors -------------*/
325
326namespace FEValuesExtractors
327{
328 constexpr inline Scalar::Scalar()
329 : component(numbers::invalid_unsigned_int)
330 {}
331
332
333
334 constexpr inline Scalar::Scalar(const unsigned int component)
335 : component(component)
336 {}
337
338
339
340 constexpr inline Vector::Vector()
341 : first_vector_component(numbers::invalid_unsigned_int)
342 {}
343
344
345 constexpr inline Vector::Vector(const unsigned int first_vector_component)
346 : first_vector_component(first_vector_component)
347 {}
348
349
350 template <int rank>
352 : first_tensor_component(numbers::invalid_unsigned_int)
353 {}
354
355
356 template <int rank>
358 const unsigned int first_tensor_component)
359 : first_tensor_component(first_tensor_component)
360 {}
361
362
363 template <int rank>
364 constexpr inline Tensor<rank>::Tensor()
365 : first_tensor_component(numbers::invalid_unsigned_int)
366 {}
367
368
369 template <int rank>
370 constexpr inline Tensor<rank>::Tensor(
371 const unsigned int first_tensor_component)
372 : first_tensor_component(first_tensor_component)
373 {}
374
375
376 template <typename Extractor>
378 const Extractor &extractor)
379 : extractor(extractor)
380 {}
381
382
383 template <typename Extractor>
385 const Extractor &extractor)
386 : extractor(extractor)
387 {}
388} // namespace FEValuesExtractors
389
390
392
393#endif
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
std::variant< FEValuesExtractors::Scalar, FEValuesExtractors::Vector, FEValuesExtractors::Tensor< 2 >, FEValuesExtractors::SymmetricTensor< 2 > > AnyExtractor
constexpr FirstCoupling(const Extractor &extractor)
constexpr SecondCoupling(const Extractor &extractor)