aboutsummaryrefslogtreecommitdiff
path: root/src/driver/BH_diagnostics.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver/BH_diagnostics.hh')
-rw-r--r--src/driver/BH_diagnostics.hh97
1 files changed, 62 insertions, 35 deletions
diff --git a/src/driver/BH_diagnostics.hh b/src/driver/BH_diagnostics.hh
index 0d368e8..6698b05 100644
--- a/src/driver/BH_diagnostics.hh
+++ b/src/driver/BH_diagnostics.hh
@@ -4,7 +4,7 @@
//
// prerequisites:
// <stdio.h>
-// "cctk.h"
+// "cctk_Arguments.h"
//
// everything in this file is inside this namespace
@@ -31,57 +31,63 @@ struct BH_diagnostics_info
// Note that all the diagnostics are for the full apparent horizon, even
// if we don't actually store all of it due to patch-system symmetries.
//
-// All the "mean" quantities are computed via surface integrals using the
-// induced metric on the surface.
-//
struct BH_diagnostics
{
public:
- // mean x,y,z
+ fp origin_x, origin_y, origin_z;
fp centroid_x, centroid_y, centroid_z;
-
- // these are quadrupole moments about the centroid, i.e.
- // mean(xi*xj) - centroid_i*centroid_j
- fp quadrupole_xx, quadrupole_xy, quadrupole_xz,
- quadrupole_yy, quadrupole_yz,
- quadrupole_zz;
-
- // min,max,mean surface radius about local coordinate origin
+ fp quadrupole_xx, quadrupole_xy, quadrupole_xz;
+ fp quadrupole_yy, quadrupole_yz, quadrupole_zz;
fp min_radius, max_radius, mean_radius;
// xyz bounding box
- fp min_x, max_x,
- min_y, max_y,
- min_z, max_z;
-
- // proper circumference
- // (computed using induced metric along these local-coordinate planes)
- fp circumference_xy,
- circumference_xz,
- circumference_yz;
-
- // surface area (computed using induced metric)
- // and quantities derived from it
- fp area, irreducible_mass, areal_radius;
+ fp min_x, max_x, min_y, max_y, min_z, max_z;
+
+ fp circumference_xy, circumference_xz, circumference_yz;
+ fp area;
+ fp expansion;
+ fp inner_expansion;
+ fp product_expansion;
+ fp mean_curvature;
+
+ fp area_gradient;
+ fp expansion_gradient;
+ fp inner_expansion_gradient;
+ fp product_expansion_gradient;
+ fp mean_curvature_gradient;
+ fp mean_curvature_minimum;
+ fp mean_curvature_maximum;
+ fp mean_curvature_integral;
public:
// position of diagnostics in buffer and number of diagnostics
enum {
- posn__centroid_x = 0, posn__centroid_y, posn__centroid_z,
- posn__quadrupole_xx, posn__quadrupole_xy, posn__quadrupole_xz,
- posn__quadrupole_yy, posn__quadrupole_yz,
- posn__quadrupole_zz,
+ posn__origin_x = 0, posn__origin_y, posn__origin_z,
+ posn__centroid_x, posn__centroid_y, posn__centroid_z,
+ posn__quadrupole_xx, posn__quadrupole_xy, posn__quadrupole_xz,
+ posn__quadrupole_yy, posn__quadrupole_yz, posn__quadrupole_zz,
posn__min_radius, posn__max_radius, posn__mean_radius,
posn__min_x, posn__max_x,
posn__min_y, posn__max_y,
posn__min_z, posn__max_z,
- posn__circumference_xy,
- posn__circumference_xz,
- posn__circumference_yz,
-
- posn__area, posn__irreducible_mass, posn__areal_radius,
+ posn__circumference_xy, posn__circumference_xz,
+ posn__circumference_yz,
+ posn__area,
+ posn__expansion,
+ posn__inner_expansion,
+ posn__product_expansion,
+ posn__mean_curvature,
+
+ posn__area_gradient,
+ posn__expansion_gradient,
+ posn__inner_expansion_gradient,
+ posn__product_expansion_gradient,
+ posn__mean_curvature_gradient,
+ posn__mean_curvature_minimum,
+ posn__mean_curvature_maximum,
+ posn__mean_curvature_integral,
N_buffer // no comma // size of buffer
};
@@ -93,6 +99,16 @@ public:
public:
// compute diagnostics (assuming that apparent horizon has been found)
void compute(const patch_system& ps,
+ const fp area,
+ const fp mean_expansion,
+ const fp mean_inner_expansion,
+ const fp mean_product_expansion,
+ const fp mean_mean_curvature,
+ const fp area_gradient,
+ const fp mean_expansion_gradient,
+ const fp mean_inner_expansion_gradient,
+ const fp mean_product_expansion_gradient,
+ const fp mean_mean_curvature_gradient,
const struct BH_diagnostics_info& BH_diagnostics_info);
// print (CCTK_VInfo()) a line or two summarizing diagnostics
@@ -112,6 +128,17 @@ public:
void output(FILE* fileptr, const struct IO_info& IO_info)
const;
+ // store the diagnostics in the Cactus variables
+ void store(CCTK_ARGUMENTS, int horizon_number, int surface_number)
+ const;
+
+ // save the horizon shape in grid arrays
+ void save(CCTK_ARGUMENTS, int horizon_number)
+ const;
+
+ // load the horizon shape from grid arrays
+ void load(CCTK_ARGUMENTS, int horizon_number);
+
// constructor initializes all diagnostics to 0.0
BH_diagnostics();