7.6 Criteria for assessing algorithms
Ideally, an apparent horizon finder should have several attributes:
-
Robust:
- The algorithm/code should find an (the) apparent horizon in a wide range of
numerically-computed slices, without requiring extensive tuning of initial guesses, iteration
parameters, etc. This is often relatively easy to achieve for “tracking” the time evolution of an
existing apparent horizon (where the most recent previously-found apparent horizon provides an
excellent initial guess for the new apparent horizon position) but may be difficult for detecting
the appearance of a new (outermost) apparent horizon in an evolution, or for initial-data or
other studies where there is no “previous time step”.
-
Accurate:
- The algorithm/code should find an (the) apparent horizon to high accuracy and should
not report spurious “solutions” (“solutions” which are not actually good approximations to
apparent horizons or, at least, to MOTSs).
-
Efficient:
- The algorithm/code should be efficient in terms of its memory use and CPU time; in
practice CPU time is generally the major constraint. It is often desirable to find apparent
horizons at each time step (or, at least, at frequent intervals) during a numerical evolution. For
this to be practical the apparent horizon finder must be very fast.
In practice, no apparent horizon finder is perfect in all these dimensions, so trade-offs are inevitable,
particularly when ease of programming is considered.