SpECTRE Documentation Coverage Report
Current view: top level - Domain/CoordinateMaps - Distribution.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 7.7 % 13 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 <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 2.0-1