aboutsummaryrefslogtreecommitdiff
path: root/src/driver
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-10-17 03:43:52 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-10-17 03:43:52 +0000
commit53c7b66d3dfa5684d867ef5576f19914d9981df1 (patch)
tree118aee5069da14ab9d235a9ef1aadaf1e991c827 /src/driver
parentce7263367f330ce0f601c6b2e0c97d01790f747e (diff)
* rename initial-guess suboptions to make them a bit clearer
("sphere" --> "coordinate sphere", "ellipsoid" --> "coordinate ellipsoid") * more comments in param.ccl * add option to allow only writing "large" data files every N time steps git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@838 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/driver')
-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
5 files changed, 91 insertions, 85 deletions
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;