aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)