diff options
Diffstat (limited to 'src/driver/BH_diagnostics.hh')
-rw-r--r-- | src/driver/BH_diagnostics.hh | 97 |
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(); |