aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--param.ccl121
-rw-r--r--src/driver/driver.hh19
-rw-r--r--src/driver/find_horizons.cc13
-rw-r--r--src/driver/initial_guess.cc66
-rw-r--r--src/driver/io.cc12
-rw-r--r--src/driver/setup.cc66
6 files changed, 172 insertions, 125 deletions
diff --git a/param.ccl b/param.ccl
index 850438b..ec4a46b 100644
--- a/param.ccl
+++ b/param.ccl
@@ -72,6 +72,7 @@ keyword verbose_level \
"controls which (how many) messages to print describing AH finding"
{
# 1 line each time step giving number of horizons found and their masses
+# ... this doesn't work yet :(
"physics highlights" :: "just a few physics messages"
# 1 line for each horizon giving position/mass/area, + a summary line or two
@@ -84,7 +85,7 @@ keyword verbose_level \
# lots of details tracing what the code is doing
"algorithm details" :: \
"physics details + lots of messages about the AH-finding algorithm"
-} "physics details"
+} "algorithm highlights"
# n.b. printing timing stats is independent of verbose_level
boolean print_timing_stats \
@@ -100,8 +101,10 @@ boolean print_timing_stats \
keyword Jacobian_method "how do we compute the Jacobian matrix?"
{
-"numerical perturbation" :: \
- "*very* slow, but useful for debugging"
+# for debugging only"
+"numerical perturbation" :: "n.b. this is *very* slow"
+
+# use this for normal apparent horizon finding
"symbolic differentiation with finite diff d/dr" :: \
"fast, tricky programming, uses only gij, dx gij, Kij"
@@ -119,7 +122,8 @@ keyword Jacobian_method "how do we compute the Jacobian matrix?"
#
keyword Jacobian_storage_method "how do we store the Jacobian matrix?"
{
-"dense matrix" :: "dense matrix (inefficient, but good for debugging)"
+# at present this is the only option
+"dense matrix" :: "dense matrix (inefficient at high angular resolution)"
} "dense matrix"
#
@@ -147,11 +151,11 @@ real Jacobian_perturbation_amplitude \
#
#
-# The first time we (try to) find a given horizon, our initial
-# guess is likely to be rather inaccurate, so we may need a
-# larger number of iterations. But if we've found this horizon
-# before, then we have its previous position as an initial guess,
-# so we shouldn't need as many iterations.
+# The first time we (try to) find a given horizon, our initial guess
+# is likely to be rather inaccurate, so we may need a larger number of
+# iterations. But if we've found this horizon before, then we have its
+# previous position as an initial guess, so (assuming that we've been
+# scheduled at each time step) we shouldn't need as many iterations.
#
int max_Newton_iterations__initial \
"maximum number of Newton iterations before giving up \
@@ -184,12 +188,12 @@ real max_Delta_h_over_h \
real H_norm_for_convergence "declare convergence if ||H||_inf <= this"
{
(0.0:* :: "any positive real number"
-} 1.0e-10
+} 1.0e-8
real Delta_h_norm_for_convergence \
"declare convergence after any Newton step with ||Delta_h||_inf <= this"
{
(0.0:* :: "any positive real number"
-} 1.0e-10
+} 1.0e-8
#
# This only needs to be set to true for very careful convergence studies
@@ -214,7 +218,7 @@ boolean output_initial_guess \
{
} "false"
-# for debugging failure to converge, we can optionally output
+# for debugging convergence failures, we can optionally output
# h, H, and delta_h at each Newton iteration
# (the file names are the usual ones with ".it%d" appended)
boolean debugging_output_at_each_Newton_iteration \
@@ -222,30 +226,44 @@ boolean debugging_output_at_each_Newton_iteration \
{
} "false"
-boolean output_h "should we output each horizon's shape h?"
+# the next two parameters control how often we write full-sized
+# output files (format controlled by file_format ); we still *find*
+# apparent horizons at each time step, and compute/print small-sized
+# diagnostics, but this parameter may be used to reduce the number
+# and size of output files
+int how_often_to_output_h \
+ "how often (in Cactus time steps) should we output h (0 to disable)?"
{
-} "true"
+0 :: "don't output h at all"
+1:* :: "any integer >= 1"
+} 1
-boolean output_H_of_h "should we output each horizon's H(h) function?"
+# setting this > 0 is probably only of interest if the Newton iteration
+# fails to converge, or if you're debugging AHFinderDirect internals
+int how_often_to_output_H_of_h \
+ "how often (in Cactus time steps) should we output the H(h) functions?"
{
-} "true"
+0 :: "don't output H(h) at all"
+1:* :: "any integer >= 1"
+} 0
keyword file_format \
"what file format should we use for h and H(h) data files?"
{
-"ASCII" :: "simple ASCII format, directly readable by gnuplot"
-"HDF5" :: "HDF5 surface format (alas not implemented yet)"
-} "ASCII"
+"ASCII (gnuplot)" :: "simple ASCII format, directly readable by gnuplot"
+"HDF5" :: "HDF5 surface format (alas not implemented yet)"
+} "ASCII (gnuplot)"
boolean output_ghost_zones_for_h \
"should we include the ghost zones in h data files?"
{
} "false"
-string ASCII_file_name_extension "extension for ASCII data files"
+string ASCII_gnuplot_file_name_extension \
+ "extension for ASCII (gnuplot) data files"
{
.* :: "any string"
-} "ascii"
+} "gnuplot"
string HDF5_file_name_extension "extension for HDF5 data files"
{
.* :: "any string"
@@ -330,8 +348,12 @@ keyword patch_system_type "what type of patch system should we use?"
"match Cactus grid symmetry" :: \
"choose automagically based on grid symmetries and the patch system's origin"
+# these are also fully supported
"full sphere" :: "full sphere, no symmetries"
"+z hemisphere" :: "mirror symmetry across z=0 plane"
+
+# these don't fully work yet for apparent horizon finding
+# (the Jacobian computation doesn't grok them properly)
"+xy quadrant" :: "90 degree periodic rotation symmetry about z axis"
"+xz quadrant" :: "mirror symmetry across z=0 plane *and* \
180 degree periodic rotation symmetry about z axis"
@@ -339,9 +361,17 @@ keyword patch_system_type "what type of patch system should we use?"
90 degree periodic rotation symmetry about z axis"
} "match Cactus grid symmetry"
-# this must be at least
-# * 2 if FINITE_DIFF_ORDER is set to 4 in "src/include/config.hh"
-# * 1 if FINITE_DIFF_ORDER is set to 2 in "src/include/config.hh"
+#
+# This parameter sets the width of the interpatch ghost zones in the
+# patch system. Note that this thorn uses the terminology "ghost zone"
+# for any of what Cactus in general now calls a "boundary zone" or a
+# "symmetry zone" or a "patch zone".
+#
+# This parameter must be at least
+# ... 2 if FINITE_DIFF_ORDER is set to 4 in "src/include/config.hh"
+# ... 1 if FINITE_DIFF_ORDER is set to 2 in "src/include/config.hh"
+# The code checks for this being too small, and reports a fatal error if so.
+#
int N_ghost_points "number of ghost zones on each side of a patch"
{
0:* :: "any integer >= 0"
@@ -369,6 +399,11 @@ int N_overlap_points \
# grid zones (i.e. the patch size divided by this parameter) is even or
# >= 7 (or both) for both coordinates of all patches.
#
+# If you are thinking of setting this to a small value (high resolution),
+# note also that with the current dense-matrix storage of the Jacobian,
+# the memory/running time of the LAPACK linear system solve scales as
+# the inverse 4th/6th power of this parameter!
+#
real delta_drho_dsigma "angular grid spacing of patches, in degrees"
{
(0.0:* :: "any real number > 0.0"
@@ -436,6 +471,9 @@ keyword geometry_method "how do we compute the slice's geometry?"
# fail to converge all the way down to tight error tolerances. $C^2$
# would be even better, but in practice a ($C^1$) Hermite interpolant
# works well.
+# In practice the default values for these parameters should work fine
+# (so long as you compile with CactusBase/LocalInterp and activate that
+# thorn).
#
string geometry_interpolator_name \
@@ -559,14 +597,14 @@ string interpatch_interpolator_pars \
keyword initial_guess_method \
"method used to set up initial guess for apparent horizon shape"
{
-"read from file" :: "read from input file"
-"Kerr/Kerr" :: \
+"read from file" :: "read from input file"
+"Kerr/Kerr" :: \
"set to the (analytical) horizon of Kerr spacetime in Kerr coordinates"
-"Kerr/Kerr-Schild" :: \
+"Kerr/Kerr-Schild" :: \
"set to the (analytical) horizon of Kerr spacetime in Kerr-Schild coordinates"
-"sphere" :: "set to a coordinate sphere"
-"ellipsoid" :: "set to a coordinate ellipsoid"
-} "read from file"
+"coordinate sphere" :: "set to a coordinate sphere"
+"coordinate ellipsoid" :: "set to a coordinate ellipsoid"
+} "coordinate sphere"
# parameters for initial_guess_method = "Kerr/Kerr"
real initial_guess__Kerr_Kerr__x_posn[5] "x coordinate of Kerr BH"
@@ -619,45 +657,48 @@ real initial_guess__Kerr_KerrSchild__spin[5] "dimensionless spin a=J/m^2 of Kerr
} 0.6
# parameters for initial_guess_method = "sphere"
-real initial_guess__sphere__x_center[5] "x coordinate of sphere center"
+real initial_guess__coord_sphere__x_center[5] "x coordinate of sphere center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__sphere__y_center[5] "y coordinate of sphere center"
+real initial_guess__coord_sphere__y_center[5] "y coordinate of sphere center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__sphere__z_center[5] "z coordinate of sphere center"
+real initial_guess__coord_sphere__z_center[5] "z coordinate of sphere center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__sphere__radius[5] "radius of sphere"
+real initial_guess__coord_sphere__radius[5] "radius of sphere"
{
(0.0:* :: "any real number > 0.0"
} 2.0
# parameters for initial_guess_method = "ellipsoid"
-real initial_guess__ellipsoid__x_center[5] "x coordinate of ellipsoid center"
+real initial_guess__coord_ellipsoid__x_center[5] \
+ "x coordinate of ellipsoid center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__ellipsoid__y_center[5] "y coordinate of ellipsoid center"
+real initial_guess__coord_ellipsoid__y_center[5] \
+ "y coordinate of ellipsoid center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__ellipsoid__z_center[5] "z coordinate of ellipsoid center"
+real initial_guess__coord_ellipsoid__z_center[5] \
+ "z coordinate of ellipsoid center"
{
*:* :: "any real number"
} 0.0
-real initial_guess__ellipsoid__x_radius[5] "x radius of ellipsoid"
+real initial_guess__coord_ellipsoid__x_radius[5] "x radius of ellipsoid"
{
(0.0:* :: "any real number > 0.0"
} 2.0
-real initial_guess__ellipsoid__y_radius[5] "y radius of ellipsoid"
+real initial_guess__coord_ellipsoid__y_radius[5] "y radius of ellipsoid"
{
(0.0:* :: "any real number > 0.0"
} 2.0
-real initial_guess__ellipsoid__z_radius[5] "z radius of ellipsoid"
+real initial_guess__coord_ellipsoid__z_radius[5] "z radius of ellipsoid"
{
(0.0:* :: "any real number > 0.0"
} 2.0
diff --git a/src/driver/driver.hh b/src/driver/driver.hh
index d5f9ea7..44a962d 100644
--- a/src/driver/driver.hh
+++ b/src/driver/driver.hh
@@ -37,8 +37,8 @@ enum initial_guess_method
initial_guess__read_from_file,
initial_guess__Kerr_Kerr,
initial_guess__Kerr_KerrSchild,
- initial_guess__sphere,
- initial_guess__ellipsoid // no comma
+ initial_guess__coord_sphere,
+ initial_guess__coord_ellipsoid // no comma
};
//
@@ -47,7 +47,7 @@ enum initial_guess_method
//
enum file_format
{
- file_format__ASCII,
+ file_format__ASCII_gnuplot,
file_format__HDF5 // no comma
};
@@ -73,17 +73,17 @@ struct initial_guess_info
fp mass, spin;
} Kerr_KerrSchild_info;
- // parameters for method == initial_guess__sphere
+ // parameters for method == initial_guess__coord_sphere
struct {
fp x_center, y_center, z_center;
fp radius;
- } sphere_info;
+ } coord_sphere_info;
- // parameters for method == initial_guess__ellipsoid
+ // parameters for method == initial_guess__coord_ellipsoid
struct {
fp x_center, y_center, z_center;
fp x_radius, y_radius, z_radius;
- } ellipsoid_info;
+ } coord_ellipsoid_info;
};
//
@@ -92,7 +92,6 @@ struct initial_guess_info
struct solver_info
{
bool output_initial_guess;
- bool output_h, output_H;
bool debugging_output_at_each_Newton_iteration;
int max_Newton_iterations__initial,
max_Newton_iterations__subsequent;
@@ -108,8 +107,10 @@ struct solver_info
struct IO_info
{
enum file_format file_format;
+ int how_often_to_output_h,
+ how_often_to_output_H;
bool output_ghost_zones_for_h;
- const char* ASCII_file_name_extension;
+ const char* ASCII_gnuplot_file_name_extension;
const char* HDF5_file_name_extension;
const char* h_base_file_name;
const char* H_base_file_name;
diff --git a/src/driver/find_horizons.cc b/src/driver/find_horizons.cc
index 7d38b34..ba50897 100644
--- a/src/driver/find_horizons.cc
+++ b/src/driver/find_horizons.cc
@@ -213,6 +213,13 @@ bool find_horizon(enum method method,
patch_system& ps, Jacobian* Jac_ptr,
int hn, int N_horizons)
{
+const bool output_h
+ = (IO_info.how_often_to_output_h > 0)
+ && ((IO_info.time_iteration % IO_info.how_often_to_output_h) == 0);
+const bool output_H
+ = (IO_info.how_often_to_output_H > 0)
+ && ((IO_info.time_iteration % IO_info.how_often_to_output_H) == 0);
+
switch (method)
{
// just evaluate the horizon function
@@ -233,7 +240,7 @@ case method__horizon_function:
then CCTK_VInfo(CCTK_THORNSTRING,
" H(h) rms-norm %.2e, infinity-norm %.2e",
H_norms.rms_norm(), H_norms.infinity_norm());
- if (solver_info.output_H)
+ if (output_H)
then output_gridfn(ps, gfns::gfn__H,
IO_info, IO_info.H_base_file_name,
hn, true);
@@ -312,11 +319,11 @@ case method__Newton_solve:
if (! status)
then return false; // *** ERROR RETURN ***
- if (solver_info.output_h)
+ if (output_h)
then output_gridfn(ps, gfns::gfn__h,
IO_info, IO_info.h_base_file_name,
hn, verbose_info.print_algorithm_details);
- if (solver_info.output_H)
+ if (output_H)
then output_gridfn(ps, gfns::gfn__H,
IO_info, IO_info.H_base_file_name,
hn, verbose_info.print_algorithm_details);
diff --git a/src/driver/initial_guess.cc b/src/driver/initial_guess.cc
index 0c11742..9c92ca9 100644
--- a/src/driver/initial_guess.cc
+++ b/src/driver/initial_guess.cc
@@ -6,7 +6,7 @@
// setup_initial_guess - set up initial guess in h
// decode_initial_guess_method - decode the initial_guess_method parameter
/// setup_Kerr_horizon - set up Kerr horizon in h (Kerr or Kerr-Schild coords)
-/// setup_ellipsoid - setup up a coordinate ellipsoid in h
+/// setup_coord_ellipsoid - setup up a coordinate ellipsoid in h
///
#include <stdio.h>
@@ -56,10 +56,10 @@ void setup_Kerr_horizon(patch_system& ps,
fp m, fp a,
bool Kerr_Schild_flag,
const struct verbose_info& verbose_info);
-void setup_ellipsoid(patch_system& ps,
- fp x_center, fp y_center, fp z_center,
- fp x_radius, fp y_radius, fp z_radius,
- bool print_msg_flag);
+void setup_coord_ellipsoid(patch_system& ps,
+ fp x_center, fp y_center, fp z_center,
+ fp x_radius, fp y_radius, fp z_radius,
+ bool print_msg_flag);
}
//******************************************************************************
@@ -107,26 +107,26 @@ case initial_guess__Kerr_KerrSchild:
verbose_info);
break;
-case initial_guess__sphere:
- setup_ellipsoid(ps,
- igi.sphere_info.x_center,
- igi.sphere_info.y_center,
- igi.sphere_info.z_center,
- igi.sphere_info.radius,
- igi.sphere_info.radius,
- igi.sphere_info.radius,
- verbose_info.print_algorithm_highlights);
+case initial_guess__coord_sphere:
+ setup_coord_ellipsoid(ps,
+ igi.coord_sphere_info.x_center,
+ igi.coord_sphere_info.y_center,
+ igi.coord_sphere_info.z_center,
+ igi.coord_sphere_info.radius,
+ igi.coord_sphere_info.radius,
+ igi.coord_sphere_info.radius,
+ verbose_info.print_algorithm_highlights);
break;
-case initial_guess__ellipsoid:
- setup_ellipsoid(ps,
- igi.ellipsoid_info.x_center,
- igi.ellipsoid_info.y_center,
- igi.ellipsoid_info.z_center,
- igi.ellipsoid_info.x_radius,
- igi.ellipsoid_info.y_radius,
- igi.ellipsoid_info.z_radius,
- verbose_info.print_algorithm_highlights);
+case initial_guess__coord_ellipsoid:
+ setup_coord_ellipsoid(ps,
+ igi.coord_ellipsoid_info.x_center,
+ igi.coord_ellipsoid_info.y_center,
+ igi.coord_ellipsoid_info.z_center,
+ igi.coord_ellipsoid_info.x_radius,
+ igi.coord_ellipsoid_info.y_radius,
+ igi.coord_ellipsoid_info.z_radius,
+ verbose_info.print_algorithm_highlights);
break;
default:
@@ -151,10 +151,10 @@ else if (STRING_EQUAL(initial_guess_method_string, "Kerr/Kerr"))
then return initial_guess__Kerr_Kerr;
else if (STRING_EQUAL(initial_guess_method_string, "Kerr/Kerr-Schild"))
then return initial_guess__Kerr_KerrSchild;
-else if (STRING_EQUAL(initial_guess_method_string, "sphere"))
- then return initial_guess__sphere;
-else if (STRING_EQUAL(initial_guess_method_string, "ellipsoid"))
- then return initial_guess__ellipsoid;
+else if (STRING_EQUAL(initial_guess_method_string, "coordinate sphere"))
+ then return initial_guess__coord_sphere;
+else if (STRING_EQUAL(initial_guess_method_string, "coordinate ellipsoid"))
+ then return initial_guess__coord_ellipsoid;
else CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING,
"\n"
" decode_initial_guess_method():\n"
@@ -212,7 +212,7 @@ if (verbose_info.print_algorithm_details)
then CCTK_VInfo(CCTK_THORNSTRING,
" setting coordinate %s",
Kerr_Schild_flag ? "ellipsoid" : "sphere");
-setup_ellipsoid(ps,
+setup_coord_ellipsoid(ps,
x_posn, y_posn, z_posn,
xy_radius, xy_radius, z_radius,
verbose_info.print_algorithm_details);
@@ -242,10 +242,10 @@ setup_ellipsoid(ps,
// CW = C - W
//
namespace {
-void setup_ellipsoid(patch_system& ps,
- fp x_center, fp y_center, fp z_center,
- fp x_radius, fp y_radius, fp z_radius,
- bool print_msg_flag)
+void setup_coord_ellipsoid(patch_system& ps,
+ fp x_center, fp y_center, fp z_center,
+ fp x_radius, fp y_radius, fp z_radius,
+ bool print_msg_flag)
{
if (print_msg_flag)
then {
@@ -292,7 +292,7 @@ if (print_msg_flag)
then r = r_minus;
else CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING,
"\n"
-" setup_ellipsoid():\n"
+" setup_coord_ellipsoid():\n"
" expected exactly one r>0 solution to quadratic, got 0 or 2!\n"
" %s patch (irho,isigma)=(%d,%d) ==> (rho,sigma)=(%g,%g)\n"
" direction cosines (xcos,ycos,zcos)=(%g,%g,%g)\n"
diff --git a/src/driver/io.cc b/src/driver/io.cc
index af7d5f9..b4dd114 100644
--- a/src/driver/io.cc
+++ b/src/driver/io.cc
@@ -82,7 +82,7 @@ if (print_msg_flag)
switch (IO_info.file_format)
{
-case file_format__ASCII:
+case file_format__ASCII_gnuplot:
ps.read_ghosted_gridfn(unknown_gfn,
file_name,
false); // no ghost zones in data file
@@ -121,7 +121,7 @@ const char* file_name = io_file_name(IO_info, base_file_name,
switch (IO_info.file_format)
{
-case file_format__ASCII:
+case file_format__ASCII_gnuplot:
switch (unknown_gfn)
{
case gfns::gfn__h:
@@ -303,8 +303,8 @@ fclose(fileptr);
enum file_format
decode_file_format(const char file_format_string[])
{
-if (STRING_EQUAL(file_format_string, "ASCII"))
- then return file_format__ASCII;
+if (STRING_EQUAL(file_format_string, "ASCII (gnuplot)"))
+ then return file_format__ASCII_gnuplot;
else if (STRING_EQUAL(file_format_string, "HDF5"))
then return file_format__HDF5;
else CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING,
@@ -344,8 +344,8 @@ static char file_name_buffer[N_file_name_buffer];
const char* file_name_extension;
switch (IO_info.file_format)
{
-case file_format__ASCII:
- file_name_extension = IO_info.ASCII_file_name_extension;
+case file_format__ASCII_gnuplot:
+ file_name_extension = IO_info.ASCII_gnuplot_file_name_extension;
break;
case file_format__HDF5:
file_name_extension = IO_info.HDF5_file_name_extension;
diff --git a/src/driver/setup.cc b/src/driver/setup.cc
index 10dd891..dd1123b 100644
--- a/src/driver/setup.cc
+++ b/src/driver/setup.cc
@@ -110,21 +110,21 @@ verbose_info.print_algorithm_highlights
verbose_info.print_algorithm_details
= (state.verbose_info.verbose_level >= verbose_level__algorithm_details);
-state.timer_handle = (print_timing_stats != 0)
- ? CCTK_TimerCreateI()
- : -1;
+state.timer_handle = (print_timing_stats != 0) ? CCTK_TimerCreateI() : -1;
state.surface_integral_method
= patch::decode_integration_method(surface_integral_method);
struct IO_info& IO_info = state.IO_info;
IO_info.file_format = decode_file_format(file_format);
-IO_info.output_ghost_zones_for_h = (output_ghost_zones_for_h != 0);
-IO_info.ASCII_file_name_extension = ASCII_file_name_extension;
-IO_info.HDF5_file_name_extension = HDF5_file_name_extension;
-IO_info.h_base_file_name = h_base_file_name;
-IO_info.H_base_file_name = H_of_h_base_file_name;
-IO_info.Delta_h_base_file_name = Delta_h_base_file_name;
-IO_info.Jacobian_base_file_name = Jacobian_base_file_name;
+IO_info.how_often_to_output_h = how_often_to_output_h;
+IO_info.how_often_to_output_H = how_often_to_output_H_of_h;
+IO_info.output_ghost_zones_for_h = (output_ghost_zones_for_h != 0);
+IO_info.ASCII_gnuplot_file_name_extension = ASCII_gnuplot_file_name_extension;
+IO_info.HDF5_file_name_extension = HDF5_file_name_extension;
+IO_info.h_base_file_name = h_base_file_name;
+IO_info.H_base_file_name = H_of_h_base_file_name;
+IO_info.Delta_h_base_file_name = Delta_h_base_file_name;
+IO_info.Jacobian_base_file_name = Jacobian_base_file_name;
IO_info.time_iteration = 0;
struct Jacobian_info& Jac_info = state.Jac_info;
@@ -135,8 +135,6 @@ Jac_info.perturbation_amplitude = Jacobian_perturbation_amplitude;
struct solver_info& solver_info = state.solver_info;
solver_info.output_initial_guess = (output_initial_guess != 0);
-solver_info.output_h = (output_h != 0);
-solver_info.output_H = (output_H_of_h != 0);
solver_info.debugging_output_at_each_Newton_iteration
= (debugging_output_at_each_Newton_iteration != 0);
solver_info.max_Newton_iterations__initial
@@ -310,28 +308,28 @@ state.AH_info_ptrs.push_back(NULL);
= initial_guess__Kerr_KerrSchild__mass[hn];
AH_ptr->initial_guess_info.Kerr_KerrSchild_info.spin
= initial_guess__Kerr_KerrSchild__spin[hn];
- // ... sphere
- AH_ptr->initial_guess_info.sphere_info.x_center
- = initial_guess__sphere__x_center[hn];
- AH_ptr->initial_guess_info.sphere_info.y_center
- = initial_guess__sphere__y_center[hn];
- AH_ptr->initial_guess_info.sphere_info.z_center
- = initial_guess__sphere__z_center[hn];
- AH_ptr->initial_guess_info.sphere_info.radius
- = initial_guess__sphere__radius[hn];
- // ... ellipsoid
- AH_ptr->initial_guess_info.ellipsoid_info.x_center
- = initial_guess__ellipsoid__x_center[hn];
- AH_ptr->initial_guess_info.ellipsoid_info.y_center
- = initial_guess__ellipsoid__y_center[hn];
- AH_ptr->initial_guess_info.ellipsoid_info.z_center
- = initial_guess__ellipsoid__z_center[hn];
- AH_ptr->initial_guess_info.ellipsoid_info.x_radius
- = initial_guess__ellipsoid__x_radius[hn];
- AH_ptr->initial_guess_info.ellipsoid_info.y_radius
- = initial_guess__ellipsoid__y_radius[hn];
- AH_ptr->initial_guess_info.ellipsoid_info.z_radius
- = initial_guess__ellipsoid__z_radius[hn];
+ // ... coordinate sphere
+ AH_ptr->initial_guess_info.coord_sphere_info.x_center
+ = initial_guess__coord_sphere__x_center[hn];
+ AH_ptr->initial_guess_info.coord_sphere_info.y_center
+ = initial_guess__coord_sphere__y_center[hn];
+ AH_ptr->initial_guess_info.coord_sphere_info.z_center
+ = initial_guess__coord_sphere__z_center[hn];
+ AH_ptr->initial_guess_info.coord_sphere_info.radius
+ = initial_guess__coord_sphere__radius[hn];
+ // ... coordinate ellipsoid
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.x_center
+ = initial_guess__coord_ellipsoid__x_center[hn];
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.y_center
+ = initial_guess__coord_ellipsoid__y_center[hn];
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.z_center
+ = initial_guess__coord_ellipsoid__z_center[hn];
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.x_radius
+ = initial_guess__coord_ellipsoid__x_radius[hn];
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.y_radius
+ = initial_guess__coord_ellipsoid__y_radius[hn];
+ AH_ptr->initial_guess_info.coord_ellipsoid_info.z_radius
+ = initial_guess__coord_ellipsoid__z_radius[hn];
// initialize the BH diagnostics
AH_ptr->AH_found = false;