Reference documentation for deal.II version Git d4ec8156ca 2019-11-18 14:03:00 -0700
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
fe_values_extractors.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1998 - 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 #ifndef dealii_fe_values_extractors_h
17 #define dealii_fe_values_extractors_h
18 
19 
20 #include <deal.II/base/config.h>
21 
22 DEAL_II_NAMESPACE_OPEN
23 
24 
83 {
95  struct Scalar
96  {
100  unsigned int component;
101 
109  Scalar();
110 
114  Scalar(const unsigned int component);
115 
119  std::string
120  get_name() const;
121  };
122 
123 
150  struct Vector
151  {
156 
164  Vector();
165 
170  Vector(const unsigned int first_vector_component);
171 
175  std::string
176  get_name() const;
177  };
178 
179 
198  template <int rank>
200  {
205 
213  SymmetricTensor();
214 
219  SymmetricTensor(const unsigned int first_tensor_component);
220 
224  std::string
225  get_name() const;
226  };
227 
228 
247  template <int rank>
248  struct Tensor
249  {
254 
262  Tensor();
263 
268  Tensor(const unsigned int first_tensor_component);
269 
273  std::string
274  get_name() const;
275  };
276 } // namespace FEValuesExtractors
277 
278 
279 /*-------------- Inline functions: namespace FEValuesExtractors -------------*/
280 
281 namespace FEValuesExtractors
282 {
283  inline Scalar::Scalar()
284  : component(numbers::invalid_unsigned_int)
285  {}
286 
287 
288 
289  inline Scalar::Scalar(const unsigned int component)
290  : component(component)
291  {}
292 
293 
294 
295  inline Vector::Vector()
296  : first_vector_component(numbers::invalid_unsigned_int)
297  {}
298 
299 
300  inline Vector::Vector(const unsigned int first_vector_component)
301  : first_vector_component(first_vector_component)
302  {}
303 
304 
305  template <int rank>
307  : first_tensor_component(numbers::invalid_unsigned_int)
308  {}
309 
310 
311  template <int rank>
313  const unsigned int first_tensor_component)
314  : first_tensor_component(first_tensor_component)
315  {}
316 
317 
318  template <int rank>
320  : first_tensor_component(numbers::invalid_unsigned_int)
321  {}
322 
323 
324  template <int rank>
325  inline Tensor<rank>::Tensor(const unsigned int first_tensor_component)
326  : first_tensor_component(first_tensor_component)
327  {}
328 } // namespace FEValuesExtractors
329 
330 
331 
332 DEAL_II_NAMESPACE_CLOSE
333 
334 #endif
LinearAlgebra::distributed::Vector< Number > Vector