SpECTRE Documentation Coverage Report
Current view: top level - Domain/CoordinateMaps - Distribution.hpp Hit Total Coverage
Commit: 923cd4a8ea30f5a5589baa60b0a93e358ca9f8e8 Lines: 1 13 7.7 %
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 <optional>
       7             : #include <ostream>
       8             : 
       9             : /// \cond
      10             : namespace Options {
      11             : class Option;
      12             : template <typename T>
      13             : struct create_from_yaml;
      14             : }  // namespace Options
      15             : /// \endcond
      16             : 
      17             : namespace domain::CoordinateMaps {
      18             : 
      19             : /*!
      20             :  * \brief Distribution of grid points in one dimension
      21             :  *
      22             :  * Used to select a distribution of grid points in the input file.
      23             :  *
      24             :  * \see domain::CoordinateMaps::Wedge
      25             :  */
      26           0 : enum class Distribution {
      27             :   Linear,
      28             :   Equiangular,
      29             :   Logarithmic,
      30             :   Inverse,
      31             :   Projective
      32             : };
      33             : 
      34           0 : std::ostream& operator<<(std::ostream& os, Distribution distribution);
      35             : 
      36             : /*!
      37             :  * \brief A `Distribution` and the corresponding singularity position
      38             :  *
      39             :  * The `singularity_position` is only meaningful for `Distribution::Logarithmic`
      40             :  * and `Distribution::Inverse`.
      41             :  *
      42             :  * This class can be option-created like so:
      43             :  * - Just the name of the distribution for `Linear`, `Equiangular`, and
      44             :  *  `Projective`.
      45             :  * - The name of the distribution and the singularity position for
      46             :  *   `Logarithmic` and `Inverse`:
      47             :  *
      48             :  * ```yaml
      49             :  * Logarithmic:
      50             :  *   SingularityPosition: 0.0
      51             :  * ```
      52             :  */
      53           1 : struct DistributionAndSingularityPosition {
      54           0 :   Distribution distribution = Distribution::Linear;
      55           0 :   std::optional<double> singularity_position = std::nullopt;
      56             : };
      57             : 
      58           0 : bool operator==(const DistributionAndSingularityPosition& lhs,
      59             :                 const DistributionAndSingularityPosition& rhs);
      60             : 
      61             : }  // namespace domain::CoordinateMaps
      62             : 
      63             : template <>
      64           0 : struct Options::create_from_yaml<domain::CoordinateMaps::Distribution> {
      65             :   template <typename Metavariables>
      66           0 :   static domain::CoordinateMaps::Distribution create(
      67             :       const Options::Option& options) {
      68             :     return create<void>(options);
      69             :   }
      70             : };
      71             : template <>
      72           0 : domain::CoordinateMaps::Distribution
      73             : Options::create_from_yaml<domain::CoordinateMaps::Distribution>::create<void>(
      74             :     const Options::Option& options);
      75             : 
      76             : template <>
      77           0 : struct Options::create_from_yaml<
      78             :     domain::CoordinateMaps::DistributionAndSingularityPosition> {
      79             :   template <typename Metavariables>
      80           0 :   static domain::CoordinateMaps::DistributionAndSingularityPosition create(
      81             :       const Options::Option& options) {
      82             :     return create<void>(options);
      83             :   }
      84             : };
      85             : template <>
      86           0 : domain::CoordinateMaps::DistributionAndSingularityPosition
      87             : Options::create_from_yaml<
      88             :     domain::CoordinateMaps::DistributionAndSingularityPosition>::
      89             :     create<void>(const Options::Option& options);

Generated by: LCOV version 1.14