aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjthorn <jthorn@6a3ddf76-46e1-4315-99d9-bc56cac1ef84>2003-05-06 11:34:49 +0000
committerjthorn <jthorn@6a3ddf76-46e1-4315-99d9-bc56cac1ef84>2003-05-06 11:34:49 +0000
commitb87239199b05fdf7d4fbd19919b5794d0d21da70 (patch)
tree13c2c9266ac0d75cc1c7515f1eee041c09f5e80d
parent093134b1e65456a387b9edad8cad7921ac533957 (diff)
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
-rw-r--r--src/BrillLindquist.c8
-rw-r--r--src/IDAnalyticBH.h33
-rw-r--r--src/Kerr.c5
-rw-r--r--src/Misner_multiple.c64
-rw-r--r--src/Misner_points.c262
-rw-r--r--src/Misner_standard.c7
-rw-r--r--src/ParamChecker.c11
-rw-r--r--src/Schwarzschild.c5
-rw-r--r--src/misc.c2
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 <math.h>
#include <string.h>
+#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 <stdio.h>
#include <stdlib.h>
#include <math.h>
+#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 <string.h>
+#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 <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <math.h>
+#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<n;i++)
+ {
+ bholes[i].x = coth(mu)*cos(ang*i);
+ bholes[i].y = coth(mu)*sin(ang*i);
+ bholes[i].mass = csch(mu);
+ bholes[i].i = i;
+ bholes[i].isos = 0;
+ }
+
+ for(i=0;i<n;i++)
+ fill_iso(&bholes[i],terms);
+
+}
+
+/******************************************************************************/
+
+ /*@@
+ @routine MisnerEvalPsi
+ @date
+ @author Steve Brandt
+ @desc
+ Evaluate psi at a point
+ @enddesc
+ @calls eval_bh_psi
+
+ @history
+ @hdate 6.May.2003
+ @hauthor Jonathan Thornburg <jthorn@aei.mpg.de>
+ @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;i<nbholes;i++)
+ {
+ sum += eval_bh_psi(&bholes[i],x,y,z);
+ }
+
+ return sum;
+}
+
+/******************************************************************************/
+/***** functions local to this file *******************************************/
+/******************************************************************************/
+
static CCTK_REAL csch(CCTK_REAL theta) {
- return 1.0/sinh(theta);
+ return 1.0/sinh(theta);
}
+
+/******************************************************************************/
+
static CCTK_REAL coth(CCTK_REAL theta) {
- return cosh(theta)/sinh(theta);
+ return cosh(theta)/sinh(theta);
}
+/******************************************************************************/
+
/*@@
@routine fill_iso
- @date
+ @date
@author Steve Brandt
- @desc
+ @desc
Isometrize black hole a1 through hole a2
- @enddesc
- @calls fill_iso
- @history
-
- @endhistory
+ @enddesc
+ @calls fill_iso
+ @history
+
+ @endhistory
@@*/
-static void iso(struct bhole *a1, struct bhole *a2, struct bhole *a3)
+static void iso(struct bhole *a1, struct bhole *a2, struct bhole *a3)
{
CCTK_REAL rad,radtwo;
radtwo=(
@@ -78,32 +188,34 @@ static void iso(struct bhole *a1, struct bhole *a2, struct bhole *a3)
a3->y = 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;i<nbholes;i++)
+ for(j=0, i=0;i<nbholes;i++)
{
if(i != b->i) {
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;i<n;i++)
- {
- bholes[i].x = coth(mu)*cos(ang*i);
- bholes[i].y = coth(mu)*sin(ang*i);
- bholes[i].mass = csch(mu);
- bholes[i].i = i;
- bholes[i].isos = 0;
- }
-
- for(i=0;i<n;i++)
- fill_iso(&bholes[i],terms);
-
-}
-
+/******************************************************************************/
/*@@
@routine eval_bh_psi
- @date
+ @date
@author Steve Brandt
- @desc
-
- @enddesc
- @calls eval_bh_psi
- @history
-
- @endhistory
+ @desc
-@@*/
+ @enddesc
+ @calls eval_bh_psi
+ @history
+
+ @endhistory
-static CCTK_REAL eval_bh_psi(struct bhole *b, CCTK_REAL x, CCTK_REAL y, CCTK_REAL z)
+@@*/
+static CCTK_REAL eval_bh_psi(struct bhole *b,
+ CCTK_REAL x, CCTK_REAL y, CCTK_REAL z)
{
int i;
CCTK_REAL res;
res = 0.0;
- if(b->isos != 0)
+ if(b->isos != 0)
{
- for(i=0;i<nbholes-1;i++)
+ for(i=0;i<nbholes-1;i++)
{
res += eval_bh_psi(&b->isos[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<nbholes;i++)
- *res += eval_bh_psi(&bholes[i],x,y,z);
-}
diff --git a/src/Misner_standard.c b/src/Misner_standard.c
index f5d8417..0419ccc 100644
--- a/src/Misner_standard.c
+++ b/src/Misner_standard.c
@@ -12,12 +12,11 @@
@version $Header$
@@*/
-#include "cctk.h"
-
#include <math.h>
#include <string.h>
#include <stdlib.h>
+#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 <stdio.h>
#include <stdlib.h>
#include <math.h>
+#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 <string.h>
+#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"