aboutsummaryrefslogtreecommitdiff
path: root/src/gr/AHFinderDirect.hh
blob: 59dacb8132145f666c8c1fe4f3d22d5a93e2d1f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// AHFinderDirect.hh -- misc global-within-this-thorn stuff
// $Header$

//******************************************************************************

// 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.
//
struct	geometry_interpolator_info
	{
	int operator_handle;		// Cactus handle to interpolation op
	int param_table_handle;		// Cactus handle to parameter table
					// for the interpolator
	};

//
// This structure holds all the information we need about the Cactus grid
// and gridfns outside the top-level driver.  At present we use
//   CCTK_InterpLocalUniform()
// to access the Cactus gridfns, and much of this information is specific
// to that API.
//
struct	cactus_grid_info
	{
	cGH *GH;			// --> Cactus grid hierarchy

	// Cactus coordinate system
	fp coord_origin[N_GRID_DIMS];	// (x,y,z) of grid posn (0,0,0)
	fp coord_delta[N_GRID_DIMS];	// (x,y,z) grid spacing

	// dimensions of gridfn data, viewed as a 3-D array
	// n.b. storage ordering is Fortran,
	//	i.e. i is contiguous, j has stride Ni, k has stride Ni*Nj
	CCTK_INT gridfn_dims[N_GRID_DIMS];

	// --> Cactus gridfn data for grid posn (0,0,0)
	const fp* g_dd_11_data;
	const fp* g_dd_12_data;
	const fp* g_dd_13_data;
	const fp* g_dd_22_data;
	const fp* g_dd_23_data;
	const fp* g_dd_33_data;
	const fp* K_dd_11_data;
	const fp* K_dd_12_data;
	const fp* K_dd_13_data;
	const fp* K_dd_22_data;
	const fp* K_dd_23_data;
	const fp* K_dd_33_data;
	};

//******************************************************************************

//
// prototypes for functions visible outside their source files
//

// driver.cc
extern "C"
  void AHFinderDirect_driver(CCTK_ARGUMENTS);

// horizon_function.cc
void horizon_function(patch_system& ps,
		      const struct cactus_grid_info& cgi,
		      const struct geometry_interpolator_info& gii);