SpECTRE Documentation Coverage Report
Current view: top level - ParallelAlgorithms/ApparentHorizonFinder - ComputeCoords.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 50.0 % 2 1
Test Date: 2026-10-22 17:29:42
Legend: Lines:     hit not hit

            Line data    Source code
       1            0 : // Distributed under the MIT License.
       2              : // See LICENSE.txt for details.
       3              : 
       4              : #pragma once
       5              : 
       6              : #include <deque>
       7              : 
       8              : #include "DataStructures/LinkedMessageId.hpp"
       9              : #include "Domain/FunctionsOfTime/FunctionOfTime.hpp"
      10              : #include "ParallelAlgorithms/ApparentHorizonFinder/Storage.hpp"
      11              : #include "Utilities/Gsl.hpp"
      12              : 
      13              : template <size_t VolumeDim>
      14              : class Domain;
      15              : class FastFlow;
      16              : namespace ylm {
      17              : template <typename Frame>
      18              : class Strahlkorper;
      19              : }  // namespace ylm
      20              : 
      21              : namespace ah {
      22              : /*!
      23              :  * \brief Compute the target points for the current iteration.
      24              :  *
      25              :  * \details Returns whether the computation of the target points was successful
      26              :  * or if there are some points outside the domain. If computation fails, one of
      27              :  * two attempts to recover will happen:
      28              :  *
      29              :  * - For the zeroth fast flow iteration, this will increase the $l=0,m=0$
      30              :  *   coefficient (i.e. the size) by 50%.
      31              :  * - For all other iterations, the coefficients become
      32              :  * \begin{equation}
      33              :  * S^{\mathrm{new}}_{lm} = \frac{1}{2}\left(S^{\mathrm{previous}}_{lm} +
      34              :  * S^{\mathrm{failed}}_{lm}\right)
      35              :  * \end{equation}
      36              :  *   where $S^{\mathrm{failed}}_{lm}$ are the coefficients of the failed
      37              :  *   computation and $S^{\mathrm{previous}}_{lm}$ are the coefficients from
      38              :  *   the previous successful iteration.
      39              :  *
      40              :  * This function will try recomputing the coords using the above two rules
      41              :  * \p max_compute_coords_retries times before returning false.
      42              :  *
      43              :  * \param current_iteration The returned pointer to the current Iteration object
      44              :  * \param block_order Priority order to search blocks for containing points
      45              :  * (see `::block_logical_coordinates` for details)
      46              :  * \param time The current time
      47              :  * \param fast_flow The FastFlow object for the current horizon find
      48              :  * \param initial_guess If the current iteration number is zero and
      49              :  * rerunning_with_higher_resolution == false, current_iteration is set to
      50              :  * this Strahlkorper
      51              :  * \param previous_iteration_surface If empty, current_iteration is set to
      52              :  * initial_guess; if one previous iteration, current_iteration is set to
      53              :  * that previous iteration; if two previous iterations, current_iteration
      54              :  * is set by linearly extrapolating in time the two pervious iterations;
      55              :  * if three or more previous iterations, current_iteration is set by
      56              :  * quadratic extrpolation of the three most recent iterations
      57              :  * \param previous_surfaces Previously successful iteratios used to attempt to
      58              :  * recover when some points are outside the domain.
      59              :  * \param max_compute_coords_retries Retry up to this many times before
      60              :  * returning false
      61              :  * \param domain The spatial domain in which the horizon is being found
      62              :  * \param functions_of_time The functions of time for the current domain
      63              :  * \param current_resolution_l Optional; if specified, current_iteration is
      64              :  * prolonged or restricted to this resolution
      65              :  * \param rerunning_with_higher_resolution Must be false unless
      66              :  * current_resolution_l is set; if true, then on iteration zero, set
      67              :  * the initial guess to the previous iteration surface
      68              :  * \returns Whether or not set_current_iteration_coords succeeded
      69              :  */
      70              : template <typename Fr>
      71            1 : bool set_current_iteration_coords(
      72              :     gsl::not_null<ah::Storage::Iteration<Fr>*> current_iteration,
      73              :     gsl::not_null<std::vector<size_t>*> block_order,
      74              :     const LinkedMessageId<double>& time, const FastFlow& fast_flow,
      75              :     const ylm::Strahlkorper<Fr>& initial_guess,
      76              :     const ylm::Strahlkorper<Fr>& previous_iteration_surface,
      77              :     const std::deque<ah::Storage::PreviousSurface<Fr>>& previous_surfaces,
      78              :     size_t max_compute_coords_retries, const Domain<3>& domain,
      79              :     const domain::FunctionsOfTimeMap& functions_of_time,
      80              :     const std::optional<size_t>& current_resolution_l = std::nullopt,
      81              :     bool rerunning_with_higher_resolution = false);
      82              : }  // namespace ah
        

Generated by: LCOV version 2.0-1