aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhinder <hinder@4f5cb9a8-4dd8-4c2d-9bbd-173fa4467843>2013-10-09 17:56:08 +0000
committerhinder <hinder@4f5cb9a8-4dd8-4c2d-9bbd-173fa4467843>2013-10-09 17:56:08 +0000
commitb057717283eddba5098ef07264602e367a2e665d (patch)
treeb61b062a3d606b609d49e3bb1115b8dc8d824af1
parent86fa90915444a7c4b9571a27978f5e11724ba2a0 (diff)
tests.cc: Refactor convergence test code
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/Multipole/trunk@95 4f5cb9a8-4dd8-4c2d-9bbd-173fa4467843
-rw-r--r--src/tests.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/tests.cc b/src/tests.cc
index b63e18b..21542d9 100644
--- a/src/tests.cc
+++ b/src/tests.cc
@@ -10,7 +10,7 @@
#include "utils.hh"
#include "integrate.hh"
-static CCTK_REAL test_simpson_integral(int n)
+static CCTK_REAL test_integral(int n, CCTK_REAL (*integration_fn) (const CCTK_REAL *, int, int, CCTK_REAL, CCTK_REAL))
{
const int nx = n;
const int ny = n;
@@ -35,25 +35,28 @@ static CCTK_REAL test_simpson_integral(int n)
}
}
- const CCTK_REAL result = Simpson2DIntegral(f, nx, ny, dx, dy);
+ const CCTK_REAL result = integration_fn(f, nx, ny, dx, dy);
delete [] f;
return result;
}
-
-void Multipole_TestSimpson(CCTK_ARGUMENTS)
+CCTK_REAL integration_convergence_order(CCTK_REAL (*integration_fn) (const CCTK_REAL *, int, int, CCTK_REAL, CCTK_REAL))
{
- DECLARE_CCTK_ARGUMENTS;
-
const int n1 = 100;
const int n2 = 200;
const CCTK_REAL PI = acos(-1.0);
- const CCTK_REAL result1 = test_simpson_integral(100);
- const CCTK_REAL result2 = test_simpson_integral(200);
+ const CCTK_REAL result1 = test_integral(100, integration_fn);
+ const CCTK_REAL result2 = test_integral(200, integration_fn);
const CCTK_REAL exact = 1./24 + 1./(64 * pow(PI,2));
const CCTK_REAL error1 = fabs(result1 - exact);
const CCTK_REAL error2 = fabs(result2 - exact);
- *test_simpson_convergence_order = log10(error1/error2) / log10((CCTK_REAL) n2/n1);
+ return log10(error1/error2) / log10((CCTK_REAL) n2/n1);
+}
+
+void Multipole_TestSimpson(CCTK_ARGUMENTS)
+{
+ DECLARE_CCTK_ARGUMENTS;
+ *test_simpson_convergence_order = integration_convergence_order(&Simpson2DIntegral);
}
// void Multipole_TestIntegrate(CCTK_ARGUMENTS)