diff options
author | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-10-17 03:43:52 +0000 |
---|---|---|
committer | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2002-10-17 03:43:52 +0000 |
commit | 53c7b66d3dfa5684d867ef5576f19914d9981df1 (patch) | |
tree | 118aee5069da14ab9d235a9ef1aadaf1e991c827 /src | |
parent | ce7263367f330ce0f601c6b2e0c97d01790f747e (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')
-rw-r--r-- | src/driver/driver.hh | 19 | ||||
-rw-r--r-- | src/driver/find_horizons.cc | 13 | ||||
-rw-r--r-- | src/driver/initial_guess.cc | 66 | ||||
-rw-r--r-- | src/driver/io.cc | 12 | ||||
-rw-r--r-- | src/driver/setup.cc | 66 |
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; |