From e41aa3195780349b0981857e8ff63484fea03009 Mon Sep 17 00:00:00 2001 From: hartmann Date: Wed, 15 Dec 1999 15:10:17 +0000 Subject: [PATCH] test of the gaussian quadrature formulae git-svn-id: https://svn.dealii.org/trunk@2064 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/base/Makefile | 20 ++++++++++- tests/base/quadrature_test.cc | 54 ++++++++++++++++++++++++++++++ tests/base/quadrature_test.checked | 8 +++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 tests/base/quadrature_test.cc create mode 100644 tests/base/quadrature_test.checked diff --git a/tests/base/Makefile b/tests/base/Makefile index b8a900ff9c..f1ff209aff 100644 --- a/tests/base/Makefile +++ b/tests/base/Makefile @@ -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 index 0000000000..729c4ec735 --- /dev/null +++ b/tests/base/quadrature_test.cc @@ -0,0 +1,54 @@ +/* $Id$ */ +/* Ralf Hartmann, University of Heidelberg, Feb 99 */ + +#include +#include + +#include +#include +#include + +int main(int,char) +{ + ofstream logfile("quadrature_test.output"); + deallog.attach(logfile); + deallog.depth_console(0); + + vector *> 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 > &points=quadrature->get_quad_points(); + const vector &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; xn_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 index 0000000000..163e8b6937 --- /dev/null +++ b/tests/base/quadrature_test.checked @@ -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 -- 2.39.5