SpECTRE Documentation Coverage Report
Current view: top level - ControlSystem/Tags - QueueTags.hpp Hit Total Coverage
Commit: 3ddfed217f4ad7ff185c653c2ab25b955494084a Lines: 10 20 50.0 %
Date: 2024-05-01 02:01:53
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 "DataStructures/DataBox/Prefixes.hpp"
       7             : #include "DataStructures/Tensor/TypeAliases.hpp"
       8             : #include "NumericalAlgorithms/SphericalHarmonics/Tags.hpp"
       9             : #include "Utilities/TaggedTuple.hpp"
      10             : 
      11             : /// \cond
      12             : class DataVector;
      13             : namespace ylm {
      14             : template <typename Frame>
      15             : class Strahlkorper;
      16             : }  // namespace ylm
      17             : namespace domain {
      18             : enum class ObjectLabel;
      19             : }  // namespace domain
      20             : /// \endcond
      21             : 
      22             : /// \ingroup ControlSystemGroup
      23             : /// All tags that will be used in the LinkedMessageQueue's within control
      24             : /// systems.
      25             : ///
      26             : /// These tags will be used to retrieve the results of the measurements that
      27             : /// were sent to the control system which have been placed inside a
      28             : /// LinkedMessageQueue.
      29           1 : namespace control_system::QueueTags {
      30             : /// \ingroup ControlSystemGroup
      31             : /// Holds the centers of each horizon from measurements as DataVectors
      32             : template <::domain::ObjectLabel Horizon>
      33           1 : struct Center {
      34           0 :   using type = DataVector;
      35             : };
      36             : 
      37             : /// \ingroup ControlSystemGroup
      38             : /// Holds a full strahlkorper from measurements that represents a horizon
      39             : template <typename Frame>
      40           1 : struct Horizon {
      41           0 :   using type = ylm::Strahlkorper<Frame>;
      42             : };
      43             : 
      44             : /// \ingroup ControlSystemGroup
      45             : /// Holds a full strahlkorper from measurements for the excision surface
      46             : template <typename Frame>
      47           1 : struct ExcisionSurface {
      48           0 :   using type = ylm::Strahlkorper<Frame>;
      49             : };
      50             : 
      51             : /// \ingroup ControlSystemGroup
      52             : /// Holds the lapse on the `ExcisionSurface`
      53           1 : struct LapseOnExcisionSurface {
      54           0 :   using type = Scalar<DataVector>;
      55             : };
      56             : 
      57             : /*!
      58             :  * \ingroup ControlSystemGroup
      59             :  * \brief Holds a quantity that's similar to the shift, but isn't the shift, on
      60             :  * the `ExcisionSurface`.
      61             :  *
      62             :  * \details This holds
      63             :  *
      64             :  * \f{equation}{
      65             :  * \beta^i \frac{\partial x^\hat{i}}{\partial x^i} =
      66             :  * \hat{beta}^\hat{i} + \frac{\partial x^\hat{i}}{\partial t}
      67             :  * \f}
      68             :  *
      69             :  * where hatted quantities are in the distorted frame and non-hatted quantities
      70             :  * are in the grid frame.
      71             :  */
      72             : template <typename Frame>
      73           1 : struct ShiftyQuantity {
      74           0 :   using type = tnsr::I<DataVector, 3, Frame>;
      75             : };
      76             : 
      77             : /// \ingroup ControlSystemGroup
      78             : /// Holds the spatial metric on the `ExcisionSurface`
      79             : template <typename Frame>
      80           1 : struct SpatialMetricOnExcisionSurface {
      81           0 :   using type = tnsr::ii<DataVector, 3, Frame>;
      82             : };
      83             : 
      84             : /// \ingroup ControlSystemGroup
      85             : /// Holds the inverse spatial metric on the `ExcisionSurface`
      86             : template <typename Frame>
      87           1 : struct InverseSpatialMetricOnExcisionSurface {
      88           0 :   using type = tnsr::II<DataVector, 3, Frame>;
      89             : };
      90             : 
      91             : /*!
      92             :  * \ingroup ControlSystemGroup
      93             :  * \brief A queue tag that holds a TaggedTuple of all quantities needed for the
      94             :  * excision measurement of size control.
      95             :  *
      96             :  * \details Holds the following queue tags in a TaggedTuple in order:
      97             :  *
      98             :  * - `control_system::QueueTags::ExcisionSurface`
      99             :  * - `control_system::QueueTags::LapseOnExcisionSurface`
     100             :  * - `control_system::QueueTags::ShiftyQuantity`
     101             :  * - `control_system::QueueTags::SpatialMetricOnExcisionSurface`
     102             :  * - `control_system::QueueTags::InverseSpatialMetricOnExcisionSurface`
     103             :  */
     104             : template <typename Frame>
     105           1 : struct SizeExcisionQuantities {
     106           0 :   using type =
     107             :       tuples::TaggedTuple<ExcisionSurface<Frame>, LapseOnExcisionSurface,
     108             :                           ShiftyQuantity<Frame>,
     109             :                           SpatialMetricOnExcisionSurface<Frame>,
     110             :                           InverseSpatialMetricOnExcisionSurface<Frame>>;
     111             : };
     112             : 
     113             : /*!
     114             :  * \ingroup ControlSystemGroup
     115             :  * \brief A queue tag that holds a TaggedTuple of all quantities needed for the
     116             :  * horizon measurement of size control.
     117             :  *
     118             :  * \details Holds the following queue tags in a TaggedTuple in order:
     119             :  *
     120             :  * - `ylm::Tags::Strahlkorper`
     121             :  * - `::Tags::dt<ylm::Tags::Strahlkorper>`
     122             :  */
     123             : template <typename Frame>
     124           1 : struct SizeHorizonQuantities {
     125           0 :   using type = tuples::TaggedTuple<ylm::Tags::Strahlkorper<Frame>,
     126             :                                    ::Tags::dt<ylm::Tags::Strahlkorper<Frame>>>;
     127             : };
     128             : }  // namespace control_system::QueueTags

Generated by: LCOV version 1.14