aboutsummaryrefslogtreecommitdiff
path: root/src/gr/AHFinderDirect.hh
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-07-26 14:57:48 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2002-07-26 14:57:48 +0000
commit720ce53a79ef5bdff53b3db18bc45c46101aa0fa (patch)
tree5e15ab1aa1346cdbe63a8dd3e8cad3010d438827 /src/gr/AHFinderDirect.hh
parent625a1471be9b782048d0db40fec675bee6bca0a4 (diff)
re-sync changes from laptop
- parameter to control how Jacobian is computed - can hardwire geometry to Schwarzschild/EF git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@661 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/gr/AHFinderDirect.hh')
-rw-r--r--src/gr/AHFinderDirect.hh80
1 files changed, 57 insertions, 23 deletions
diff --git a/src/gr/AHFinderDirect.hh b/src/gr/AHFinderDirect.hh
index ac79f14..403ea39 100644
--- a/src/gr/AHFinderDirect.hh
+++ b/src/gr/AHFinderDirect.hh
@@ -3,20 +3,57 @@
//******************************************************************************
+//
// number of spatial dimensions in the main Cactus grid
// and in our trial-horizon-surface grid
+//
enum { N_GRID_DIMS = 3, N_HORIZON_DIMS = 2 };
//
-// This structure holds various information about the interpolator
-// used to interpolate the "geometry" Cactus 3-D gridfns ($g_{ij}$ and
-// $K_{ij}$) to the apparent horizon position.
+// this enum holds the (a) decoded Jacobian_method parameter,
+// i.e. it specifies how we compute the (a) Jacobian matrix
//
-struct geometry_interpolator_info
+enum Jacobian_method
{
+ numerical_perturbation,
+ symbolic_differentiation_with_FD_dr,
+ symbolic_differentiation // no comma
+ };
+
+
+//
+// This structure holds information for computing the spacetime geometry.
+// This is normally done by interpolating $g_{ij}$ and $K_{ij}$ from the
+// usual Cactus grid, but can optionally instead by done by hard-wiring
+// the Schwarzschild geometry in Eddington-Finkelstein coordinates.
+//
+struct geometry_info
+ {
+ //
+ // parameters for hard-wiring Schwarzschild/EF geometry
+ //
+ bool hardwire_Schwarzschild_EF; // should we hard-wire the
+ // Schwarzschild/EF geometry?
+ fp hardwire_Schwarzschild_EF__x_posn; // x posn of Schwarzschild BH
+ fp hardwire_Schwarzschild_EF__y_posn; // y posn of Schwarzschild BH
+ fp hardwire_Schwarzschild_EF__z_posn; // z posn of Schwarzschild BH
+ fp hardwire_Schwarzschild_EF__mass; // mass of Schwarzschild BH
+ fp hardwire_Schwarzschild_EF__epsilon; // threshold for sin^2 theta
+ // = (x^2+y^2)/r^2 below which
+ // we use z axis limits
+ fp Delta_xyz; // pseudo-grid spacing for finite differencing
+ // computation of $\partial_k g_{ij}$
+
+ //
+ // parameters for normal interpolation from Cactus grid
+ //
int operator_handle; // Cactus handle to interpolation op
int param_table_handle; // Cactus handle to parameter table
// for the interpolator
+
+ // this doesn't really belong in this structure (it doesn't
+ // have any logical connection to the geometry calculations),
+ // but it's convenient to put it here anyway...
};
//
@@ -56,17 +93,16 @@ struct cactus_grid_info
};
//
-// This struct holds the various parameters used in computing the Jacobian
-// matrix.
+// This struct holds parameters for computing the Jacobian matrix.
//
struct Jacobian_info
{
+ enum Jacobian_method Jacobian_method;
fp perturbation_amplitude;
};
//
-// This struct holds the various parameters used in solving the H(h) = 0
-// equations.
+// This struct holds parameters for solving the H(h) = 0 equations.
//
struct solver_info
{
@@ -89,30 +125,28 @@ extern "C"
// horizon_function.cc
void horizon_function(patch_system& ps,
const struct cactus_grid_info& cgi,
- const struct geometry_interpolator_info& gii,
- bool Jacobian_flag,
- jtutil::norm<fp>* H_norms_ptr,
- bool msg_flag = true);
+ const struct geometry_info& gi,
+ bool Jacobian_flag = false,
+ bool msg_flag = false,
+ jtutil::norm<fp>* H_norms_ptr = NULL);
// horizon_Jacobian.cc
-Jacobian& create_Jacobian(patch_system& ps,
- const char Jacobian_type[]);
void horizon_Jacobian(patch_system& ps,
const struct cactus_grid_info& cgi,
- const struct geometry_interpolator_info& gii,
- const struct Jacobian_info& Jac_info,
+ const struct geometry_info& gi,
+ const struct Jacobian_info& Jacobian_info,
Jacobian& Jac);
-void horizon_Jacobian_NP(patch_system& ps,
- const struct cactus_grid_info& cgi,
- const struct geometry_interpolator_info& gii,
- const struct Jacobian_info& Jac_info,
- Jacobian& Jac);
+
+// Schwarzschild_EF.cc
+void Schwarzschild_EF_geometry(patch_system& ps,
+ const struct geometry_info& gi,
+ bool msg_flag);
// Newton.cc
// return true for success, false for failure to converge
bool Newton_solve(patch_system& ps,
const struct cactus_grid_info& cgi,
- const struct geometry_interpolator_info& gii,
- const struct Jacobian_info& Jac_info,
+ const struct geometry_info& gi,
+ const struct Jacobian_info& Jacobian_info,
const struct solver_info& solver_info,
Jacobian& Jac);