]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
test of the gaussian quadrature formulae
authorhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 15 Dec 1999 15:10:17 +0000 (15:10 +0000)
committerhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 15 Dec 1999 15:10:17 +0000 (15:10 +0000)
git-svn-id: https://svn.dealii.org/trunk@2064 0785d39b-7218-0410-832d-ea1e28bc413d

tests/base/Makefile
tests/base/quadrature_test.cc [new file with mode: 0644]
tests/base/quadrature_test.checked [new file with mode: 0644]

index b8a900ff9c6eb62621e891d8c3047fa75885f252..f1ff209affe662e22d1e42791de3268f146366cf 100644 (file)
@@ -49,7 +49,7 @@ endif
        @$(CXX) $(flags) -c $< -o $@
 
 
-all: logtest.check reference.check tensor.check
+all: logtest.check reference.check tensor.check quadrature_test.check
 exe: $(all:.check=.testcase)
 output: $(all:.check=.output)
 ############################################################
@@ -111,6 +111,21 @@ reference.testcase: $(reference-o-files) $(libraries)
        @$(CXX) $(flags) -o $@ $^
 
 
+############################################################
+
+
+quadrature_test-cc-files = quadrature_test.cc
+
+ifeq ($(debug-mode),on)
+quadrature_test-o-files = $(quadrature_test-cc-files:.cc=.go)
+else
+quadrature_test-o-files = $(quadrature_test-cc-files:.cc=.o)
+endif
+
+quadrature_test.testcase: $(quadrature_test-o-files) $(libraries)
+       @echo =====linking======= $<
+       @$(CXX) $(flags) -o $@ $^
+
 
 ############################################################
 # Continue with other targets if needed
@@ -169,3 +184,6 @@ Make.depend: $(all-cc-files)
        @perl -pi~ -e 's/(^[^.]+)\.o:/\1.o \1.go:/;' $@
 
 include Make.depend
+
+
+
diff --git a/tests/base/quadrature_test.cc b/tests/base/quadrature_test.cc
new file mode 100644 (file)
index 0000000..729c4ec
--- /dev/null
@@ -0,0 +1,54 @@
+/* $Id$   */
+/*            Ralf Hartmann, University of Heidelberg, Feb 99         */
+
+#include <iostream>
+#include <fstream>
+
+#include <base/logstream.h>
+#include <base/quadrature_lib.h>
+#include <cmath>
+
+int main(int,char)
+{
+  ofstream logfile("quadrature_test.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  vector<Quadrature<1> *> gauss_quadratures(9);
+  gauss_quadratures[2]=new QGauss2<1>();
+  gauss_quadratures[3]=new QGauss3<1>();
+  gauss_quadratures[4]=new QGauss4<1>();
+  gauss_quadratures[5]=new QGauss5<1>();
+  gauss_quadratures[6]=new QGauss6<1>();
+  gauss_quadratures[7]=new QGauss7<1>();
+  gauss_quadratures[8]=new QGauss8<1>();
+  
+  for (unsigned int n=2; n<9; ++n)
+    {
+      Quadrature<1> *quadrature=gauss_quadratures[n];
+      const vector<Point<1> > &points=quadrature->get_quad_points();
+      const vector<double> &weights=quadrature->get_weights();
+
+      deallog << "Gauss" << n;
+      
+      unsigned int i=0;
+      double quadrature_int=0, exact_int=0;
+      do
+       {
+         ++i;
+
+         quadrature_int=0;
+         for (unsigned int x=0; x<quadrature->n_quadrature_points; ++x)
+           quadrature_int+=pow(points[x](0), i)*weights[x];
+
+                                          // the exact integral is 1/(i+1)
+         exact_int=1./(i+1);
+       }
+      while (fabs(quadrature_int-exact_int)<1e-15);
+
+      deallog << " is exact for polynomials of degree " << i-1 << endl;
+    }
+}
+
+
+
diff --git a/tests/base/quadrature_test.checked b/tests/base/quadrature_test.checked
new file mode 100644 (file)
index 0000000..163e8b6
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL::Gauss2 is exact for polynomials of degree 3
+DEAL::Gauss3 is exact for polynomials of degree 5
+DEAL::Gauss4 is exact for polynomials of degree 7
+DEAL::Gauss5 is exact for polynomials of degree 9
+DEAL::Gauss6 is exact for polynomials of degree 11
+DEAL::Gauss7 is exact for polynomials of degree 13
+DEAL::Gauss8 is exact for polynomials of degree 0

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.