aboutsummaryrefslogtreecommitdiff
path: root/src/driver/driver.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver/driver.hh')
-rw-r--r--src/driver/driver.hh99
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