[Commits] [svn:einsteintoolkit] Multipole/trunk/src/ (Rev. 95)

ian.hinder at aei.mpg.de ian.hinder at aei.mpg.de
Wed Oct 9 12:56:08 CDT 2013


User: hinder
Date: 2013/10/09 12:56 PM

Modified:
 /trunk/src/
  tests.cc

Log:
 tests.cc: Refactor convergence test code

File Changes:

Directory: /trunk/src/
======================

File [modified]: tests.cc
Delta lines: +12 -9
===================================================================
--- trunk/src/tests.cc	2013-10-09 17:56:00 UTC (rev 94)
+++ trunk/src/tests.cc	2013-10-09 17:56:08 UTC (rev 95)
@@ -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,27 +35,30 @@
     }
   }
 
-  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)
 // {
 //   const int n = 100;



More information about the Commits mailing list