SpECTRE Documentation Coverage Report
Current view: top level - Domain/Creators/TimeDependentOptions - ExpansionMap.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 5.9 % 34 2
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 <array>
       7              : #include <cstddef>
       8              : #include <memory>
       9              : #include <optional>
      10              : #include <string>
      11              : #include <variant>
      12              : 
      13              : #include "DataStructures/DataVector.hpp"
      14              : #include "Domain/Creators/TimeDependentOptions/FromVolumeFile.hpp"
      15              : #include "Domain/FunctionsOfTime/FunctionOfTime.hpp"
      16              : #include "Options/Auto.hpp"
      17              : #include "Options/Context.hpp"
      18              : #include "Options/Options.hpp"
      19              : #include "Options/String.hpp"
      20              : #include "Utilities/TMPL.hpp"
      21              : 
      22            0 : namespace domain::creators::time_dependent_options {
      23              : /*!
      24              :  * \brief Class that holds hard coded expansion map options from the input file.
      25              :  *
      26              :  * \details This class can also be used as an option tag with the \p type type
      27              :  * alias, `name()` function, and \p help string.
      28              :  */
      29              : template <bool AllowSettleFoTs>
      30            1 : struct ExpansionMapOptions {
      31            0 :   using type = Options::Auto<
      32              :       std::variant<ExpansionMapOptions<AllowSettleFoTs>, FromVolumeFile>,
      33              :       Options::AutoLabel::None>;
      34            0 :   static std::string name() { return "ExpansionMap"; }
      35            0 :   static constexpr Options::String help = {
      36              :       "Options for a time-dependent expansion of the coordinates. Specify "
      37              :       "'None' to not use this map."};
      38              : 
      39            0 :   struct InitialValues {
      40            0 :     using type = std::array<double, 3>;
      41            0 :     static constexpr Options::String help =
      42              :         "Initial values for the expansion map, its velocity and acceleration.";
      43              :   };
      44              : 
      45            0 :   struct InitialValuesOuterBoundary {
      46            0 :     using type = std::array<double, 3>;
      47            0 :     static constexpr Options::String help = {
      48              :         "Initial values for the expansion map, its velocity and acceleration "
      49              :         "at the outer boundary."};
      50              :   };
      51              : 
      52            0 :   struct DecayTimescaleOuterBoundary {
      53            0 :     using type = double;
      54            0 :     static constexpr Options::String help = {
      55              :         "A timescale for how fast the outer boundary expansion approaches its "
      56              :         "asymptotic value."};
      57              :   };
      58              : 
      59            0 :   struct DecayTimescale {
      60            0 :     using type = double;
      61            0 :     static constexpr Options::String help = {
      62              :         "A timescale for how fast the expansion approaches its asymptotic "
      63              :         "value with a SettleToConstant function of time."};
      64              :   };
      65              : 
      66            0 :   struct AsymptoticVelocityOuterBoundary {
      67            0 :     using type = double;
      68            0 :     static constexpr Options::String help = {
      69              :         "The constant velocity of the outer boundary expansion."};
      70              :   };
      71              : 
      72            0 :   using common_options = tmpl::list<InitialValues, DecayTimescaleOuterBoundary>;
      73            0 :   using settle_options =
      74              :       tmpl::push_back<common_options, InitialValuesOuterBoundary,
      75              :                       DecayTimescale>;
      76            0 :   using non_settle_options =
      77              :       tmpl::push_back<common_options, AsymptoticVelocityOuterBoundary>;
      78              : 
      79            0 :   using options = tmpl::conditional_t<
      80              :       AllowSettleFoTs,
      81              :       tmpl::list<Options::Alternatives<settle_options, non_settle_options>>,
      82              :       non_settle_options>;
      83              : 
      84            0 :   ExpansionMapOptions() = default;
      85              :   // Constructor for SettleToConstant functions of time
      86            0 :   ExpansionMapOptions(
      87              :       const std::array<double, 3>& initial_values_in,
      88              :       double decay_timescale_outer_boundary_in,
      89              :       const std::array<double, 3>& initial_values_outer_boundary_in,
      90              :       double decay_timescale_in, const Options::Context& context = {});
      91              :   // Constructor for non SettleToConstant functions of time
      92            0 :   ExpansionMapOptions(const std::array<double, 3>& initial_values_in,
      93              :                       double decay_timescale_outer_boundary_in,
      94              :                       double asymptotic_velocity_outer_boundary_in,
      95              :                       const Options::Context& context = {});
      96              : 
      97            0 :   std::array<DataVector, 3> initial_values{};
      98            0 :   std::array<DataVector, 3> initial_values_outer_boundary{};
      99            0 :   double decay_timescale_outer_boundary{};
     100            0 :   std::optional<double> decay_timescale;
     101            0 :   std::optional<double> asymptotic_velocity_outer_boundary;
     102              : };
     103              : 
     104              : /*!
     105              :  * \brief Helper functions that take the variant of the expansion map options,
     106              :  * and return the fully constructed expansion functions of time.
     107              :  *
     108              :  * \details The function of time will have a new \p initial_time and \p
     109              :  * expiration_time, unless it is read from a file and is replaying.
     110              :  */
     111              : template <bool AllowSettleFoTs>
     112            1 : FunctionsOfTimeMap get_expansion(
     113              :     const std::variant<ExpansionMapOptions<AllowSettleFoTs>, FromVolumeFile>&
     114              :         expansion_map_options,
     115              :     double initial_time, double expiration_time);
     116              : }  // namespace domain::creators::time_dependent_options
        

Generated by: LCOV version 2.0-1