diff options
Diffstat (limited to 'src/driver/driver.hh')
-rw-r--r-- | src/driver/driver.hh | 99 |
1 files changed, 42 insertions, 57 deletions
diff --git a/src/driver/driver.hh b/src/driver/driver.hh index ae169fd..6569ba8 100644 --- a/src/driver/driver.hh +++ b/src/driver/driver.hh @@ -34,7 +34,6 @@ enum method // enum verbose_level { - verbose_level__no_output, verbose_level__physics_highlights, verbose_level__physics_details, verbose_level__algorithm_highlights, @@ -57,17 +56,6 @@ enum initial_guess_method initial_guess__coord_ellipsoid // no comma }; -// -// this enum holds the decoded horizon_file_format parameter, i.e. -// it specifies what format of input/output file(s) we should use -// for h and H (and other angular grid functions) -// -enum horizon_file_format - { - horizon_file_format__ASCII_gnuplot, - horizon_file_format__HDF5 // no comma - }; - //****************************************************************************** // @@ -77,6 +65,7 @@ enum horizon_file_format struct initial_guess_info { enum initial_guess_method method; + bool reset_horizon_after_not_finding; // parameters for method == initial_guess__read_from_named_file struct { @@ -120,9 +109,12 @@ struct solver_info fp max_allowable_Delta_h_over_h; fp Theta_norm_for_convergence; fp max_allowable_Theta; + fp max_allowable_Theta_growth_iterations; + fp max_allowable_Theta_nonshrink_iterations; fp *max_allowable_horizon_radius; // --> new[]-allocated array // of size N_horizons+1 , // subscripted by hn + bool want_expansion_gradients; }; // @@ -140,11 +132,13 @@ struct IO_info // should cut this down to something reasonable enum { default_directory_permission = 0777 }; - enum horizon_file_format horizon_file_format; + bool output_ASCII_files; + bool output_HDF5_files; bool output_initial_guess; int output_h_every, output_Theta_every; + int output_mean_curvature_every; // based on the above, do we want to output things now (this time step)? - bool output_h, output_Theta; + bool output_h, output_Theta, output_mean_curvature; bool output_BH_diagnostics; const char* BH_diagnostics_directory; @@ -157,7 +151,9 @@ struct IO_info const char* h_directory; const char* h_base_file_name; const char* Theta_base_file_name; + const char* mean_curvature_base_file_name; const char* Delta_h_base_file_name; + int h_min_digits; const char* Jacobian_base_file_name; @@ -289,7 +285,26 @@ struct AH_data // patch_system* ps_ptr; Jacobian* Jac_ptr; - fp surface_expansion; + what_to_compute compute_info; + + bool move_origins; + + bool use_pretracking; + int pretracking_max_iterations; + + fp pretracking_value; + fp pretracking_minimum_value; + fp pretracking_maximum_value; + fp pretracking_delta; + fp pretracking_minimum_delta; + fp pretracking_maximum_delta; + + int depends_on; + fp desired_value_factor; + fp desired_value_offset; + + fp shiftout_factor; + fp smoothing_factor; // are we finding this horizon "from scratch"? // ... true if this is the first time we've tried to find it, @@ -299,10 +314,16 @@ struct AH_data // (so we have that position as a very good initial guess) // ... also false if we're not finding this horizon on this processor bool initial_find_flag; + // is this really the first time in this simulation that we are + // trying to find a horizon? + // ... true initially if this is a genuine horizon, + // false after the first time that a horizon has been found + bool really_initial_find_flag; // used only if we're finding this horizon on this processor struct initial_guess_info initial_guess_info; + bool search_flag; // did we search for this horizon bool found_flag; // did we find this horizon (successfully) bool h_files_written; // have we written horizon-shape or similar // files for this horizon yet? @@ -310,13 +331,6 @@ struct AH_data struct BH_diagnostics BH_diagnostics; FILE *BH_diagnostics_fileptr; - bool store_info_in_SS_vars; // should we store this horizon - // in the SphericalSurface variables? - int SS_surface_number; // if store_info_in_SS_vars , - // this is the SphericalSurface - // surface number to store into; - // otherwise this is ignored - // interprocessor-communication buffers // for this horizon's BH diagnostics and (optionally) horizon shape struct horizon_buffers horizon_buffers; @@ -329,20 +343,9 @@ struct AH_data // struct state { - int find_every; - bool find_now(int cctk_iteration_in) const - { - return (find_every != 0) - && ((cctk_iteration_in % find_every) == 0); - } - enum method method; - struct error_info error_info; struct verbose_info verbose_info; - - const char* metric_type; // copy of ADMBase::metric_type - int timer_handle; int N_procs; // total number of processors int my_proc; // processor number of this processor @@ -356,7 +359,6 @@ struct state struct cactus_grid_info cgi; struct geometry_info gi; - bool test_all_Jacobian_compute_methods; struct Jacobian_info Jac_info; struct solver_info solver_info; struct IO_info IO_info; @@ -364,19 +366,6 @@ struct state struct BH_diagnostics_info BH_diagnostics_info; struct mask_info mask_info; - bool announce_centroid_flag; // should we announce horizon centroid? - int which_horizon_to_announce_centroid; // if so, which horizon? - - // should we always broadcast each horizon shape from the processor - // that finds it, to all processors, even if there's no apparent need - // for this information on other processors? - bool always_broadcast_horizon_shape; - - // this is the inclusive-or of AH_data.store_info_in_SS_vars - // over all horizons, i.e. it says if we will store horizon - // information in the SphericalSurface variables for *any* horizon - bool store_info_in_SS_vars_for_any_horizon; - // interprocessor-communication buffers for broadcasting // Newton-iteration status from active processors to all processors struct iteration_status_buffers isb; @@ -402,10 +391,6 @@ struct state extern "C" void AHFinderDirect_setup(CCTK_ARGUMENTS); -// ... called from Cactus Scheduler -extern "C" - void AHFinderDirect_setupupdate(CCTK_ARGUMENTS); - // find_horizons.cc // ... called from Cactus Scheduler extern "C" @@ -416,11 +401,6 @@ extern "C" extern "C" void AHFinderDirect_announce(CCTK_ARGUMENTS); -// spherical_surface.cc -// ... called from Cactus Scheduler -extern "C" - void AHFinderDirect_store_SS_info(CCTK_ARGUMENTS); - // mask.cc // ... called from Cactus Scheduler extern "C" @@ -438,7 +418,8 @@ extern "C" CCTK_INT AHFinderDirect_radius_in_direction (CCTK_INT horizon_number, CCTK_INT N_points, - const CCTK_REAL* const x, const CCTK_REAL* const y, const CCTK_REAL* const z, + const CCTK_REAL* const x, const CCTK_REAL* const y, const CCTK_REAL* const +z, CCTK_REAL* const radius); // initial_guess.cc @@ -469,18 +450,22 @@ void Newton(const cGH* GH, // io.cc void input_gridfn(patch_system& ps, int unknown_gfn, const struct IO_info& IO_info, const char base_file_name[], + int min_digits, int hn, bool print_msg_flag, int AHF_iteration = 0); void input_gridfn__explicit_name(patch_system& ps, int unknown_gfn, const struct IO_info& IO_info, const char file_name[], bool print_msg_flag); void setup_h_files(patch_system& ps, const struct IO_info& IO_info, int hn); void output_gridfn(patch_system& ps, int unknown_gfn, + const char gfn_name[], const cGH *cctkGH, const struct IO_info& IO_info, const char base_file_name[], + int min_digits, int hn, bool print_msg_flag, int AHF_iteration = 0); void output_Jacobians(const patch_system& ps, const Jacobian* Jac_NP_ptr, const Jacobian* Jac_SD_FDdr_ptr, const struct IO_info& IO_info, const char base_file_name[], + int min_digits, int hn, bool print_msg_flag, int AHF_iteration = 0); // misc-driver.cc |