SpECTRE Documentation Coverage Report
Current view: top level - Domain/CoordinateMaps - PolarToCartesian.hpp Hit Total Coverage
Commit: ecb8a275e1aebab77dcce48a5e098ed4e486ab4b Lines: 1 18 5.6 %
Date: 2026-08-22 01:05:40
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 <optional>
       9             : 
      10             : #include "DataStructures/Tensor/TypeAliases.hpp"
      11             : 
      12             : /// \cond
      13             : namespace PUP {
      14             : class er;
      15             : }  // namespace PUP
      16             : /// \endcond
      17             : 
      18             : namespace domain::CoordinateMaps {
      19             : 
      20             : /*!
      21             :  * \ingroup CoordinateMapsGroup
      22             :  *
      23             :  * \brief Transformation from polar to Cartesian coordinates.
      24             :  *
      25             :  * \details This is a mapping from \f$(r,\phi) \rightarrow (x,y) \f$.
      26             :  *
      27             :  * The formula for the mapping is...
      28             :  * \f{eqnarray*}
      29             :  *     x &=& r \cos\phi \\
      30             :  *     y &=& r \sin\phi
      31             :  * \f}
      32             :  */
      33           1 : class PolarToCartesian {
      34             :  public:
      35           0 :   static constexpr size_t dim = 2;
      36           0 :   PolarToCartesian();
      37           0 :   ~PolarToCartesian() = default;
      38           0 :   PolarToCartesian(PolarToCartesian&&);
      39           0 :   PolarToCartesian(const PolarToCartesian&);
      40           0 :   PolarToCartesian& operator=(const PolarToCartesian&);
      41           0 :   PolarToCartesian& operator=(PolarToCartesian&&);
      42             : 
      43             :   template <typename T>
      44           0 :   std::array<T, 2> operator()(const std::array<T, 2>& source_coords) const;
      45             : 
      46             :   // NOLINTNEXTLINE(readability-convert-member-functions-to-static)
      47           0 :   std::optional<std::array<double, 2>> inverse(
      48             :       const std::array<double, 2>& target_coords) const;
      49             : 
      50             :   template <typename T>
      51           0 :   tnsr::Ij<T, 2, Frame::NoFrame> jacobian(
      52             :       const std::array<T, 2>& source_coords) const;
      53             : 
      54             :   template <typename T>
      55           0 :   tnsr::Ij<T, 2, Frame::NoFrame> inv_jacobian(
      56             :       const std::array<T, 2>& source_coords) const;
      57             : 
      58             :   // NOLINTNEXTLINE(google-runtime-references)
      59           0 :   void pup(PUP::er& p);
      60             : 
      61           0 :   static constexpr bool is_identity() { return false; }
      62             : 
      63           0 :   static constexpr bool supports_hessian{false};
      64             : };
      65             : 
      66           0 : bool operator==(const PolarToCartesian& lhs, const PolarToCartesian& rhs);
      67             : 
      68           0 : bool operator!=(const PolarToCartesian& lhs, const PolarToCartesian& rhs);
      69             : }  // namespace domain::CoordinateMaps

Generated by: LCOV version 1.14