diff options
author | rhaas <rhaas@b2a53a04-0f4f-0410-87ed-f9f25ced00cf> | 2013-06-11 05:44:21 +0000 |
---|---|---|
committer | rhaas <rhaas@b2a53a04-0f4f-0410-87ed-f9f25ced00cf> | 2013-06-11 05:44:21 +0000 |
commit | 8bcc7054a99a7902fe75518db1de1ca0704dad79 (patch) | |
tree | a9b0e9f5b264a6bd85a2a1a98d888364c2fde254 /src/TwoPunctures.h | |
parent | 3e5a7c71b5c9a4d85b7c19731a866869047b3903 (diff) |
implement UIUC's speed-up in "evaluation" of spectral solution
The accompanying svn patch applies the recently released refinement of
TwoPunctures by Vasileios Paschalidis and Zach Etienne at UIUC, greatly
reducing the time taken to properly apply the solution of the spectral solve to
all grid points.
From the abstract of the notes in arXiv:1304.0457:
TwoPunctures is perhaps the most widely-adopted code for generating binary
black hole "puncture" initial data and interpolating these (spectral) data onto
evolution grids. In typical usage, the bulk of this code's run time is spent in
its spectral interpolation routine. We announce a new publicly-available
spectral interpolation routine that improves the performance of the original
interpolation routine by a factor of ~100, yielding results consistent with the
original spectral interpolation routine to roundoff precision. This note serves
as a guide for installing this routine both in the original standalone
TwoPunctures code and the Einstein Toolkit supported version of this code.
Patch kindly provided by Bernard Kelly
Original code by Vasileios Paschalidis and Zach Etienne
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/TwoPunctures/trunk@133 b2a53a04-0f4f-0410-87ed-f9f25ced00cf
Diffstat (limited to 'src/TwoPunctures.h')
-rw-r--r-- | src/TwoPunctures.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/TwoPunctures.h b/src/TwoPunctures.h index 79feff3..0787978 100644 --- a/src/TwoPunctures.h +++ b/src/TwoPunctures.h @@ -50,6 +50,13 @@ CCTK_REAL PunctTaylorExpandAtArbitPosition (int ivar, int nvar, int n1, CCTK_REAL PunctIntPolAtArbitPosition (int ivar, int nvar, int n1, int n2, int n3, derivs v, CCTK_REAL x, CCTK_REAL y, CCTK_REAL z); +void SpecCoef(int n1, int n2, int n3, int ivar, CCTK_REAL *v, CCTK_REAL *cf); +CCTK_REAL PunctEvalAtArbitPositionFast (CCTK_REAL *v, int ivar, CCTK_REAL A, CCTK_REAL B, CCTK_REAL phi, + int nvar, int n1, int n2, int n3); +CCTK_REAL PunctIntPolAtArbitPositionFast (int ivar, int nvar, int n1, + int n2, int n3, derivs v, CCTK_REAL x, + CCTK_REAL y, CCTK_REAL z); + /* Routines in "CoordTransf.c"*/ void AB_To_XR (int nvar, CCTK_REAL A, CCTK_REAL B, CCTK_REAL *X, |