SpECTRE Documentation Coverage Report
Current view: top level - Domain/Creators/TimeDependentOptions - GridCenters.hpp Hit Total Coverage
Commit: 923cd4a8ea30f5a5589baa60b0a93e358ca9f8e8 Lines: 2 17 11.8 %
Date: 2025-11-07 19:37:56
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 <array>
       7             : #include <optional>
       8             : #include <string>
       9             : 
      10             : #include "DataStructures/DataVector.hpp"
      11             : #include "Domain/FunctionsOfTime/FunctionOfTime.hpp"
      12             : #include "Options/Auto.hpp"
      13             : #include "Options/Context.hpp"
      14             : #include "Options/String.hpp"
      15             : #include "Utilities/TMPL.hpp"
      16             : 
      17             : namespace domain::creators::time_dependent_options {
      18             : /*!
      19             :  * \brief Class that holds map options from the grid centers location.
      20             :  *
      21             :  * This is needed in BNS simulations where the stars are not at the centers of
      22             :  * the cubes.
      23             :  *
      24             :  * \details This class can also be used as an option tag with the \p type type
      25             :  * alias, `name()` function, and \p help string.
      26             :  */
      27           1 : struct GridCentersOptions {
      28           0 :   using type = Options::Auto<GridCentersOptions, Options::AutoLabel::None>;
      29           0 :   static std::string name() { return "GridCenters"; }
      30             : 
      31           0 :   struct SpecEvolutionParametersPerlFile {
      32           0 :     using type = std::string;
      33           0 :     static constexpr Options::String help = {
      34             :         "Path to the EvolutionParameters.perl file that SpEC outputs to parse "
      35             :         "for the initial positions and velocities."};
      36             :   };
      37             : 
      38           0 :   struct ScaleInspiralRateBy {
      39           0 :     using type = Options::Auto<double>;
      40           0 :     static constexpr Options::String help = {
      41             :         "The inspiral rate from the initial data is not exact because of gauge "
      42             :         "changes and in general that initial data is not perfect. The control "
      43             :         "system can have an easier time if the inspiral rate is scaled in some "
      44             :         "cases. You typically shouldn't need to scale by more than a factor of "
      45             :         "2 larger or smaller."};
      46             :   };
      47             : 
      48           0 :   using options =
      49             :       tmpl::list<SpecEvolutionParametersPerlFile, ScaleInspiralRateBy>;
      50           0 :   static constexpr Options::String help = {
      51             :       "Sets the initial value of the GridCenters of the objects."};
      52             : 
      53           0 :   GridCentersOptions();
      54           0 :   explicit GridCentersOptions(
      55             :       const std::string& spec_evolution_parameters_perl_file,
      56             :       std::optional<double> in_scale_inspiral_rate_by,
      57             :       const Options::Context& context = {});
      58             : 
      59           0 :   std::array<DataVector, 3> initial_values{};
      60           0 :   std::optional<double> scale_inspiral_rate_by{std::nullopt};
      61             : };
      62             : 
      63             : /*!
      64             :  * \brief Helper function that creates the FunctionOfTime from the center
      65             :  * options, initial time, and expiration time.
      66             :  */
      67           1 : std::unique_ptr<domain::FunctionsOfTime::FunctionOfTime> get_grid_centers(
      68             :     const GridCentersOptions& grid_centers_options, double initial_time,
      69             :     double expiration_time);
      70             : }  // namespace domain::creators::time_dependent_options

Generated by: LCOV version 1.14