SpECTRE Documentation Coverage Report
Current view: top level - DataStructures/Tags - TempTensor.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 84.2 % 38 32
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 <cstddef>
       7              : #include <string>
       8              : 
       9              : #include "DataStructures/DataBox/Tag.hpp"
      10              : #include "DataStructures/Tensor/TypeAliases.hpp"
      11              : 
      12              : /// \cond
      13              : class DataVector;
      14              : namespace Frame {
      15              : struct Inertial;
      16              : }  // namespace Frame
      17              : /// \endcond
      18              : 
      19              : /*!
      20              :  * \brief Contains objects related to Tags
      21              :  */
      22              : namespace Tags {
      23              : template <size_t N, typename T>
      24            0 : struct TempTensor : db::SimpleTag {
      25            0 :   using type = T;
      26            0 :   static std::string name() {
      27              :     return std::string("TempTensor") + std::to_string(N);
      28              :   }
      29              : };
      30              : 
      31              : /*!
      32              :  * \brief A struct that constructs a `TempTensor` given a label \p N and type
      33              :  * \p TensorType. Call with `make_temp_tensor<N>::apply<Type>`
      34              :  *
      35              :  * \see convert_to_temp_tensors
      36              :  */
      37              : template <size_t N>
      38            1 : struct make_temp_tensor {
      39              :   template <typename TensorType>
      40            0 :   struct apply {
      41            0 :     using type = ::Tags::TempTensor<N, TensorType>;
      42              :   };
      43              : };
      44              : 
      45              : /*!
      46              :  * \brief Takes a `tmpl::list` of `Tensor` types and a label \p N which is
      47              :  * applied to all `TempTensor`s in the resulting list.
      48              :  *
      49              :  * \see make_temp_tensor
      50              :  */
      51              : template <typename List, size_t N>
      52            1 : using convert_to_temp_tensors =
      53              :     tmpl::transform<List,
      54              :                     typename make_temp_tensor<N>::template apply<tmpl::_1>>;
      55              : 
      56              : /// @{
      57              : /// \ingroup PeoGroup
      58              : /// Variables Tags for temporary tensors inside a function.
      59              : template <size_t N, typename DataType = DataVector>
      60            1 : using TempScalar = TempTensor<N, Scalar<DataType>>;
      61              : 
      62              : // Rank 1
      63              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      64              :           typename DataType = DataVector>
      65            1 : using Tempa = TempTensor<N, tnsr::a<DataType, SpatialDim, Fr>>;
      66              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      67              :           typename DataType = DataVector>
      68            1 : using TempA = TempTensor<N, tnsr::A<DataType, SpatialDim, Fr>>;
      69              : 
      70              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      71              :           typename DataType = DataVector>
      72            1 : using Tempi = TempTensor<N, tnsr::i<DataType, SpatialDim, Fr>>;
      73              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      74              :           typename DataType = DataVector>
      75            1 : using TempI = TempTensor<N, tnsr::I<DataType, SpatialDim, Fr>>;
      76              : 
      77              : // Rank 2
      78              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      79              :           typename DataType = DataVector>
      80            1 : using Tempab = TempTensor<N, tnsr::ab<DataType, SpatialDim, Fr>>;
      81              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      82              :           typename DataType = DataVector>
      83            1 : using TempaB = TempTensor<N, tnsr::aB<DataType, SpatialDim, Fr>>;
      84              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      85              :           typename DataType = DataVector>
      86            1 : using TempAb = TempTensor<N, tnsr::Ab<DataType, SpatialDim, Fr>>;
      87              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      88              :           typename DataType = DataVector>
      89            1 : using TempAB = TempTensor<N, tnsr::AB<DataType, SpatialDim, Fr>>;
      90              : 
      91              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      92              :           typename DataType = DataVector>
      93            1 : using Tempij = TempTensor<N, tnsr::ij<DataType, SpatialDim, Fr>>;
      94              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      95              :           typename DataType = DataVector>
      96            1 : using TempiJ = TempTensor<N, tnsr::iJ<DataType, SpatialDim, Fr>>;
      97              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
      98              :           typename DataType = DataVector>
      99            1 : using TempIj = TempTensor<N, tnsr::Ij<DataType, SpatialDim, Fr>>;
     100              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     101              :           typename DataType = DataVector>
     102            1 : using TempIJ = TempTensor<N, tnsr::IJ<DataType, SpatialDim, Fr>>;
     103              : 
     104              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     105              :           typename DataType = DataVector>
     106            1 : using Tempia = TempTensor<N, tnsr::ia<DataType, SpatialDim, Fr>>;
     107              : 
     108              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     109              :           typename DataType = DataVector>
     110            1 : using Tempaa = TempTensor<N, tnsr::aa<DataType, SpatialDim, Fr>>;
     111              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     112              :           typename DataType = DataVector>
     113            1 : using TempAA = TempTensor<N, tnsr::AA<DataType, SpatialDim, Fr>>;
     114              : 
     115              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     116              :           typename DataType = DataVector>
     117            1 : using Tempii = TempTensor<N, tnsr::ii<DataType, SpatialDim, Fr>>;
     118              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     119              :           typename DataType = DataVector>
     120            1 : using TempII = TempTensor<N, tnsr::II<DataType, SpatialDim, Fr>>;
     121              : 
     122              : // Rank 3
     123              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     124              :           typename DataType = DataVector>
     125            1 : using Tempijj = TempTensor<N, tnsr::ijj<DataType, SpatialDim, Fr>>;
     126              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     127              :           typename DataType = DataVector>
     128            1 : using TempIjj = TempTensor<N, tnsr::Ijj<DataType, SpatialDim, Fr>>;
     129              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     130              :           typename DataType = DataVector>
     131            1 : using Tempijk = TempTensor<N, tnsr::ijk<DataType, SpatialDim, Fr>>;
     132              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     133              :           typename DataType = DataVector>
     134            1 : using TempiJk = TempTensor<N, tnsr::iJk<DataType, SpatialDim, Fr>>;
     135              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     136              :           typename DataType = DataVector>
     137            1 : using TempijK = TempTensor<N, tnsr::ijK<DataType, SpatialDim, Fr>>;
     138              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     139              :           typename DataType = DataVector>
     140            1 : using Tempiii = TempTensor<N, tnsr::iii<DataType, SpatialDim, Fr>>;
     141              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     142              :           typename DataType = DataVector>
     143            1 : using Tempiaa = TempTensor<N, tnsr::iaa<DataType, SpatialDim, Fr>>;
     144              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     145              :           typename DataType = DataVector>
     146            1 : using TempIaa = TempTensor<N, tnsr::Iaa<DataType, SpatialDim, Fr>>;
     147              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     148              :           typename DataType = DataVector>
     149            1 : using TempiaB = TempTensor<N, tnsr::iaB<DataType, SpatialDim, Fr>>;
     150              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     151              :           typename DataType = DataVector>
     152            1 : using Tempabb = TempTensor<N, tnsr::abb<DataType, SpatialDim, Fr>>;
     153              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     154              :           typename DataType = DataVector>
     155            1 : using TempabC = TempTensor<N, tnsr::abC<DataType, SpatialDim, Fr>>;
     156              : 
     157              : // Rank 4
     158              : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
     159              :           typename DataType = DataVector>
     160            1 : using Tempijaa = TempTensor<N, tnsr::ijaa<DataType, SpatialDim, Fr>>;
     161              : /// @}
     162              : }  // namespace Tags
        

Generated by: LCOV version 2.0-1