SpECTRE Documentation Coverage Report
Current view: top level - Domain/CoordinateMaps - SphericalToCartesianPfaffian.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 5.6 % 18 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 <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 Pfaffian transformation from spherical to Cartesian coordinates.
      24              :  *
      25              :  * \note This map is designed to be used together with Spherepack! Spherepack
      26              :  * expects a Pfaffian transformation of the derivatives.
      27              :  *
      28              :  * \details This is a Pfaffian mapping from \f$(r,\theta,\phi) \rightarrow
      29              :  * (x,y,z) \f$.
      30              :  *
      31              :  * The formula for the mapping is...
      32              :  * \f{eqnarray*}
      33              :  *     x &=& r \sin\theta \cos\phi \\
      34              :  *     y &=& r \sin\theta \sin\phi \\
      35              :  *     z &=& r \cos\theta
      36              :  * \f}
      37              :  *
      38              :  * The Pfaffian basis vectors
      39              :  * \f$ (e_{\hat r}, e_{\hat \theta}, e_{\hat \phi})\f$
      40              :  * are related to the coordinate basis vectors
      41              :  * \f$ (e_r, e_{\theta}, e_{\phi})\f$
      42              :  * by...
      43              :  * \f{eqnarray*}
      44              :  *     e_{\hat r}      &=& e_r \\
      45              :  *     e_{\hat \theta} &=& e_{\theta} \\
      46              :  *     e_{\hat \phi}   &=& \frac{1}{\sin \theta} e_{\phi}
      47              :  * \f}
      48              :  */
      49            1 : class SphericalToCartesianPfaffian {
      50              :  public:
      51            0 :   static constexpr size_t dim = 3;
      52            0 :   SphericalToCartesianPfaffian();
      53            0 :   ~SphericalToCartesianPfaffian() = default;
      54            0 :   SphericalToCartesianPfaffian(SphericalToCartesianPfaffian&&);
      55            0 :   SphericalToCartesianPfaffian(const SphericalToCartesianPfaffian&);
      56            0 :   SphericalToCartesianPfaffian& operator=(const SphericalToCartesianPfaffian&);
      57            0 :   SphericalToCartesianPfaffian& operator=(SphericalToCartesianPfaffian&&);
      58              : 
      59              :   template <typename T>
      60            0 :   std::array<T, 3> operator()(const std::array<T, 3>& source_coords) const;
      61              : 
      62              :   // NOLINTNEXTLINE(readability-convert-member-functions-to-static)
      63            0 :   std::optional<std::array<double, 3>> inverse(
      64              :       const std::array<double, 3>& target_coords) const;
      65              : 
      66              :   template <typename T>
      67            0 :   tnsr::Ij<T, 3, Frame::NoFrame> jacobian(
      68              :       const std::array<T, 3>& source_coords) const;
      69              : 
      70              :   template <typename T>
      71            0 :   tnsr::Ij<T, 3, Frame::NoFrame> inv_jacobian(
      72              :       const std::array<T, 3>& source_coords) const;
      73              : 
      74              :   // NOLINTNEXTLINE(google-runtime-references)
      75            0 :   void pup(PUP::er& p);
      76              : 
      77            0 :   static constexpr bool is_identity() { return false; }
      78              : 
      79            0 :   static constexpr bool supports_hessian{false};
      80              : };
      81              : 
      82            0 : bool operator==(const SphericalToCartesianPfaffian& lhs,
      83              :                 const SphericalToCartesianPfaffian& rhs);
      84              : 
      85            0 : bool operator!=(const SphericalToCartesianPfaffian& lhs,
      86              :                 const SphericalToCartesianPfaffian& rhs);
      87              : }  // namespace domain::CoordinateMaps
        

Generated by: LCOV version 2.0-1