SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/ForceFree/Subcell - TciOnFdGrid.hpp Hit Total Coverage
Commit: 52f20d7d69c179a8fabd675cc9d8c5355c7d621c Lines: 1 5 20.0 %
Date: 2024-04-17 15:32:38
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 <tuple>
       8             : 
       9             : #include "Domain/Tags.hpp"
      10             : #include "Evolution/DgSubcell/RdmpTciData.hpp"
      11             : #include "Evolution/DgSubcell/SubcellOptions.hpp"
      12             : #include "Evolution/DgSubcell/Tags/DataForRdmpTci.hpp"
      13             : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
      14             : #include "Evolution/DgSubcell/Tags/SubcellOptions.hpp"
      15             : #include "Evolution/Systems/ForceFree/Subcell/TciOptions.hpp"
      16             : #include "Evolution/Systems/ForceFree/Tags.hpp"
      17             : #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
      18             : #include "Utilities/TMPL.hpp"
      19             : 
      20             : /// \cond
      21             : class DataVector;
      22             : template <size_t Dim>
      23             : class Mesh;
      24             : namespace gsl {
      25             : template <typename T>
      26             : class not_null;
      27             : }  // namespace gsl
      28             : /// \endcond
      29             : 
      30             : namespace ForceFree::subcell {
      31             : 
      32             : /*!
      33             :  * \brief The troubled-cell indicator run on the FD grid to check if the
      34             :  * corresponding DG solution is admissible.
      35             :  *
      36             :  * The following checks are done in the order they are listed:
      37             :  *
      38             :  * <table>
      39             :  * <caption>List of checks</caption>
      40             :  * <tr><th> Description <th> TCI status
      41             :  *
      42             :  * <tr><td> apply the Persson TCI to magnitude of `TildeE`
      43             :  * <td> `+1`
      44             :  *
      45             :  * <tr><td> apply the Persson TCI to magnitude of `TildeB`
      46             :  * <td> `+2`
      47             :  *
      48             :  * <tr><td> apply the Persson TCI to `TildeQ` if \f$\max(|\tilde{q}|)\f$ is
      49             :  * larger than `tci_options.cutoff_tilde_q`.
      50             :  * Check is skipped if `tci_options.tilde_q_cutoff == DoNotCheckTildeQ`.
      51             :  * <td> `+3`
      52             :  *
      53             :  * <tr><td> apply the RDMP TCI to magnitude of `TildeE`
      54             :  * <td> `+4`
      55             :  *
      56             :  * <tr><td> apply the RDMP TCI to magnitude of `TildeB`
      57             :  * <td> `+5`
      58             :  *
      59             :  * </table>
      60             :  *
      61             :  * The second column of the table above denotes the value of an integer stored
      62             :  * as the first element of the returned `std::tuple`, which indicates the
      63             :  * particular kind of check that failed. For example, if the second check
      64             :  * (Persson TCI to `mag(TildeB)`) fails and element is marked as troubled, an
      65             :  * integer with value `+2` is stored in the first slot of the returned tuple.
      66             :  * Note that this integer is marking only the _first_ check to fail since
      67             :  * checks are done in a particular sequence as listed above. If all checks are
      68             :  * passed and cell is not troubled, it is returned with the value `0`.
      69             :  *
      70             :  * When computing magnitudes of tensor quantities (TildeE, TildeB) for TCI
      71             :  * checks, we simply use the square root of the sum of spatial components
      72             :  * squared, _not_ the square root of the scalar product using the spatial
      73             :  * metric.
      74             :  *
      75             :  * \note We adopt positive integers to mark TCI status from FD grid returned by
      76             :  * TciOnFdGrid class. Negative integers are reserved for TCIs on DG grid; see
      77             :  * TciOnDgGrid and its documentation.
      78             :  *
      79             :  */
      80           1 : class TciOnFdGrid {
      81             :  public:
      82           0 :   using return_tags = tmpl::list<>;
      83           0 :   using argument_tags =
      84             :       tmpl::list<ForceFree::Tags::TildeE, ForceFree::Tags::TildeB,
      85             :                  ForceFree::Tags::TildeQ, domain::Tags::Mesh<3>,
      86             :                  evolution::dg::subcell::Tags::Mesh<3>,
      87             :                  evolution::dg::subcell::Tags::DataForRdmpTci, Tags::TciOptions,
      88             :                  evolution::dg::subcell::Tags::SubcellOptions<3>>;
      89             : 
      90           0 :   static std::tuple<int, evolution::dg::subcell::RdmpTciData> apply(
      91             :       const tnsr::I<DataVector, 3, Frame::Inertial>& subcell_tilde_e,
      92             :       const tnsr::I<DataVector, 3, Frame::Inertial>& subcell_tilde_b,
      93             :       const Scalar<DataVector>& subcell_tilde_q, const Mesh<3>& dg_mesh,
      94             :       const Mesh<3>& subcell_mesh,
      95             :       const evolution::dg::subcell::RdmpTciData& past_rdmp_tci_data,
      96             :       const TciOptions& tci_options,
      97             :       const evolution::dg::subcell::SubcellOptions& subcell_options,
      98             :       double persson_exponent, bool need_rdmp_data_only);
      99             : };
     100             : 
     101             : }  // namespace ForceFree::subcell

Generated by: LCOV version 1.14