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
function_lib.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) 1999 - 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_function_lib_h
14#define dealii_function_lib_h
15
16
17#include <deal.II/base/config.h>
18
21#include <deal.II/base/point.h>
22#include <deal.II/base/table.h>
23
24#include <array>
25
27
36namespace Functions
37{
47 template <int dim>
48 class SquareFunction : public Function<dim>
49 {
50 public:
51 virtual double
52 value(const Point<dim> &p, const unsigned int component = 0) const override;
53 virtual void
54 vector_value(const Point<dim> &p, Vector<double> &values) const override;
55 virtual void
56 value_list(const std::vector<Point<dim>> &points,
57 std::vector<double> &values,
58 const unsigned int component = 0) const override;
59 virtual Tensor<1, dim>
60 gradient(const Point<dim> &p,
61 const unsigned int component = 0) const override;
62 virtual void
64 std::vector<Tensor<1, dim>> &gradient) const override;
65 virtual void
66 gradient_list(const std::vector<Point<dim>> &points,
67 std::vector<Tensor<1, dim>> &gradients,
68 const unsigned int component = 0) const override;
69 virtual double
70 laplacian(const Point<dim> &p,
71 const unsigned int component = 0) const override;
72 virtual void
73 laplacian_list(const std::vector<Point<dim>> &points,
74 std::vector<double> &values,
75 const unsigned int component = 0) const override;
76 };
77
78
79
86 template <int dim>
87 class Q1WedgeFunction : public Function<dim>
88 {
89 public:
90 virtual double
91 value(const Point<dim> &p, const unsigned int component = 0) const override;
92
93 virtual void
94 value_list(const std::vector<Point<dim>> &points,
95 std::vector<double> &values,
96 const unsigned int component = 0) const override;
97
98 virtual void
99 vector_value_list(const std::vector<Point<dim>> &points,
100 std::vector<Vector<double>> &values) const override;
101
102 virtual Tensor<1, dim>
103 gradient(const Point<dim> &p,
104 const unsigned int component = 0) const override;
105
106 virtual void
107 gradient_list(const std::vector<Point<dim>> &points,
108 std::vector<Tensor<1, dim>> &gradients,
109 const unsigned int component = 0) const override;
110
111 virtual void
113 const std::vector<Point<dim>> &,
114 std::vector<std::vector<Tensor<1, dim>>> &) const override;
115
119 virtual double
120 laplacian(const Point<dim> &p,
121 const unsigned int component = 0) const override;
122
126 virtual void
127 laplacian_list(const std::vector<Point<dim>> &points,
128 std::vector<double> &values,
129 const unsigned int component = 0) const override;
130 };
131
132
133
148 template <int dim>
149 class PillowFunction : public Function<dim>
150 {
151 public:
156 PillowFunction(const double offset = 0.);
157
161 virtual double
162 value(const Point<dim> &p, const unsigned int component = 0) const override;
163
167 virtual void
168 value_list(const std::vector<Point<dim>> &points,
169 std::vector<double> &values,
170 const unsigned int component = 0) const override;
171
175 virtual Tensor<1, dim>
176 gradient(const Point<dim> &p,
177 const unsigned int component = 0) const override;
178
182 virtual void
183 gradient_list(const std::vector<Point<dim>> &points,
184 std::vector<Tensor<1, dim>> &gradients,
185 const unsigned int component = 0) const override;
186
190 virtual double
191 laplacian(const Point<dim> &p,
192 const unsigned int component = 0) const override;
193
197 virtual void
198 laplacian_list(const std::vector<Point<dim>> &points,
199 std::vector<double> &values,
200 const unsigned int component = 0) const override;
201
202 private:
203 const double offset;
204 };
205
206
207
215 template <int dim>
216 class CosineFunction : public Function<dim>
217 {
218 public:
223 CosineFunction(const unsigned int n_components = 1);
224
225 virtual double
226 value(const Point<dim> &p, const unsigned int component = 0) const override;
227
228 virtual void
229 value_list(const std::vector<Point<dim>> &points,
230 std::vector<double> &values,
231 const unsigned int component = 0) const override;
232
233 virtual void
234 vector_value_list(const std::vector<Point<dim>> &points,
235 std::vector<Vector<double>> &values) const override;
236
237 virtual Tensor<1, dim>
238 gradient(const Point<dim> &p,
239 const unsigned int component = 0) const override;
240
241 virtual void
242 gradient_list(const std::vector<Point<dim>> &points,
243 std::vector<Tensor<1, dim>> &gradients,
244 const unsigned int component = 0) const override;
245
246 virtual double
247 laplacian(const Point<dim> &p,
248 const unsigned int component = 0) const override;
249
250 virtual void
251 laplacian_list(const std::vector<Point<dim>> &points,
252 std::vector<double> &values,
253 const unsigned int component = 0) const override;
254
259 hessian(const Point<dim> &p,
260 const unsigned int component = 0) const override;
261
265 virtual void
266 hessian_list(const std::vector<Point<dim>> &points,
267 std::vector<SymmetricTensor<2, dim>> &hessians,
268 const unsigned int component = 0) const override;
269 };
270
271
272
283 template <int dim>
284 class CosineGradFunction : public Function<dim>
285 {
286 public:
291
292 virtual double
293 value(const Point<dim> &p, const unsigned int component) const override;
294 virtual void
295 vector_value(const Point<dim> &p, Vector<double> &values) const override;
296 virtual void
297 value_list(const std::vector<Point<dim>> &points,
298 std::vector<double> &values,
299 const unsigned int component) const override;
300
301 virtual void
302 vector_value_list(const std::vector<Point<dim>> &points,
303 std::vector<Vector<double>> &values) const override;
304
305 virtual Tensor<1, dim>
306 gradient(const Point<dim> &p, const unsigned int component) const override;
307
308 virtual void
309 gradient_list(const std::vector<Point<dim>> &points,
310 std::vector<Tensor<1, dim>> &gradients,
311 const unsigned int component) const override;
312
313 virtual void
315 const std::vector<Point<dim>> &points,
316 std::vector<std::vector<Tensor<1, dim>>> &gradients) const override;
317
318 virtual double
319 laplacian(const Point<dim> &p, const unsigned int component) const override;
320 };
321
322
323
329 template <int dim>
330 class ExpFunction : public Function<dim>
331 {
332 public:
336 virtual double
337 value(const Point<dim> &p, const unsigned int component = 0) const override;
338
342 virtual void
343 value_list(const std::vector<Point<dim>> &points,
344 std::vector<double> &values,
345 const unsigned int component = 0) const override;
346
350 virtual Tensor<1, dim>
351 gradient(const Point<dim> &p,
352 const unsigned int component = 0) const override;
353
357 virtual void
358 gradient_list(const std::vector<Point<dim>> &points,
359 std::vector<Tensor<1, dim>> &gradients,
360 const unsigned int component = 0) const override;
361
365 virtual double
366 laplacian(const Point<dim> &p,
367 const unsigned int component = 0) const override;
368
372 virtual void
373 laplacian_list(const std::vector<Point<dim>> &points,
374 std::vector<double> &values,
375 const unsigned int component = 0) const override;
376 };
377
378
379
408 {
409 public:
410 virtual double
411 value(const Point<2> &p, const unsigned int component = 0) const override;
412
413 virtual void
414 value_list(const std::vector<Point<2>> &points,
415 std::vector<double> &values,
416 const unsigned int component = 0) const override;
417
418 virtual void
419 vector_value_list(const std::vector<Point<2>> &points,
420 std::vector<Vector<double>> &values) const override;
421
422 virtual Tensor<1, 2>
423 gradient(const Point<2> &p,
424 const unsigned int component = 0) const override;
425
426 virtual void
427 gradient_list(const std::vector<Point<2>> &points,
428 std::vector<Tensor<1, 2>> &gradients,
429 const unsigned int component = 0) const override;
430
431 virtual void
433 const std::vector<Point<2>> &,
434 std::vector<std::vector<Tensor<1, 2>>> &) const override;
435
436 virtual double
437 laplacian(const Point<2> &p,
438 const unsigned int component = 0) const override;
439
440 virtual void
441 laplacian_list(const std::vector<Point<2>> &points,
442 std::vector<double> &values,
443 const unsigned int component = 0) const override;
444 };
445
446
447
457 {
458 public:
463 virtual double
464 value(const Point<2> &p, const unsigned int component) const override;
465
466 virtual void
467 value_list(const std::vector<Point<2>> &points,
468 std::vector<double> &values,
469 const unsigned int component) const override;
470
471 virtual void
472 vector_value_list(const std::vector<Point<2>> &points,
473 std::vector<Vector<double>> &values) const override;
474
475 virtual Tensor<1, 2>
476 gradient(const Point<2> &p, const unsigned int component) const override;
477
478 virtual void
479 gradient_list(const std::vector<Point<2>> &points,
480 std::vector<Tensor<1, 2>> &gradients,
481 const unsigned int component) const override;
482
483 virtual void
485 const std::vector<Point<2>> &,
486 std::vector<std::vector<Tensor<1, 2>>> &) const override;
487
488 virtual double
489 laplacian(const Point<2> &p, const unsigned int component) const override;
490
491 virtual void
492 laplacian_list(const std::vector<Point<2>> &points,
493 std::vector<double> &values,
494 const unsigned int component) const override;
495 };
496
497
498
504 template <int dim>
506 {
507 public:
508 virtual double
509 value(const Point<dim> &p, const unsigned int component = 0) const override;
510
511 virtual void
512 value_list(const std::vector<Point<dim>> &points,
513 std::vector<double> &values,
514 const unsigned int component = 0) const override;
515
516 virtual void
517 vector_value_list(const std::vector<Point<dim>> &points,
518 std::vector<Vector<double>> &values) const override;
519
520 virtual Tensor<1, dim>
521 gradient(const Point<dim> &p,
522 const unsigned int component = 0) const override;
523
524 virtual void
525 gradient_list(const std::vector<Point<dim>> &points,
526 std::vector<Tensor<1, dim>> &gradients,
527 const unsigned int component = 0) const override;
528
529 virtual void
531 const std::vector<Point<dim>> &,
532 std::vector<std::vector<Tensor<1, dim>>> &) const override;
533
534 virtual double
535 laplacian(const Point<dim> &p,
536 const unsigned int component = 0) const override;
537
538 virtual void
539 laplacian_list(const std::vector<Point<dim>> &points,
540 std::vector<double> &values,
541 const unsigned int component = 0) const override;
542 };
543
544
551 {
552 public:
553 virtual double
554 value(const Point<2> &p, const unsigned int component = 0) const override;
555
556 virtual void
557 value_list(const std::vector<Point<2>> &points,
558 std::vector<double> &values,
559 const unsigned int component = 0) const override;
560
561 virtual void
562 vector_value_list(const std::vector<Point<2>> &points,
563 std::vector<Vector<double>> &values) const override;
564
565 virtual Tensor<1, 2>
566 gradient(const Point<2> &p,
567 const unsigned int component = 0) const override;
568
569 virtual void
570 gradient_list(const std::vector<Point<2>> &points,
571 std::vector<Tensor<1, 2>> &gradients,
572 const unsigned int component = 0) const override;
573
574 virtual void
576 const std::vector<Point<2>> &,
577 std::vector<std::vector<Tensor<1, 2>>> &) const override;
578
579 virtual double
580 laplacian(const Point<2> &p,
581 const unsigned int component = 0) const override;
582
583 virtual void
584 laplacian_list(const std::vector<Point<2>> &points,
585 std::vector<double> &values,
586 const unsigned int component = 0) const override;
587 };
588
589
590
605 template <int dim>
606 class JumpFunction : public Function<dim>
607 {
608 public:
613 JumpFunction(const Point<dim> &direction, const double steepness);
614
618 virtual double
619 value(const Point<dim> &p, const unsigned int component = 0) const override;
620
624 virtual void
625 value_list(const std::vector<Point<dim>> &points,
626 std::vector<double> &values,
627 const unsigned int component = 0) const override;
628
632 virtual Tensor<1, dim>
633 gradient(const Point<dim> &p,
634 const unsigned int component = 0) const override;
635
639 virtual void
640 gradient_list(const std::vector<Point<dim>> &points,
641 std::vector<Tensor<1, dim>> &gradients,
642 const unsigned int component = 0) const override;
643
647 virtual double
648 laplacian(const Point<dim> &p,
649 const unsigned int component = 0) const override;
650
654 virtual void
655 laplacian_list(const std::vector<Point<dim>> &points,
656 std::vector<double> &values,
657 const unsigned int component = 0) const override;
658
665 virtual std::size_t
666 memory_consumption() const override;
667
668 protected:
673
677 const double steepness;
678
682 double angle;
683
687 double sine;
688
692 double cosine;
693 };
694
695
696
708 template <int dim>
709 class FourierCosineFunction : public Function<dim>
710 {
711 public:
717
724 virtual double
725 value(const Point<dim> &p, const unsigned int component = 0) const override;
726
731 virtual Tensor<1, dim>
732 gradient(const Point<dim> &p,
733 const unsigned int component = 0) const override;
734
738 virtual double
739 laplacian(const Point<dim> &p,
740 const unsigned int component = 0) const override;
741
742 private:
747 };
748
749
750
762 template <int dim>
763 class FourierSineFunction : public Function<dim>
764 {
765 public:
771
778 virtual double
779 value(const Point<dim> &p, const unsigned int component = 0) const override;
780
785 virtual Tensor<1, dim>
786 gradient(const Point<dim> &p,
787 const unsigned int component = 0) const override;
788
792 virtual double
793 laplacian(const Point<dim> &p,
794 const unsigned int component = 0) const override;
795
796 private:
801 };
802
803
812 template <int dim>
813 class FourierSineSum : public Function<dim>
814 {
815 public:
821 const std::vector<double> &weights);
822
829 virtual double
830 value(const Point<dim> &p, const unsigned int component = 0) const override;
831
836 virtual Tensor<1, dim>
837 gradient(const Point<dim> &p,
838 const unsigned int component = 0) const override;
839
843 virtual double
844 laplacian(const Point<dim> &p,
845 const unsigned int component = 0) const override;
846
847 private:
851 const std::vector<Point<dim>> fourier_coefficients;
852 const std::vector<double> weights;
853 };
854
855
856
866 template <int dim>
867 class FourierCosineSum : public Function<dim>
868 {
869 public:
875 const std::vector<double> &weights);
876
883 virtual double
884 value(const Point<dim> &p, const unsigned int component = 0) const override;
885
890 virtual Tensor<1, dim>
891 gradient(const Point<dim> &p,
892 const unsigned int component = 0) const override;
893
897 virtual double
898 laplacian(const Point<dim> &p,
899 const unsigned int component = 0) const override;
900
901 private:
905 const std::vector<Point<dim>> fourier_coefficients;
906 const std::vector<double> weights;
907 };
908
909
921 template <int dim>
922 class CutOffFunctionBase : public Function<dim>
923 {
924 public:
929 static const unsigned int no_component = numbers::invalid_unsigned_int;
930
947 const double radius = 1.,
948 const Point<dim> center = Point<dim>(),
949 const unsigned int n_components = 1,
950 const unsigned int select = CutOffFunctionBase<dim>::no_component,
951 const bool integrate_to_one = false,
952 const double unitary_integral_value = 1.0);
953
957 virtual ~CutOffFunctionBase() = default;
958
962 virtual void
963 set_center(const Point<dim> &p);
964
968 virtual void
969 set_radius(const double r);
970
974 const Point<dim> &
975 get_center() const;
976
980 double
981 get_radius() const;
982
986 bool
987 integrates_to_one() const;
988
989 protected:
994
998 double radius;
999
1004 const unsigned int selected;
1005
1010
1016
1021 };
1022
1023
1033 template <int dim>
1035 {
1036 public:
1047 double radius = 1.0,
1048 const Point<dim> &center = Point<dim>(),
1049 const unsigned int n_components = 1,
1050 const unsigned int select = CutOffFunctionBase<dim>::no_component,
1051 const bool integrate_to_one = false);
1052
1057 template <template <int> class CutOffFunctionBaseType>
1058 void
1060
1064 virtual void
1065 set_center(const Point<dim> &center) override;
1066
1070 virtual void
1071 set_radius(const double radius) override;
1072
1076 virtual double
1077 value(const Point<dim> &p, const unsigned int component = 0) const override;
1078
1082 virtual Tensor<1, dim>
1083 gradient(const Point<dim> &p,
1084 const unsigned int component = 0) const override;
1085
1086 private:
1087 std::array<std::unique_ptr<CutOffFunctionBase<1>>, dim> base;
1088
1090 };
1091
1092
1093
1102 template <int dim>
1104 {
1105 public:
1113 const double radius = 1.,
1114 const Point<dim> = Point<dim>(),
1115 const unsigned int n_components = 1,
1116 const unsigned int select = CutOffFunctionBase<dim>::no_component,
1117 const bool integrate_to_one = false);
1118
1122 virtual double
1123 value(const Point<dim> &p, const unsigned int component = 0) const override;
1124
1128 virtual void
1129 value_list(const std::vector<Point<dim>> &points,
1130 std::vector<double> &values,
1131 const unsigned int component = 0) const override;
1132
1136 virtual void
1137 vector_value_list(const std::vector<Point<dim>> &points,
1138 std::vector<Vector<double>> &values) const override;
1139 };
1140
1141
1150 template <int dim>
1152 {
1153 public:
1161 const double radius = 1.,
1162 const Point<dim> = Point<dim>(),
1163 const unsigned int n_components = 1,
1164 const unsigned int select = CutOffFunctionBase<dim>::no_component,
1165 const bool integrate_to_one = false);
1166
1170 virtual double
1171 value(const Point<dim> &p, const unsigned int component = 0) const override;
1172
1176 virtual void
1177 value_list(const std::vector<Point<dim>> &points,
1178 std::vector<double> &values,
1179 const unsigned int component = 0) const override;
1180
1184 virtual void
1185 vector_value_list(const std::vector<Point<dim>> &points,
1186 std::vector<Vector<double>> &values) const override;
1187 };
1188
1189
1202 template <int dim>
1204 {
1205 public:
1210 const double radius = 1.,
1211 const Point<dim> = Point<dim>(),
1212 const unsigned int n_components = 1,
1213 const unsigned int select = CutOffFunctionBase<dim>::no_component,
1214 bool integrate_to_one = false);
1215
1219 virtual double
1220 value(const Point<dim> &p, const unsigned int component = 0) const override;
1221
1225 virtual void
1226 value_list(const std::vector<Point<dim>> &points,
1227 std::vector<double> &values,
1228 const unsigned int component = 0) const override;
1229
1233 virtual void
1234 vector_value_list(const std::vector<Point<dim>> &points,
1235 std::vector<Vector<double>> &values) const override;
1236
1240 virtual Tensor<1, dim>
1241 gradient(const Point<dim> &p,
1242 const unsigned int component = 0) const override;
1243 };
1244
1245
1255 template <int dim>
1257 {
1258 public:
1266 const double radius = 1.,
1267 const Point<dim> = Point<dim>(),
1268 const unsigned int n_components = 1,
1269 const unsigned int select = CutOffFunctionBase<dim>::no_component,
1270 bool integrate_to_one = false);
1271
1275 virtual double
1276 value(const Point<dim> &p, const unsigned int component = 0) const override;
1277
1281 virtual void
1282 value_list(const std::vector<Point<dim>> &points,
1283 std::vector<double> &values,
1284 const unsigned int component = 0) const override;
1285
1289 virtual void
1290 vector_value_list(const std::vector<Point<dim>> &points,
1291 std::vector<Vector<double>> &values) const override;
1292
1296 virtual Tensor<1, dim>
1297 gradient(const Point<dim> &p,
1298 const unsigned int component = 0) const override;
1299 };
1300
1301
1302
1316 template <int dim, typename Number = double>
1317 class Monomial : public Function<dim, Number>
1318 {
1319 public:
1327 const unsigned int n_components = 1);
1328
1332 virtual Number
1333 value(const Point<dim> &p, const unsigned int component = 0) const override;
1334
1341 virtual void
1342 vector_value(const Point<dim> &p, Vector<Number> &values) const override;
1343
1347 virtual void
1348 value_list(const std::vector<Point<dim>> &points,
1349 std::vector<Number> &values,
1350 const unsigned int component = 0) const override;
1351
1356 gradient(const Point<dim> &p,
1357 const unsigned int component = 0) const override;
1358
1359 private:
1364 };
1365
1366
1367
1449 template <int dim>
1451 {
1452 public:
1471 const std::array<std::vector<double>, dim> &coordinate_values,
1473
1491 std::array<std::vector<double>, dim> &&coordinate_values,
1493
1504 virtual double
1505 value(const Point<dim> &p, const unsigned int component = 0) const override;
1506
1518 virtual Tensor<1, dim>
1519 gradient(const Point<dim> &p,
1520 const unsigned int component = 0) const override;
1521
1525 virtual std::size_t
1526 memory_consumption() const override;
1527
1531 const Table<dim, double> &
1532 get_data() const;
1533
1534 protected:
1539 table_index_of_point(const Point<dim> &p) const;
1540
1544 const std::array<std::vector<double>, dim> coordinate_values;
1545
1550 };
1551
1552
1596 template <int dim>
1598 {
1599 public:
1615 const std::array<std::pair<double, double>, dim> &interval_endpoints,
1616 const std::array<unsigned int, dim> &n_subintervals,
1618
1636 std::array<std::pair<double, double>, dim> &&interval_endpoints,
1637 std::array<unsigned int, dim> &&n_subintervals,
1639
1650 virtual double
1651 value(const Point<dim> &p, const unsigned int component = 0) const override;
1652
1664 virtual Tensor<1, dim>
1665 gradient(const Point<dim> &p,
1666 const unsigned int component = 0) const override;
1667
1671 virtual std::size_t
1672 memory_consumption() const override;
1673
1677 const Table<dim, double> &
1678 get_data() const;
1679
1680 private:
1684 const std::array<std::pair<double, double>, dim> interval_endpoints;
1685
1689 const std::array<unsigned int, dim> n_subintervals;
1690
1695
1696
1700 std::array<double, dim> delta_x;
1701 };
1702
1703
1716 template <int dim>
1717 class Polynomial : public Function<dim>
1718 {
1719 public:
1730 const std::vector<double> &coefficients);
1731
1735 virtual double
1736 value(const Point<dim> &p, const unsigned int component = 0) const override;
1737
1738
1742 virtual void
1743 value_list(const std::vector<Point<dim>> &points,
1744 std::vector<double> &values,
1745 const unsigned int component = 0) const override;
1746
1750 virtual Tensor<1, dim>
1751 gradient(const Point<dim> &p,
1752 const unsigned int component = 0) const override;
1753
1757 virtual std::size_t
1758 memory_consumption() const override;
1759
1760 private:
1765
1769 const std::vector<double> coefficients;
1770 };
1771
1772
1815 template <int dim>
1816 class RayleighKotheVortex : public Function<dim>
1817 {
1818 public:
1822 RayleighKotheVortex(const double T = 1.0);
1823
1827 virtual void
1828 vector_value(const Point<dim> &point,
1829 Vector<double> &values) const override;
1830
1831 private:
1835 const double T;
1836 };
1837
1838#ifndef DOXYGEN
1839
1840
1841
1842 // Template definitions
1843 template <int dim>
1844 template <template <int> class CutOffFunctionBaseType>
1845 void
1847 {
1848 initialized = true;
1849 static_assert(
1850 std::is_base_of_v<CutOffFunctionBase<1>, CutOffFunctionBaseType<1>>,
1851 "You can only construct a CutOffFunctionTensorProduct function from "
1852 "a class derived from CutOffFunctionBase.");
1853
1854 for (unsigned int i = 0; i < dim; ++i)
1855 base[i].reset(new CutOffFunctionBaseType<1>(this->radius,
1856 Point<1>(this->center[i]),
1857 this->n_components,
1858 this->selected,
1859 this->integrate_to_one));
1860 }
1861
1862
1863
1864#endif
1865
1866} // namespace Functions
1868
1869#endif
*  const Number radius
const unsigned int n_components
Definition function.h:162
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual SymmetricTensor< 2, dim > hessian(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual void hessian_list(const std::vector< Point< dim > > &points, std::vector< SymmetricTensor< 2, dim > > &hessians, const unsigned int component=0) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component) const override
virtual double value(const Point< dim > &p, const unsigned int component) const override
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component) const override
virtual void vector_gradient_list(const std::vector< Point< dim > > &points, std::vector< std::vector< Tensor< 1, dim > > > &gradients) const override
virtual void set_radius(const double r)
virtual ~CutOffFunctionBase()=default
virtual void set_center(const Point< dim > &p)
const Point< dim > & get_center() const
static const unsigned int no_component
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
std::array< std::unique_ptr< CutOffFunctionBase< 1 > >, dim > base
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void set_radius(const double radius) override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void set_center(const Point< dim > &center) override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
const Tensor< 1, dim > fourier_coefficients
const std::vector< Point< dim > > fourier_coefficients
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
const std::vector< double > weights
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
const Tensor< 1, dim > fourier_coefficients
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
const std::vector< Point< dim > > fourier_coefficients
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
const std::vector< double > weights
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
const Table< dim, double > & get_data() const
TableIndices< dim > table_index_of_point(const Point< dim > &p) const
virtual std::size_t memory_consumption() const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
const std::array< std::vector< double >, dim > coordinate_values
const Table< dim, double > & get_data() const
std::array< double, dim > delta_x
const std::array< unsigned int, dim > n_subintervals
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
const Table< dim, double > data_values
const std::array< std::pair< double, double >, dim > interval_endpoints
virtual std::size_t memory_consumption() const override
const Point< dim > direction
virtual std::size_t memory_consumption() const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual Tensor< 1, 2 > gradient(const Point< 2 > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< 2 > &p, const unsigned int component=0) const override
virtual double value(const Point< 2 > &p, const unsigned int component=0) const override
virtual void vector_gradient_list(const std::vector< Point< 2 > > &, std::vector< std::vector< Tensor< 1, 2 > > > &) const override
virtual void gradient_list(const std::vector< Point< 2 > > &points, std::vector< Tensor< 1, 2 > > &gradients, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< 2 > > &points, std::vector< Vector< double > > &values) const override
virtual void vector_gradient_list(const std::vector< Point< 2 > > &, std::vector< std::vector< Tensor< 1, 2 > > > &) const override
virtual double laplacian(const Point< 2 > &p, const unsigned int component) const override
virtual void value_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component) const override
virtual void vector_value_list(const std::vector< Point< 2 > > &points, std::vector< Vector< double > > &values) const override
virtual void laplacian_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component) const override
virtual void gradient_list(const std::vector< Point< 2 > > &points, std::vector< Tensor< 1, 2 > > &gradients, const unsigned int component) const override
virtual Tensor< 1, 2 > gradient(const Point< 2 > &p, const unsigned int component) const override
virtual double value(const Point< 2 > &p, const unsigned int component) const override
virtual Number value(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim, Number > gradient(const Point< dim > &p, const unsigned int component=0) const override
const Tensor< 1, dim, Number > exponents
virtual void vector_value(const Point< dim > &p, Vector< Number > &values) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< Number > &values, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
const Table< 2, double > exponents
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual std::size_t memory_consumption() const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
const std::vector< double > coefficients
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_gradient_list(const std::vector< Point< dim > > &, std::vector< std::vector< Tensor< 1, dim > > > &) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value(const Point< dim > &point, Vector< double > &values) const override
virtual void gradient_list(const std::vector< Point< 2 > > &points, std::vector< Tensor< 1, 2 > > &gradients, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< 2 > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void vector_gradient_list(const std::vector< Point< 2 > > &, std::vector< std::vector< Tensor< 1, 2 > > > &) const override
virtual double value(const Point< 2 > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< 2 > > &points, std::vector< Vector< double > > &values) const override
virtual double laplacian(const Point< 2 > &p, const unsigned int component=0) const override
virtual Tensor< 1, 2 > gradient(const Point< 2 > &p, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void vector_gradient_list(const std::vector< Point< dim > > &, std::vector< std::vector< Tensor< 1, dim > > > &) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual double value(const Point< dim > &p, const unsigned int component=0) const override
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const override
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const override
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const override
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const override
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const override
virtual void vector_gradient(const Point< dim > &p, std::vector< Tensor< 1, dim > > &gradient) const override
Definition point.h:111
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
constexpr unsigned int invalid_unsigned_int
Definition types.h:228