]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Restrict wave_number in constructor of Bessel1 to nonnegative values 7003/head
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 30 Jul 2018 21:31:55 +0000 (23:31 +0200)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 30 Jul 2018 21:32:47 +0000 (23:32 +0200)
include/deal.II/base/function_bessel.h
source/base/function_lib.cc
tests/base/bessel_function_values.cc
tests/base/bessel_function_values.output

index 933a942c8506374d7a294d3c470eb2da3acbfcc9..eb8824b6816db64b36ba34289c4ab59aabaf5a94 100644 (file)
@@ -36,19 +36,26 @@ namespace Functions
   class Bessel1 : public Function<dim>
   {
   public:
+    /**
+     * Constructor. @p wave_number must be nonnegative.
+     */
     Bessel1(const unsigned int order,
             const double       wave_number,
             const Point<dim>   center = Point<dim>());
+
     virtual double
     value(const Point<dim> & points,
           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
     gradient_list(const std::vector<Point<dim>> &points,
                   std::vector<Tensor<1, dim>> &  gradients,
index 465cde311254944eacc8be7fa8d2b64bc77d8579..663714a71c4be83fe66b8f779e6aba9ec78e28e7 100644 (file)
@@ -2276,7 +2276,9 @@ namespace Functions
     : order(order)
     , wave_number(wave_number)
     , center(center)
-  {}
+  {
+    Assert(wave_number >= 0., ExcMessage("wave_number must be nonnegative!"));
+  }
 
   template <int dim>
   double
index 0a0fd4529b2891fa86a624b9debb49cf08fa3619..db8f9da6c6eeacf84f44fcd7294a9e823a13b039 100644 (file)
@@ -28,7 +28,7 @@ main()
   initlog();
 
   for (unsigned int order = 0; order < 3; order += 1)
-    for (double wave_n = -4.0; wave_n < 4.0; wave_n += 1.5)
+    for (double wave_n = 0.; wave_n < 4.0; wave_n += 1.5)
       for (double x = 1.0; x < 2.0; x += 0.5)
         for (double y = 2.0; y < 3.0; y += 0.5)
           {
index afd64b99d830e9f6563320fdd8e59a8917ef56b9..67708be4b1a83cb0729c46b78187f6cd37091921 100644 (file)
 
-DEAL::value at (1.10000, 2.10000) = 0.921586
-DEAL::gradient at (1.10000, 2.10000) = -0.768424 -0.768424
-DEAL::value at (1.10000, 2.60000) = 0.921586
-DEAL::gradient at (1.10000, 2.60000) = -0.768424 -0.768424
-DEAL::value at (1.60000, 2.10000) = 0.921586
-DEAL::gradient at (1.60000, 2.10000) = -0.768424 -0.768424
-DEAL::value at (1.60000, 2.60000) = 0.921586
-DEAL::gradient at (1.60000, 2.60000) = -0.768424 -0.768424
-DEAL::value at (1.10000, 2.10000) = 0.968993
-DEAL::gradient at (1.10000, 2.10000) = -0.307643 -0.307643
-DEAL::value at (1.10000, 2.60000) = 0.968993
-DEAL::gradient at (1.10000, 2.60000) = -0.307643 -0.307643
-DEAL::value at (1.60000, 2.10000) = 0.968993
-DEAL::gradient at (1.60000, 2.10000) = -0.307643 -0.307643
-DEAL::value at (1.60000, 2.60000) = 0.968993
-DEAL::gradient at (1.60000, 2.60000) = -0.307643 -0.307643
-DEAL::value at (1.10000, 2.10000) = 0.995006
-DEAL::gradient at (1.10000, 2.10000) = -0.0498751 -0.0498751
-DEAL::value at (1.10000, 2.60000) = 0.995006
-DEAL::gradient at (1.10000, 2.60000) = -0.0498751 -0.0498751
-DEAL::value at (1.60000, 2.10000) = 0.995006
-DEAL::gradient at (1.60000, 2.10000) = -0.0498751 -0.0498751
-DEAL::value at (1.60000, 2.60000) = 0.995006
-DEAL::gradient at (1.60000, 2.60000) = -0.0498751 -0.0498751
-DEAL::value at (1.10000, 2.10000) = 0.998750
-DEAL::gradient at (1.10000, 2.10000) = -0.0124922 -0.0124922
-DEAL::value at (1.10000, 2.60000) = 0.998750
-DEAL::gradient at (1.10000, 2.60000) = -0.0124922 -0.0124922
-DEAL::value at (1.60000, 2.10000) = 0.998750
-DEAL::gradient at (1.60000, 2.10000) = -0.0124922 -0.0124922
-DEAL::value at (1.60000, 2.60000) = 0.998750
-DEAL::gradient at (1.60000, 2.60000) = -0.0124922 -0.0124922
-DEAL::value at (1.10000, 2.10000) = 0.980100
-DEAL::gradient at (1.10000, 2.10000) = -0.198007 -0.198007
-DEAL::value at (1.10000, 2.60000) = 0.980100
-DEAL::gradient at (1.10000, 2.60000) = -0.198007 -0.198007
-DEAL::value at (1.60000, 2.10000) = 0.980100
-DEAL::gradient at (1.60000, 2.10000) = -0.198007 -0.198007
-DEAL::value at (1.60000, 2.60000) = 0.980100
-DEAL::gradient at (1.60000, 2.60000) = -0.198007 -0.198007
-DEAL::value at (1.10000, 2.10000) = 0.939682
-DEAL::gradient at (1.10000, 2.10000) = -0.593933 -0.593933
-DEAL::value at (1.10000, 2.60000) = 0.939682
-DEAL::gradient at (1.10000, 2.60000) = -0.593933 -0.593933
-DEAL::value at (1.60000, 2.10000) = 0.939682
-DEAL::gradient at (1.60000, 2.10000) = -0.593933 -0.593933
-DEAL::value at (1.60000, 2.60000) = 0.939682
-DEAL::gradient at (1.60000, 2.60000) = -0.593933 -0.593933
-DEAL::value at (1.10000, 2.10000) = -0.271679
-DEAL::gradient at (1.10000, 2.10000) = -1.24824 -1.24824
-DEAL::value at (1.10000, 2.60000) = -0.271679
-DEAL::gradient at (1.10000, 2.60000) = -1.24824 -1.24824
-DEAL::value at (1.60000, 2.10000) = -0.271679
-DEAL::gradient at (1.60000, 2.10000) = -1.24824 -1.24824
-DEAL::value at (1.60000, 2.60000) = -0.271679
-DEAL::gradient at (1.60000, 2.60000) = -1.24824 -1.24824
-DEAL::value at (1.10000, 2.10000) = -0.174029
-DEAL::gradient at (1.10000, 2.10000) = -0.842810 -0.842810
-DEAL::value at (1.10000, 2.60000) = -0.174029
-DEAL::gradient at (1.10000, 2.60000) = -0.842810 -0.842810
-DEAL::value at (1.60000, 2.10000) = -0.174029
-DEAL::gradient at (1.60000, 2.10000) = -0.842810 -0.842810
-DEAL::value at (1.60000, 2.60000) = -0.174029
-DEAL::gradient at (1.60000, 2.60000) = -0.842810 -0.842810
-DEAL::value at (1.10000, 2.10000) = -0.0705340
-DEAL::gradient at (1.10000, 2.10000) = -0.350905 -0.350905
-DEAL::value at (1.10000, 2.60000) = -0.0705340
-DEAL::gradient at (1.10000, 2.60000) = -0.350905 -0.350905
-DEAL::value at (1.60000, 2.10000) = -0.0705340
-DEAL::gradient at (1.60000, 2.10000) = -0.350905 -0.350905
-DEAL::value at (1.60000, 2.60000) = -0.0705340
-DEAL::gradient at (1.60000, 2.60000) = -0.350905 -0.350905
-DEAL::value at (1.10000, 2.10000) = 0.0353332
-DEAL::gradient at (1.10000, 2.10000) = 0.176445 0.176445
-DEAL::value at (1.10000, 2.60000) = 0.0353332
-DEAL::gradient at (1.10000, 2.60000) = 0.176445 0.176445
-DEAL::value at (1.60000, 2.10000) = 0.0353332
-DEAL::gradient at (1.60000, 2.10000) = 0.176445 0.176445
-DEAL::value at (1.60000, 2.60000) = 0.0353332
-DEAL::gradient at (1.60000, 2.60000) = 0.176445 0.176445
-DEAL::value at (1.10000, 2.10000) = 0.140012
-DEAL::gradient at (1.10000, 2.10000) = 0.686011 0.686011
-DEAL::value at (1.10000, 2.60000) = 0.140012
-DEAL::gradient at (1.10000, 2.60000) = 0.686011 0.686011
-DEAL::value at (1.60000, 2.10000) = 0.140012
-DEAL::gradient at (1.60000, 2.10000) = 0.686011 0.686011
-DEAL::value at (1.60000, 2.60000) = 0.140012
-DEAL::gradient at (1.60000, 2.60000) = 0.686011 0.686011
-DEAL::value at (1.10000, 2.10000) = 0.239985
-DEAL::gradient at (1.10000, 2.10000) = 1.12567 1.12567
-DEAL::value at (1.10000, 2.60000) = 0.239985
-DEAL::gradient at (1.10000, 2.60000) = 1.12567 1.12567
-DEAL::value at (1.60000, 2.10000) = 0.239985
-DEAL::gradient at (1.60000, 2.10000) = 1.12567 1.12567
-DEAL::value at (1.60000, 2.60000) = 0.239985
-DEAL::gradient at (1.60000, 2.60000) = 1.12567 1.12567
-DEAL::value at (1.10000, 2.10000) = 0.0389439
-DEAL::gradient at (1.10000, 2.10000) = 0.378984 0.378984
-DEAL::value at (1.10000, 2.60000) = 0.0389439
-DEAL::gradient at (1.10000, 2.60000) = 0.378984 0.378984
-DEAL::value at (1.60000, 2.10000) = 0.0389439
-DEAL::gradient at (1.60000, 2.10000) = 0.378984 0.378984
-DEAL::value at (1.60000, 2.60000) = 0.0389439
-DEAL::gradient at (1.60000, 2.60000) = 0.378984 0.378984
-DEAL::value at (1.10000, 2.10000) = 0.0154629
-DEAL::gradient at (1.10000, 2.10000) = 0.153014 0.153014
-DEAL::value at (1.10000, 2.60000) = 0.0154629
-DEAL::gradient at (1.10000, 2.60000) = 0.153014 0.153014
-DEAL::value at (1.60000, 2.10000) = 0.0154629
-DEAL::gradient at (1.60000, 2.10000) = 0.153014 0.153014
-DEAL::value at (1.60000, 2.60000) = 0.0154629
-DEAL::gradient at (1.60000, 2.60000) = 0.153014 0.153014
-DEAL::value at (1.10000, 2.10000) = 0.00249584
-DEAL::gradient at (1.10000, 2.10000) = 0.0249167 0.0249167
-DEAL::value at (1.10000, 2.60000) = 0.00249584
-DEAL::gradient at (1.10000, 2.60000) = 0.0249167 0.0249167
-DEAL::value at (1.60000, 2.10000) = 0.00249584
-DEAL::gradient at (1.60000, 2.10000) = 0.0249167 0.0249167
-DEAL::value at (1.60000, 2.60000) = 0.00249584
-DEAL::gradient at (1.60000, 2.60000) = 0.0249167 0.0249167
-DEAL::value at (1.10000, 2.10000) = 0.000624740
-DEAL::gradient at (1.10000, 2.10000) = 0.00624479 0.00624479
-DEAL::value at (1.10000, 2.60000) = 0.000624740
-DEAL::gradient at (1.10000, 2.60000) = 0.00624479 0.00624479
-DEAL::value at (1.60000, 2.10000) = 0.000624740
-DEAL::gradient at (1.60000, 2.10000) = 0.00624479 0.00624479
-DEAL::value at (1.60000, 2.60000) = 0.000624740
-DEAL::gradient at (1.60000, 2.60000) = 0.00624479 0.00624479
-DEAL::value at (1.10000, 2.10000) = 0.00993350
-DEAL::gradient at (1.10000, 2.10000) = 0.0986717 0.0986717
-DEAL::value at (1.10000, 2.60000) = 0.00993350
-DEAL::gradient at (1.10000, 2.60000) = 0.0986717 0.0986717
-DEAL::value at (1.60000, 2.10000) = 0.00993350
-DEAL::gradient at (1.60000, 2.10000) = 0.0986717 0.0986717
-DEAL::value at (1.60000, 2.60000) = 0.00993350
-DEAL::gradient at (1.60000, 2.60000) = 0.0986717 0.0986717
-DEAL::value at (1.10000, 2.10000) = 0.0300045
-DEAL::gradient at (1.10000, 2.10000) = 0.293888 0.293888
-DEAL::value at (1.10000, 2.60000) = 0.0300045
-DEAL::gradient at (1.10000, 2.60000) = 0.293888 0.293888
-DEAL::value at (1.60000, 2.10000) = 0.0300045
-DEAL::gradient at (1.60000, 2.10000) = 0.293888 0.293888
-DEAL::value at (1.60000, 2.60000) = 0.0300045
-DEAL::gradient at (1.60000, 2.60000) = 0.293888 0.293888
+DEAL::value at (1.10000, 2.10000) = 1.00000
+DEAL::gradient at (1.10000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.60000) = 1.00000
+DEAL::gradient at (1.10000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.10000) = 1.00000
+DEAL::gradient at (1.60000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.60000) = 1.00000
+DEAL::gradient at (1.60000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.10000) = 0.988782
+DEAL::gradient at (1.10000, 2.10000) = -0.111868 -0.111868
+DEAL::value at (1.10000, 2.60000) = 0.988782
+DEAL::gradient at (1.10000, 2.60000) = -0.111868 -0.111868
+DEAL::value at (1.60000, 2.10000) = 0.988782
+DEAL::gradient at (1.60000, 2.10000) = -0.111868 -0.111868
+DEAL::value at (1.60000, 2.60000) = 0.988782
+DEAL::gradient at (1.60000, 2.60000) = -0.111868 -0.111868
+DEAL::value at (1.10000, 2.10000) = 0.955504
+DEAL::gradient at (1.10000, 2.10000) = -0.439951 -0.439951
+DEAL::value at (1.10000, 2.60000) = 0.955504
+DEAL::gradient at (1.10000, 2.60000) = -0.439951 -0.439951
+DEAL::value at (1.60000, 2.10000) = 0.955504
+DEAL::gradient at (1.60000, 2.10000) = -0.439951 -0.439951
+DEAL::value at (1.60000, 2.60000) = 0.955504
+DEAL::gradient at (1.60000, 2.60000) = -0.439951 -0.439951
+DEAL::value at (1.10000, 2.10000) = 0.00000
+DEAL::gradient at (1.10000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.60000) = 0.00000
+DEAL::gradient at (1.10000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.10000) = 0.00000
+DEAL::gradient at (1.60000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.60000) = 0.00000
+DEAL::gradient at (1.60000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.10000) = 0.105471
+DEAL::gradient at (1.10000, 2.10000) = 0.521409 0.521409
+DEAL::value at (1.10000, 2.60000) = 0.105471
+DEAL::gradient at (1.10000, 2.60000) = 0.521409 0.521409
+DEAL::value at (1.60000, 2.10000) = 0.105471
+DEAL::gradient at (1.60000, 2.10000) = 0.521409 0.521409
+DEAL::value at (1.60000, 2.60000) = 0.105471
+DEAL::gradient at (1.60000, 2.60000) = 0.521409 0.521409
+DEAL::value at (1.10000, 2.10000) = 0.207395
+DEAL::gradient at (1.10000, 2.10000) = 0.989956 0.989956
+DEAL::value at (1.10000, 2.60000) = 0.207395
+DEAL::gradient at (1.10000, 2.60000) = 0.989956 0.989956
+DEAL::value at (1.60000, 2.10000) = 0.207395
+DEAL::gradient at (1.60000, 2.10000) = 0.989956 0.989956
+DEAL::value at (1.60000, 2.60000) = 0.207395
+DEAL::gradient at (1.60000, 2.60000) = 0.989956 0.989956
+DEAL::value at (1.10000, 2.10000) = 0.00000
+DEAL::gradient at (1.10000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.60000) = 0.00000
+DEAL::gradient at (1.10000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.10000) = 0.00000
+DEAL::gradient at (1.60000, 2.10000) = 0.00000 0.00000
+DEAL::value at (1.60000, 2.60000) = 0.00000
+DEAL::gradient at (1.60000, 2.60000) = 0.00000 0.00000
+DEAL::value at (1.10000, 2.10000) = 0.00560394
+DEAL::gradient at (1.10000, 2.10000) = 0.0558290 0.0558290
+DEAL::value at (1.10000, 2.60000) = 0.00560394
+DEAL::gradient at (1.10000, 2.60000) = 0.0558290 0.0558290
+DEAL::value at (1.60000, 2.10000) = 0.00560394
+DEAL::gradient at (1.60000, 2.10000) = 0.0558290 0.0558290
+DEAL::value at (1.60000, 2.60000) = 0.00560394
+DEAL::gradient at (1.60000, 2.60000) = 0.0558290 0.0558290
+DEAL::value at (1.10000, 2.10000) = 0.0221644
+DEAL::gradient at (1.10000, 2.10000) = 0.218307 0.218307
+DEAL::value at (1.10000, 2.60000) = 0.0221644
+DEAL::gradient at (1.10000, 2.60000) = 0.218307 0.218307
+DEAL::value at (1.60000, 2.10000) = 0.0221644
+DEAL::gradient at (1.60000, 2.10000) = 0.218307 0.218307
+DEAL::value at (1.60000, 2.60000) = 0.0221644
+DEAL::gradient at (1.60000, 2.60000) = 0.218307 0.218307

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.