From b87239199b05fdf7d4fbd19919b5794d0d21da70 Mon Sep 17 00:00:00 2001 From: jthorn Date: Tue, 6 May 2003 11:34:49 +0000 Subject: add prototypes for a bunch of un-prototyped functions some code cleanups in Misner_points.c *** I think there is still a quasi-infinite memory leak *** (c. 100 megabytes/second on a xeon) somewhere around the function *** fill_iso() in Misner_points.c git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/IDAnalyticBH/trunk@129 6a3ddf76-46e1-4315-99d9-bc56cac1ef84 --- src/BrillLindquist.c | 8 +- src/IDAnalyticBH.h | 33 +++++++ src/Kerr.c | 5 +- src/Misner_multiple.c | 64 ++++++------ src/Misner_points.c | 262 ++++++++++++++++++++++++++++++-------------------- src/Misner_standard.c | 7 +- src/ParamChecker.c | 11 +-- src/Schwarzschild.c | 5 +- src/misc.c | 2 - 9 files changed, 225 insertions(+), 172 deletions(-) diff --git a/src/BrillLindquist.c b/src/BrillLindquist.c index 6793fb3..cdf59b1 100644 --- a/src/BrillLindquist.c +++ b/src/BrillLindquist.c @@ -8,11 +8,10 @@ @version $Header$ @@*/ -#include "cctk.h" - #include #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -21,13 +20,8 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_BrillLindquist_c) - -#define SQR(a) ((a)*(a)) - #define MAX_HOLES 4 -void BrillLindquist(CCTK_ARGUMENTS); - /*@@ @routine BrillLindquist @date diff --git a/src/IDAnalyticBH.h b/src/IDAnalyticBH.h index 79dfe44..848836d 100644 --- a/src/IDAnalyticBH.h +++ b/src/IDAnalyticBH.h @@ -6,6 +6,39 @@ externally visible routines. @enddesc @version $Header$ + @history + @hdate 6.May.2003 + @hauthor Jonathan Thornburg + @hdesc add lots more prototypes + @endhistory @@*/ +/******************************************************************************/ + +#define SQR(a) ((a)*(a)) + +/******************************************************************************/ + +/* + * prototypes for routines called directly by the Cactus scheduler + */ + +void IDAnalyticBH_ParamChecker(CCTK_ARGUMENTS); /* ParamChecker.c */ +void Schwarzschild(CCTK_ARGUMENTS); /* Schwarzschild.c */ +void KerrID(CCTK_ARGUMENTS); /* Kerr.c */ +void BrillLindquist(CCTK_ARGUMENTS); /* BrillLindquist.c */ +void Misner_standard(CCTK_ARGUMENTS); /* Misner_standard.c */ +void Misner_multiple(CCTK_ARGUMENTS); /* Misner_multiple.c */ + +/******************************************************************************/ + +/* + * prototypes for other routines visible outside their source files + */ + +/* Misner_points.c */ +void Misner_init(int n, CCTK_REAL mu, int terms); +CCTK_REAL MisnerEvalPsi(CCTK_REAL x, CCTK_REAL y, CCTK_REAL z); + +/* misc.c */ void IDAnalyticBH_zero_CCTK_REAL_array(int N, CCTK_REAL A[]); diff --git a/src/Kerr.c b/src/Kerr.c index b1c7ee9..22f1ea7 100644 --- a/src/Kerr.c +++ b/src/Kerr.c @@ -8,12 +8,11 @@ @version $Header$ @@*/ -#include "cctk.h" - #include #include #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -24,8 +23,6 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_Kerr_c) -void KerrID(CCTK_ARGUMENTS); - /*@@ @routine KerrID @date August 2000 diff --git a/src/Misner_multiple.c b/src/Misner_multiple.c index bac6ea0..db0ec68 100644 --- a/src/Misner_multiple.c +++ b/src/Misner_multiple.c @@ -8,10 +8,9 @@ @version $Header$ @@*/ -#include "cctk.h" - #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -21,12 +20,6 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_Misner_multiple_c) -#define SQR(a) ((a)*(a)) - -void Misner_init(int n, CCTK_REAL mu, int terms); -void MisnerEvalPsi(CCTK_REAL x, CCTK_REAL y, CCTK_REAL z, CCTK_REAL *res); -void Misner_multiple(CCTK_ARGUMENTS); - /*@@ @routine Misner_multiple @date @@ -38,6 +31,8 @@ void Misner_multiple(CCTK_ARGUMENTS); @history @hdate Fri Apr 26 10:04:05 2002 @hauthor Tom Goodale @hdesc Changed to use new StaticConformal stuff + @hdate 6.May.2003 @hauthor Jonathan Thornburg + @hdesc code cleanups @endhistory @@*/ void Misner_multiple(CCTK_ARGUMENTS) @@ -48,10 +43,9 @@ void Misner_multiple(CCTK_ARGUMENTS) int i, npoints; CCTK_REAL xval, yval, zval; CCTK_REAL inv_psi, tmp0, tmp1, tmp2, tmp3, tmp4; - const CCTK_REAL nm_eps = 1e-6, /* finite differencing step*/ - halved_inv_nm_eps = 5e+5, - inv_nm_eps_squared = 1e+12; - const CCTK_REAL one = 1.0; + const CCTK_REAL nm_eps = 1e-6; /* finite differencing step*/ + const CCTK_REAL halved_inv_nm_eps = 0.5 / nm_eps; + const CCTK_REAL inv_nm_eps_squared = 1.0 / SQR(nm_eps); int make_conformal_derivs; @@ -104,7 +98,7 @@ void Misner_multiple(CCTK_ARGUMENTS) yval = y[i]; zval = z[i]; - MisnerEvalPsi(xval, yval, zval, &tmp0); + tmp0 = MisnerEvalPsi(xval, yval, zval); psi[i] = tmp0; /* Only calculate derivatives of psi if required @@ -112,8 +106,8 @@ void Misner_multiple(CCTK_ARGUMENTS) */ if (make_conformal_derivs) { - MisnerEvalPsi(xval+nm_eps,yval,zval,&tmp1); - MisnerEvalPsi(xval-nm_eps,yval,zval,&tmp2); + tmp1 = MisnerEvalPsi(xval+nm_eps,yval,zval); + tmp2 = MisnerEvalPsi(xval-nm_eps,yval,zval); psix[i] = (tmp1-tmp2) * halved_inv_nm_eps; if(*conformal_state > 2) @@ -121,8 +115,8 @@ void Misner_multiple(CCTK_ARGUMENTS) psixx[i] = (tmp1+tmp2-2.0*tmp0) * inv_nm_eps_squared; } - MisnerEvalPsi(xval,yval+nm_eps,zval,&tmp1); - MisnerEvalPsi(xval,yval-nm_eps,zval,&tmp2); + tmp1 = MisnerEvalPsi(xval,yval+nm_eps,zval); + tmp2 = MisnerEvalPsi(xval,yval-nm_eps,zval); psiy[i] = (tmp1-tmp2) * halved_inv_nm_eps; if(*conformal_state > 2) @@ -130,8 +124,8 @@ void Misner_multiple(CCTK_ARGUMENTS) psiyy[i] = (tmp1+tmp2-2.0*tmp0) * inv_nm_eps_squared; } - MisnerEvalPsi(xval,yval,zval+nm_eps,&tmp1); - MisnerEvalPsi(xval,yval,zval-nm_eps,&tmp2); + tmp1 = MisnerEvalPsi(xval,yval,zval+nm_eps); + tmp2 = MisnerEvalPsi(xval,yval,zval-nm_eps); psiz[i] = (tmp1-tmp2) * halved_inv_nm_eps; if(*conformal_state > 2) @@ -141,22 +135,22 @@ void Misner_multiple(CCTK_ARGUMENTS) if(*conformal_state > 2) { - MisnerEvalPsi(xval+nm_eps,yval+nm_eps,zval,&tmp1); - MisnerEvalPsi(xval+nm_eps,yval-nm_eps,zval,&tmp2); - MisnerEvalPsi(xval-nm_eps,yval+nm_eps,zval,&tmp3); - MisnerEvalPsi(xval-nm_eps,yval-nm_eps,zval,&tmp4); + tmp1 = MisnerEvalPsi(xval+nm_eps,yval+nm_eps,zval); + tmp2 = MisnerEvalPsi(xval+nm_eps,yval-nm_eps,zval); + tmp3 = MisnerEvalPsi(xval-nm_eps,yval+nm_eps,zval); + tmp4 = MisnerEvalPsi(xval-nm_eps,yval-nm_eps,zval); psixy[i] = 0.25*(tmp1-tmp2-tmp3+tmp4) * inv_nm_eps_squared; - MisnerEvalPsi(xval,yval+nm_eps,zval+nm_eps,&tmp1); - MisnerEvalPsi(xval,yval-nm_eps,zval+nm_eps,&tmp2); - MisnerEvalPsi(xval,yval+nm_eps,zval-nm_eps,&tmp3); - MisnerEvalPsi(xval,yval-nm_eps,zval-nm_eps,&tmp4); + tmp1 = MisnerEvalPsi(xval,yval+nm_eps,zval+nm_eps); + tmp2 = MisnerEvalPsi(xval,yval-nm_eps,zval+nm_eps); + tmp3 = MisnerEvalPsi(xval,yval+nm_eps,zval-nm_eps); + tmp4 = MisnerEvalPsi(xval,yval-nm_eps,zval-nm_eps); psiyz[i] = 0.25*(tmp1-tmp2-tmp3+tmp4) * inv_nm_eps_squared; - MisnerEvalPsi(xval+nm_eps,yval,zval+nm_eps,&tmp1); - MisnerEvalPsi(xval+nm_eps,yval,zval-nm_eps,&tmp2); - MisnerEvalPsi(xval-nm_eps,yval,zval+nm_eps,&tmp3); - MisnerEvalPsi(xval-nm_eps,yval,zval-nm_eps,&tmp4); + tmp1 = MisnerEvalPsi(xval+nm_eps,yval,zval+nm_eps); + tmp2 = MisnerEvalPsi(xval+nm_eps,yval,zval-nm_eps); + tmp3 = MisnerEvalPsi(xval-nm_eps,yval,zval+nm_eps); + tmp4 = MisnerEvalPsi(xval-nm_eps,yval,zval-nm_eps); psixz[i] = 0.25*(tmp1-tmp2-tmp3+tmp4) * inv_nm_eps_squared; } } @@ -170,7 +164,7 @@ void Misner_multiple(CCTK_ARGUMENTS) { for(i = 0; i < npoints; i++) { - inv_psi = one / psi[i]; + inv_psi = 1.0 / psi[i]; psix[i] *= inv_psi; psiy[i] *= inv_psi; @@ -195,9 +189,9 @@ void Misner_multiple(CCTK_ARGUMENTS) { for(i = 0; i < npoints; i++) { - gxx[i] = one; - gyy[i] = one; - gzz[i] = one; + gxx[i] = 1.0; + gyy[i] = 1.0; + gzz[i] = 1.0; } } else diff --git a/src/Misner_points.c b/src/Misner_points.c index 7c1402a..7aa0b2e 100644 --- a/src/Misner_points.c +++ b/src/Misner_points.c @@ -1,31 +1,41 @@ /*@@ @file Misner_points.c - @date + @date @author Steve Brandt - @desc - This calculates the conformal factor for nbh black holes, + @desc + This calculates the conformal factor for nbh black holes, with naked mass m0 = 2 csch(mu) each, and placed on a circle in the - xy plane around the origin, of radius coth(mu). + xy plane around the origin, of radius coth(mu). One of them sits on the positive x axis, the others are evenly spaced. Naked mass here corresponds to the term m0 / (2 |r - r0|) in the expansion. - @enddesc + @history + @hdate 6.May.2003 + @hauthor Jonathan Thornburg + @hdesc code cleanup, add prototypes + @endhistory + @enddesc @@*/ -#include "cctk.h" - #include #include #include #include +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "IDAnalyticBH.h" + static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_Misner_points_c) -void Misner_init(int n, CCTK_REAL mu, int terms); -void MisnerEvalPsi(CCTK_REAL x, CCTK_REAL y, CCTK_REAL z, CCTK_REAL *res); +/******************************************************************************/ -static int nbholes; +/* + * data structures local to this file + */ /* Basic data about a brill-lindquist black hole term. */ struct bhole { @@ -40,32 +50,132 @@ struct bhole { struct bhole *isos; }; +/******************************************************************************/ + +/* + * static data + */ + +static int nbholes; + #define MAXBHOLES 10 /* The seed black holes. */ struct bhole bholes[MAXBHOLES]; +/******************************************************************************/ + +/* + * prototypes for functions local to this file + */ +static CCTK_REAL csch(CCTK_REAL theta); +static CCTK_REAL coth(CCTK_REAL theta); +static void iso(struct bhole *a1, struct bhole *a2, struct bhole *a3); +static void fill_iso(struct bhole *b, int n); +static CCTK_REAL eval_bh_psi(struct bhole *b, + CCTK_REAL x, CCTK_REAL y, CCTK_REAL z); + +/******************************************************************************/ +/***** functions visible outside this file ************************************/ +/******************************************************************************/ + + /*@@ + @routine Misner_init + @date + @author Steve Brandt + @desc + Initialises the black holes then makes the isometry black holes + @enddesc + @calls + @history + @endhistory +@@*/ +void Misner_init(int n, CCTK_REAL mu, int terms) +{ + + int i; + CCTK_REAL pi,ang; + + assert((nbholes=n) < MAXBHOLES); + + pi = 4.0*atan(1.); + + ang = 2.*pi/(n); + + for(i=0;i + @hdesc Return result directly rather than via a pointer argument. + @endhistory + @@*/ +CCTK_REAL MisnerEvalPsi(CCTK_REAL x, CCTK_REAL y, CCTK_REAL z) +{ + int i; + CCTK_REAL sum = 1.0; + + for(i=0;iy = a2->y+(a2->mass*a2->mass)*(a1->y - a2->y)/radtwo; } +/******************************************************************************/ + /*@@ @routine fill_iso - @date + @date @author Steve Brandt - @desc - Fills in the iso structure of a given black hole. + @desc + Fills in the iso structure of a given black hole. Applies recursively to the number of terms desired. - @enddesc - @calls fill_iso - @history - - @endhistory + @enddesc + @calls fill_iso + @history + + @endhistory @@*/ -static void fill_iso(struct bhole *b, int n) +static void fill_iso(struct bhole *b, int n) { int i,j; - if(n==0) + if(n==0) { b->isos = 0; return; } b->isos = (struct bhole *)malloc(sizeof(struct bhole)*(nbholes-1)); assert(b->isos != 0); - for(j=0, i=0;ii) { iso(b,&bholes[i],&b->isos[j]); @@ -114,69 +226,30 @@ static void fill_iso(struct bhole *b, int n) } } - /*@@ - @routine Misner_init - @date - @author Steve Brandt - @desc - Initialises the black holes then makes the isometry black holes - @enddesc - @calls - @history - - @endhistory - -@@*/ - -void Misner_init(int n, CCTK_REAL mu, int terms) -{ - - int i; - CCTK_REAL pi,ang; - - assert((nbholes=n) < MAXBHOLES); - - pi = 4.0*atan(1.); - - ang = 2.*pi/(n); - - for(i=0;iisos != 0) + if(b->isos != 0) { - for(i=0;iisos[i],x,y,z); } @@ -188,26 +261,3 @@ static CCTK_REAL eval_bh_psi(struct bhole *b, CCTK_REAL x, CCTK_REAL y, CCTK_REA ); return res; } - - - /*@@ - @routine MisnerEvalPsi - @date - @author Steve Brandt - @desc - Evaluate psi at a point - @enddesc - @calls eval_bh_psi - @history - - @endhistory - -@@*/ - -void MisnerEvalPsi(CCTK_REAL x, CCTK_REAL y, CCTK_REAL z, CCTK_REAL *res) -{ - int i; - *res = 1; - for(i=0;i #include #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -27,10 +26,6 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_Misner_standard_c) -#define SQR(a) ((a)*(a)) - -void Misner_standard(CCTK_ARGUMENTS); - /*@@ @routine Misner_standard @date diff --git a/src/ParamChecker.c b/src/ParamChecker.c index fdc1146..e2d6725 100644 --- a/src/ParamChecker.c +++ b/src/ParamChecker.c @@ -9,15 +9,16 @@ @version $Header$ @@*/ -#include "cctk.h" - #include #include #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" +#include "IDAnalyticBH.h" + static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_ParamChecker_c) @@ -34,8 +35,6 @@ CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_ParamChecker_c) ***************** Scheduled Routine Prototypes ********************* ********************************************************************/ -void IDAnalyticBH_ParamChecker(CCTK_ARGUMENTS); - /******************************************************************** ********************* Other Routine Prototypes ********************* ********************************************************************/ @@ -168,7 +167,3 @@ void IDAnalyticBH_ParamChecker(CCTK_ARGUMENTS) } } - -/******************************************************************** - ********************* Local Routines ************************* - ********************************************************************/ diff --git a/src/Schwarzschild.c b/src/Schwarzschild.c index 0c7f0e2..c1cab71 100644 --- a/src/Schwarzschild.c +++ b/src/Schwarzschild.c @@ -8,10 +8,9 @@ @version $Id$ @@*/ -#include "cctk.h" - #include +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -20,8 +19,6 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusEinstein_IDAnalyticBH_Schwarzschild_c) -void Schwarzschild(CCTK_ARGUMENTS); - void Schwarzschild(CCTK_ARGUMENTS) { diff --git a/src/misc.c b/src/misc.c index 695fc49..b3ddf60 100644 --- a/src/misc.c +++ b/src/misc.c @@ -9,9 +9,7 @@ @@*/ #include "cctk.h" - #include "cctk_Arguments.h" -#include "cctk_Parameters.h" #include "IDAnalyticBH.h" -- cgit v1.2.3