aboutsummaryrefslogtreecommitdiff
path: root/src/gr/gr.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/gr/gr.hh')
-rw-r--r--src/gr/gr.hh75
1 files changed, 72 insertions, 3 deletions
diff --git a/src/gr/gr.hh b/src/gr/gr.hh
index 00f106c..3564438 100644
--- a/src/gr/gr.hh
+++ b/src/gr/gr.hh
@@ -1,3 +1,4 @@
+
// gr.hh -- header file for general relativity code
// $Header$
@@ -14,6 +15,68 @@ namespace AHFinderDirect
enum { N_GRID_DIMS = 3, N_HORIZON_DIMS = 2 };
//
+// this enum specifies what kind of surface we want
+//
+enum a_surface_definition
+ {
+ definition_error, // this value is illegal
+ definition_expansion, // apparent horizon
+ definition_inner_expansion, // expansion Theta_(l), ingoing null normal
+ definition_mean_curvature, // mean curvature
+ definition_expansion_product // product of Theta_(n) and Theta_(l)
+ };
+
+//
+// this enum specifies how the surface definition is modified
+//
+enum a_surface_modification
+ {
+ modification_error, // this value is illegal
+ modification_none, // no modification
+ modification_radius, // times coordinate radius
+ modification_radius2 // times coordinate radius^2
+#if 0
+ modification_mean_radius, // times mean coordinate radius
+ modification_areal_radius // times areal radius
+#endif
+ };
+
+//
+// this enum specifies how we select the surface
+//
+enum a_surface_selection
+ {
+ selection_error, // this value is illegal
+ selection_definition, // use the surface's definition
+ selection_mean_coordinate_radius, // mean coordinate radius (cheap)
+ selection_areal_radius, // areal radius
+ selection_expansion_mean_coordinate_radius, // expansion times mean coordinate radius
+ selection_expansion_areal_radius // expansion times areal radius
+ };
+
+//
+// this struct specifies what to calculate
+//
+struct what_to_compute
+ {
+ // how Theta is calculated
+ a_surface_definition surface_definition;
+ // how Theta is modified
+ a_surface_modification surface_modification;
+ // what is solved for
+ a_surface_selection surface_selection;
+ // the desired value (expansion, areal radius, etc.)
+ fp desired_value;
+
+ what_to_compute ()
+ : surface_definition (definition_error),
+ surface_modification (modification_error),
+ surface_selection (selection_error),
+ desired_value (0.0)
+ { }
+ };
+
+//
// this enum holds the (a) decoded Jacobian_compute_method parameter,
// i.e. it specifies how we compute the (a) Jacobian matrix
//
@@ -76,6 +139,7 @@ struct cactus_grid_info
bool use_Cactus_conformal_metric;
// Cactus variable indices of geometry variables
+ int mask_varindex;
int g_dd_11_varindex, g_dd_12_varindex, g_dd_13_varindex,
g_dd_22_varindex, g_dd_23_varindex,
g_dd_33_varindex;
@@ -169,18 +233,23 @@ struct error_info
// expansion.cc
enum expansion_status
- expansion(patch_system* ps_ptr, fp add_to_expansion,
+ expansion(patch_system* ps_ptr,
+ const struct what_to_compute& comput_info,
const struct cactus_grid_info& cgi,
const struct geometry_info& gi,
const struct error_info& error_info, bool initial_flag,
bool Jacobian_flag = false,
bool print_msg_flag = false,
- jtutil::norm<fp>* H_norms_ptr = NULL);
+ jtutil::norm<fp>* H_norms_ptr = NULL,
+ jtutil::norm<fp>* expansion_H_norms_ptr = NULL,
+ jtutil::norm<fp>* inner_expansion_H_norms_ptr = NULL,
+ jtutil::norm<fp>* product_expansion_H_norms_ptr = NULL,
+ jtutil::norm<fp>* mean_curvature_H_norms_ptr = NULL);
// expansion_Jacobian.cc
enum expansion_status
expansion_Jacobian(patch_system* ps_ptr, Jacobian* Jac_ptr,
- fp add_to_expansion,
+ const struct what_to_compute& comput_info,
const struct cactus_grid_info& cgi,
const struct geometry_info& gi,
const struct Jacobian_info& Jacobian_info,