Reference documentation for deal.II version 9.0.0
function_lib.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2018 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 at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_function_lib_h
17 #define dealii_function_lib_h
18 
19 
20 #include <deal.II/base/config.h>
21 #include <deal.II/base/function.h>
22 #include <deal.II/base/point.h>
23 #include <deal.II/base/table.h>
24 
25 #include <array>
26 
27 DEAL_II_NAMESPACE_OPEN
28 
37 namespace Functions
38 {
39 
40 
51  template <int dim>
52  class SquareFunction : public Function<dim>
53  {
54  public:
55  virtual double value (const Point<dim> &p,
56  const unsigned int component = 0) const;
57  virtual void vector_value (const Point<dim> &p,
58  Vector<double> &values) const;
59  virtual void value_list (const std::vector<Point<dim> > &points,
60  std::vector<double> &values,
61  const unsigned int component = 0) const;
62  virtual Tensor<1,dim> gradient (const Point<dim> &p,
63  const unsigned int component = 0) const;
64  virtual void vector_gradient (const Point<dim> &p,
65  std::vector<Tensor<1,dim> > &gradient) const;
66  virtual void gradient_list (const std::vector<Point<dim> > &points,
67  std::vector<Tensor<1,dim> > &gradients,
68  const unsigned int component = 0) const;
69  virtual double laplacian (const Point<dim> &p,
70  const unsigned int component = 0) const;
71  virtual void laplacian_list (const std::vector<Point<dim> > &points,
72  std::vector<double> &values,
73  const unsigned int component = 0) const;
74  };
75 
76 
77 
85  template <int dim>
86  class Q1WedgeFunction : public Function<dim>
87  {
88  public:
89  virtual double value (const Point<dim> &p,
90  const unsigned int component = 0) const;
91 
92  virtual void value_list (const std::vector<Point<dim> > &points,
93  std::vector<double> &values,
94  const unsigned int component = 0) const;
95 
96  virtual void vector_value_list (const std::vector<Point<dim> > &points,
97  std::vector<Vector<double> > &values) const;
98 
99  virtual Tensor<1,dim> gradient (const Point<dim> &p,
100  const unsigned int component = 0) const;
101 
102  virtual void gradient_list (const std::vector<Point<dim> > &points,
103  std::vector<Tensor<1,dim> > &gradients,
104  const unsigned int component = 0) const;
105 
106  virtual void vector_gradient_list (const std::vector<Point<dim> > &,
107  std::vector<std::vector<Tensor<1,dim> > > &) const;
108 
112  virtual double laplacian (const Point<dim> &p,
113  const unsigned int component = 0) const;
114 
118  virtual void laplacian_list (const std::vector<Point<dim> > &points,
119  std::vector<double> &values,
120  const unsigned int component = 0) const;
121  };
122 
123 
124 
140  template <int dim>
141  class PillowFunction : public Function<dim>
142  {
143  public:
148  PillowFunction (const double offset=0.);
149 
153  virtual double value (const Point<dim> &p,
154  const unsigned int component = 0) const;
155 
159  virtual void value_list (const std::vector<Point<dim> > &points,
160  std::vector<double> &values,
161  const unsigned int component = 0) const;
162 
166  virtual Tensor<1,dim> gradient (const Point<dim> &p,
167  const unsigned int component = 0) const;
168 
172  virtual void gradient_list (const std::vector<Point<dim> > &points,
173  std::vector<Tensor<1,dim> > &gradients,
174  const unsigned int component = 0) const;
175 
179  virtual double laplacian (const Point<dim> &p,
180  const unsigned int component = 0) const;
181 
185  virtual void laplacian_list (const std::vector<Point<dim> > &points,
186  std::vector<double> &values,
187  const unsigned int component = 0) const;
188  private:
189  const double offset;
190  };
191 
192 
193 
202  template <int dim>
203  class CosineFunction : public Function<dim>
204  {
205  public:
210  CosineFunction (const unsigned int n_components = 1);
211 
212  virtual double value (const Point<dim> &p,
213  const unsigned int component = 0) const;
214 
215  virtual void value_list (const std::vector<Point<dim> > &points,
216  std::vector<double> &values,
217  const unsigned int component = 0) const;
218 
219  virtual void vector_value_list (const std::vector<Point<dim> > &points,
220  std::vector<Vector<double> > &values) const;
221 
222  virtual Tensor<1,dim> gradient (const Point<dim> &p,
223  const unsigned int component = 0) const;
224 
225  virtual void gradient_list (const std::vector<Point<dim> > &points,
226  std::vector<Tensor<1,dim> > &gradients,
227  const unsigned int component = 0) const;
228 
229  virtual double laplacian (const Point<dim> &p,
230  const unsigned int component = 0) const;
231 
232  virtual void laplacian_list (const std::vector<Point<dim> > &points,
233  std::vector<double> &values,
234  const unsigned int component = 0) const;
235 
239  virtual SymmetricTensor<2,dim> hessian (const Point<dim> &p,
240  const unsigned int component = 0) const;
241 
245  virtual void hessian_list (const std::vector<Point<dim> > &points,
246  std::vector<SymmetricTensor<2,dim> > &hessians,
247  const unsigned int component = 0) const;
248  };
249 
250 
251 
263  template <int dim>
264  class CosineGradFunction : public Function<dim>
265  {
266  public:
271 
272  virtual double value (const Point<dim> &p,
273  const unsigned int component) const;
274  virtual void vector_value (const Point<dim> &p,
275  Vector<double> &values) const;
276  virtual void value_list (const std::vector<Point<dim> > &points,
277  std::vector<double> &values,
278  const unsigned int component) const;
279 
280  virtual void vector_value_list (const std::vector<Point<dim> > &points,
281  std::vector<Vector<double> > &values) const;
282 
283  virtual Tensor<1,dim> gradient (const Point<dim> &p,
284  const unsigned int component) const;
285 
286  virtual void gradient_list (const std::vector<Point<dim> > &points,
287  std::vector<Tensor<1,dim> > &gradients,
288  const unsigned int component) const;
289 
290  virtual void vector_gradient_list (const std::vector<Point<dim> > &points,
291  std::vector<std::vector<Tensor<1,dim> > > &gradients) const;
292 
293  virtual double laplacian (const Point<dim> &p,
294  const unsigned int component) const;
295  };
296 
297 
298 
305  template <int dim>
306  class ExpFunction : public Function<dim>
307  {
308  public:
312  virtual double value (const Point<dim> &p,
313  const unsigned int component = 0) const;
314 
318  virtual void value_list (const std::vector<Point<dim> > &points,
319  std::vector<double> &values,
320  const unsigned int component = 0) const;
321 
325  virtual Tensor<1,dim> gradient (const Point<dim> &p,
326  const unsigned int component = 0) const;
327 
331  virtual void gradient_list (const std::vector<Point<dim> > &points,
332  std::vector<Tensor<1,dim> > &gradients,
333  const unsigned int component = 0) const;
334 
338  virtual double laplacian (const Point<dim> &p,
339  const unsigned int component = 0) const;
340 
344  virtual void laplacian_list (const std::vector<Point<dim> > &points,
345  std::vector<double> &values,
346  const unsigned int component = 0) const;
347  };
348 
349 
350 
362  class LSingularityFunction : public Function<2>
363  {
364  public:
365  virtual double value (const Point<2> &p,
366  const unsigned int component = 0) const;
367 
368  virtual void value_list (const std::vector<Point<2> > &points,
369  std::vector<double> &values,
370  const unsigned int component = 0) const;
371 
372  virtual void vector_value_list (const std::vector<Point<2> > &points,
373  std::vector<Vector<double> > &values) const;
374 
375  virtual Tensor<1,2> gradient (const Point<2> &p,
376  const unsigned int component = 0) const;
377 
378  virtual void gradient_list (const std::vector<Point<2> > &points,
379  std::vector<Tensor<1,2> > &gradients,
380  const unsigned int component = 0) const;
381 
382  virtual void vector_gradient_list (const std::vector<Point<2> > &,
383  std::vector<std::vector<Tensor<1,2> > > &) const;
384 
385  virtual double laplacian (const Point<2> &p,
386  const unsigned int component = 0) const;
387 
388  virtual void laplacian_list (const std::vector<Point<2> > &points,
389  std::vector<double> &values,
390  const unsigned int component = 0) const;
391  };
392 
393 
394 
405  {
406  public:
411  virtual double value (const Point<2> &p,
412  const unsigned int component) const;
413 
414  virtual void value_list (const std::vector<Point<2> > &points,
415  std::vector<double> &values,
416  const unsigned int component) const;
417 
418  virtual void vector_value_list (const std::vector<Point<2> > &points,
419  std::vector<Vector<double> > &values) const;
420 
421  virtual Tensor<1,2> gradient (const Point<2> &p,
422  const unsigned int component) const;
423 
424  virtual void gradient_list (const std::vector<Point<2> > &points,
425  std::vector<Tensor<1,2> > &gradients,
426  const unsigned int component) const;
427 
428  virtual void vector_gradient_list (const std::vector<Point<2> > &,
429  std::vector<std::vector<Tensor<1,2> > > &) const;
430 
431  virtual double laplacian (const Point<2> &p,
432  const unsigned int component) const;
433 
434  virtual void laplacian_list (const std::vector<Point<2> > &points,
435  std::vector<double> &values,
436  const unsigned int component) const;
437  };
438 
439 
440 
447  template <int dim>
448  class SlitSingularityFunction : public Function<dim>
449  {
450  public:
451  virtual double value (const Point<dim> &p,
452  const unsigned int component = 0) const;
453 
454  virtual void value_list (const std::vector<Point<dim> > &points,
455  std::vector<double> &values,
456  const unsigned int component = 0) const;
457 
458  virtual void vector_value_list (const std::vector<Point<dim> > &points,
459  std::vector<Vector<double> > &values) const;
460 
461  virtual Tensor<1,dim> gradient (const Point<dim> &p,
462  const unsigned int component = 0) const;
463 
464  virtual void gradient_list (const std::vector<Point<dim> > &points,
465  std::vector<Tensor<1,dim> > &gradients,
466  const unsigned int component = 0) const;
467 
468  virtual void vector_gradient_list (const std::vector<Point<dim> > &,
469  std::vector<std::vector<Tensor<1,dim> > > &) const;
470 
471  virtual double laplacian (const Point<dim> &p,
472  const unsigned int component = 0) const;
473 
474  virtual void laplacian_list (const std::vector<Point<dim> > &points,
475  std::vector<double> &values,
476  const unsigned int component = 0) const;
477  };
478 
479 
487  {
488  public:
489  virtual double value (const Point<2> &p,
490  const unsigned int component = 0) const;
491 
492  virtual void value_list (const std::vector<Point<2> > &points,
493  std::vector<double> &values,
494  const unsigned int component = 0) const;
495 
496  virtual void vector_value_list (const std::vector<Point<2> > &points,
497  std::vector<Vector<double> > &values) const;
498 
499  virtual Tensor<1,2> gradient (const Point<2> &p,
500  const unsigned int component = 0) const;
501 
502  virtual void gradient_list (const std::vector<Point<2> > &points,
503  std::vector<Tensor<1,2> > &gradients,
504  const unsigned int component = 0) const;
505 
506  virtual void vector_gradient_list (const std::vector<Point<2> > &,
507  std::vector<std::vector<Tensor<1,2> > > &) const;
508 
509  virtual double laplacian (const Point<2> &p,
510  const unsigned int component = 0) const;
511 
512  virtual void laplacian_list (const std::vector<Point<2> > &points,
513  std::vector<double> &values,
514  const unsigned int component = 0) const;
515  };
516 
517 
518 
534  template <int dim>
535  class JumpFunction : public Function<dim>
536  {
537  public:
543  const double steepness);
544 
548  virtual double value (const Point<dim> &p,
549  const unsigned int component = 0) const;
550 
554  virtual void value_list (const std::vector<Point<dim> > &points,
555  std::vector<double> &values,
556  const unsigned int component = 0) const;
557 
561  virtual Tensor<1,dim> gradient (const Point<dim> &p,
562  const unsigned int component = 0) const;
563 
567  virtual void gradient_list (const std::vector<Point<dim> > &points,
568  std::vector<Tensor<1,dim> > &gradients,
569  const unsigned int component = 0) const;
570 
574  virtual double laplacian (const Point<dim> &p,
575  const unsigned int component = 0) const;
576 
580  virtual void laplacian_list (const std::vector<Point<dim> > &points,
581  std::vector<double> &values,
582  const unsigned int component = 0) const;
583 
590  std::size_t memory_consumption () const;
591 
592  protected:
597 
601  const double steepness;
602 
606  double angle;
607 
611  double sine;
612 
616  double cosine;
617  };
618 
619 
620 
633  template <int dim>
634  class FourierCosineFunction : public Function<dim>
635  {
636  public:
642 
649  virtual double value (const Point<dim> &p,
650  const unsigned int component = 0) const;
651 
656  virtual Tensor<1,dim> gradient (const Point<dim> &p,
657  const unsigned int component = 0) const;
658 
662  virtual double laplacian (const Point<dim> &p,
663  const unsigned int component = 0) const;
664  private:
669  };
670 
671 
672 
685  template <int dim>
686  class FourierSineFunction : public Function<dim>
687  {
688  public:
694 
701  virtual double value (const Point<dim> &p,
702  const unsigned int component = 0) const;
703 
708  virtual Tensor<1,dim> gradient (const Point<dim> &p,
709  const unsigned int component = 0) const;
710 
714  virtual double laplacian (const Point<dim> &p,
715  const unsigned int component = 0) const;
716  private:
721  };
722 
723 
733  template <int dim>
734  class FourierSineSum : public Function<dim>
735  {
736  public:
741  FourierSineSum (const std::vector<Point<dim> > &fourier_coefficients,
742  const std::vector<double> &weights);
743 
750  virtual double value (const Point<dim> &p,
751  const unsigned int component = 0) const;
752 
757  virtual Tensor<1,dim> gradient (const Point<dim> &p,
758  const unsigned int component = 0) const;
759 
763  virtual double laplacian (const Point<dim> &p,
764  const unsigned int component = 0) const;
765  private:
769  const std::vector<Point<dim> > fourier_coefficients;
770  const std::vector<double> weights;
771  };
772 
773 
774 
785  template <int dim>
786  class FourierCosineSum : public Function<dim>
787  {
788  public:
793  FourierCosineSum (const std::vector<Point<dim> > &fourier_coefficients,
794  const std::vector<double> &weights);
795 
802  virtual double value (const Point<dim> &p,
803  const unsigned int component = 0) const;
804 
809  virtual Tensor<1,dim> gradient (const Point<dim> &p,
810  const unsigned int component = 0) const;
811 
815  virtual double laplacian (const Point<dim> &p,
816  const unsigned int component = 0) const;
817 
818  private:
822  const std::vector<Point<dim> > fourier_coefficients;
823  const std::vector<double> weights;
824  };
825 
826 
835  template <int dim>
836  class CutOffFunctionBase : public Function<dim>
837  {
838  public:
843  static const unsigned int no_component = numbers::invalid_unsigned_int;
844 
851  CutOffFunctionBase (const double radius = 1.,
852  const Point<dim> = Point<dim>(),
853  const unsigned int n_components = 1,
854  const unsigned int select = CutOffFunctionBase<dim>::no_component);
855 
859  void new_center (const Point<dim> &p);
860 
864  void new_radius (const double r);
865 
866  protected:
871 
875  double radius;
876 
881  const unsigned int selected;
882  };
883 
884 
885 
895  template <int dim>
897  {
898  public:
905  CutOffFunctionLinfty (const double radius = 1.,
906  const Point<dim> = Point<dim>(),
907  const unsigned int n_components = 1,
908  const unsigned int select = CutOffFunctionBase<dim>::no_component);
909 
913  virtual double value (const Point<dim> &p,
914  const unsigned int component = 0) const;
915 
919  virtual void value_list (const std::vector<Point<dim> > &points,
920  std::vector<double> &values,
921  const unsigned int component = 0) const;
922 
926  virtual void vector_value_list (const std::vector<Point<dim> > &points,
927  std::vector<Vector<double> > &values) const;
928  };
929 
930 
940  template <int dim>
942  {
943  public:
950  CutOffFunctionW1 (const double radius = 1.,
951  const Point<dim> = Point<dim>(),
952  const unsigned int n_components = 1,
953  const unsigned int select = CutOffFunctionBase<dim>::no_component);
954 
958  virtual double value (const Point<dim> &p,
959  const unsigned int component = 0) const;
960 
964  virtual void value_list (const std::vector<Point<dim> > &points,
965  std::vector<double> &values,
966  const unsigned int component = 0) const;
967 
971  virtual void vector_value_list (const std::vector<Point<dim> > &points,
972  std::vector<Vector<double> > &values) const;
973  };
974 
975 
986  template <int dim>
988  {
989  public:
996  CutOffFunctionCinfty (const double radius = 1.,
997  const Point<dim> = Point<dim>(),
998  const unsigned int n_components = 1,
999  const unsigned int select = CutOffFunctionBase<dim>::no_component);
1000 
1004  virtual double value (const Point<dim> &p,
1005  const unsigned int component = 0) const;
1006 
1010  virtual void value_list (const std::vector<Point<dim> > &points,
1011  std::vector<double> &values,
1012  const unsigned int component = 0) const;
1013 
1017  virtual void vector_value_list (const std::vector<Point<dim> > &points,
1018  std::vector<Vector<double> > &values) const;
1019 
1023  virtual Tensor<1,dim> gradient (const Point<dim> &p,
1024  const unsigned int component = 0) const;
1025  };
1026 
1027 
1028 
1042  template <int dim>
1043  class Monomial : public Function<dim>
1044  {
1045  public:
1053  const unsigned int n_components = 1);
1054 
1058  virtual double value (const Point<dim> &p,
1059  const unsigned int component = 0) const;
1060 
1067  virtual void vector_value (const Point<dim> &p,
1068  Vector<double> &values) const;
1069 
1073  virtual void value_list (const std::vector<Point<dim> > &points,
1074  std::vector<double> &values,
1075  const unsigned int component = 0) const;
1076 
1080  virtual Tensor<1,dim> gradient (const Point<dim> &p,
1081  const unsigned int component = 0) const;
1082 
1083  private:
1088  };
1089 
1090 
1091 
1124  template <int dim>
1126  {
1127  public:
1141  InterpolatedTensorProductGridData (const std::array<std::vector<double>,dim> &coordinate_values,
1143 
1154  virtual
1155  double
1156  value (const Point<dim> &p,
1157  const unsigned int component = 0) const;
1158 
1170  virtual
1172  gradient (const Point<dim> &p,
1173  const unsigned int component = 0) const;
1174 
1175  protected:
1180 
1184  const std::array<std::vector<double>,dim> coordinate_values;
1185 
1190  };
1191 
1192 
1228  template <int dim>
1230  {
1231  public:
1246  InterpolatedUniformGridData (const std::array<std::pair<double,double>,dim> &interval_endpoints,
1247  const std::array<unsigned int,dim> &n_subintervals,
1249 
1260  virtual
1261  double
1262  value (const Point<dim> &p,
1263  const unsigned int component = 0) const;
1264 
1265  private:
1269  const std::array<std::pair<double,double>,dim> interval_endpoints;
1270 
1274  const std::array<unsigned int,dim> n_subintervals;
1275 
1280  };
1281 
1282 
1295  template <int dim>
1296  class Polynomial : public Function<dim>
1297  {
1298  public:
1309  const std::vector<double> &coefficients);
1310 
1314  virtual double value (const Point<dim> &p,
1315  const unsigned int component = 0) const;
1316 
1317 
1321  virtual void value_list (const std::vector<Point<dim> > &points,
1322  std::vector<double> &values,
1323  const unsigned int component = 0) const;
1324 
1328  virtual Tensor<1,dim> gradient (const Point<dim> &p,
1329  const unsigned int component = 0) const;
1330 
1331  private:
1332 
1337 
1341  const std::vector<double> coefficients;
1342  };
1343 
1344 
1345 
1346 }
1347 DEAL_II_NAMESPACE_CLOSE
1348 
1349 #endif
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
const Tensor< 1, dim > fourier_coefficients
Definition: function_lib.h:668
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
static const unsigned int invalid_unsigned_int
Definition: types.h:173
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component) const
virtual double value(const Point< dim > &p, const unsigned int component) const
const std::array< std::pair< double, double >, dim > interval_endpoints
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
const unsigned int n_components
Definition: function.h:154
TableIndices< dim > table_index_of_point(const Point< dim > &p) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
const std::array< unsigned int, dim > n_subintervals
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const
Monomial(const Tensor< 1, dim > &exponents, const unsigned int n_components=1)
Polynomial(const Table< 2, double > &exponents, const std::vector< double > &coefficients)
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
CutOffFunctionLinfty(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component)
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component) const
const Tensor< 1, dim > fourier_coefficients
Definition: function_lib.h:720
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
Definition: function_lib.cc:53
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const
Definition: function_lib.cc:43
virtual void vector_value(const Point< dim > &p, Vector< double > &values) const
CosineFunction(const unsigned int n_components=1)
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
const std::array< std::vector< double >, dim > coordinate_values
virtual double value(const Point< dim > &p, const unsigned int component=0) const
Definition: function_lib.cc:34
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual SymmetricTensor< 2, dim > hessian(const Point< dim > &p, const unsigned int component=0) const
void new_center(const Point< dim > &p)
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
std::size_t memory_consumption() const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
const Table< 2, double > exponents
CutOffFunctionBase(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component)
const std::vector< Point< dim > > fourier_coefficients
Definition: function_lib.h:822
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
virtual void hessian_list(const std::vector< Point< dim > > &points, std::vector< SymmetricTensor< 2, dim > > &hessians, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
const std::vector< double > coefficients
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
const unsigned int selected
Definition: function_lib.h:881
virtual double value(const Point< dim > &p, const unsigned int component=0) const
const Point< dim > direction
Definition: function_lib.h:596
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
const Table< dim, double > data_values
const std::vector< Point< dim > > fourier_coefficients
Definition: function_lib.h:769
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
PillowFunction(const double offset=0.)
virtual void gradient_list(const std::vector< Point< dim > > &points, std::vector< Tensor< 1, dim > > &gradients, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
InterpolatedTensorProductGridData(const std::array< std::vector< double >, dim > &coordinate_values, const Table< dim, double > &data_values)
virtual double value(const Point< dim > &p, const unsigned int component=0) const
static const unsigned int no_component
Definition: function_lib.h:843
virtual double value(const Point< dim > &p, const unsigned int component=0) const
InterpolatedUniformGridData(const std::array< std::pair< double, double >, dim > &interval_endpoints, const std::array< unsigned int, dim > &n_subintervals, const Table< dim, double > &data_values)
FourierCosineFunction(const Tensor< 1, dim > &fourier_coefficients)
virtual double value(const Point< dim > &p, const unsigned int component=0) const
FourierCosineSum(const std::vector< Point< dim > > &fourier_coefficients, const std::vector< double > &weights)
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
FourierSineFunction(const Tensor< 1, dim > &fourier_coefficients)
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
const Tensor< 1, dim > exponents
CutOffFunctionCinfty(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component)
CutOffFunctionW1(const double radius=1., const Point< dim >=Point< dim >(), const unsigned int n_components=1, const unsigned int select=CutOffFunctionBase< dim >::no_component)
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
Definition: function_lib.cc:94
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual void laplacian_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
Definition: function_lib.cc:79
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component) const
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
virtual double value(const Point< dim > &p, const unsigned int component=0) const
virtual double laplacian(const Point< dim > &p, const unsigned int component=0) const
Definition: function_lib.cc:70
virtual void value_list(const std::vector< Point< dim > > &points, std::vector< double > &values, const unsigned int component=0) const
virtual void vector_value_list(const std::vector< Point< dim > > &points, std::vector< Vector< double > > &values) const
JumpFunction(const Point< dim > &direction, const double steepness)
virtual Tensor< 1, dim > gradient(const Point< dim > &p, const unsigned int component=0) const
FourierSineSum(const std::vector< Point< dim > > &fourier_coefficients, const std::vector< double > &weights)