SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/ForceFree/Subcell - TciOnDgGrid.hpp Hit Total Coverage
Commit: 817e13c5144619b701c7cd870655d8dbf94ab8ce Lines: 1 5 20.0 %
Date: 2024-07-19 22:17:05
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             :  * \brief The troubled-cell indicator run on the DG grid to check if the
      33             :  * solution is admissible.
      34             :  *
      35             :  * The following checks are done in the order they are listed:
      36             :  *
      37             :  * <table>
      38             :  * <caption>List of checks</caption>
      39             :  * <tr><th> Description <th> TCI status
      40             :  *
      41             :  * <tr><td> apply the Persson TCI to magnitude of `TildeE`
      42             :  * <td> `-1`
      43             :  *
      44             :  * <tr><td> apply the Persson TCI to magnitude of `TildeB`
      45             :  * <td> `-2`
      46             :  *
      47             :  * <tr><td> apply the Persson TCI to `TildeQ` if \f$\max(|\tilde{q}|)\f$ is
      48             :  * greater than `tci_options.tilde_q_cutoff`.
      49             :  * Check is skipped if `tci_options.tilde_q_cutoff == DoNotCheckTildeQ`.
      50             :  * <td> `-3`
      51             :  *
      52             :  * <tr><td> apply the RDMP TCI to magnitude of `TildeE`
      53             :  * <td> `-4`
      54             :  *
      55             :  * <tr><td> apply the RDMP TCI to magnitude of `TildeB`
      56             :  * <td> `-5`
      57             :  *
      58             :  * </table>
      59             :  *
      60             :  * The second column of the table above denotes the value of an integer stored
      61             :  * as the first element of the returned `std::tuple`, which indicates the
      62             :  * particular kind of check that failed. For example, if the 3rd check
      63             :  * (Persson TCI to TildeQ) fails and cell is marked as troubled, an integer with
      64             :  * value `-3` is stored in the first slot of the returned tuple. Note that this
      65             :  * integer is marking only the first check to fail since checks are done in a
      66             :  * particular sequence as listed above. If all checks are passed and cell is not
      67             :  * troubled, it is returned with the value `0`.
      68             :  *
      69             :  * When computing magnitudes of tensor quantities (TildeE, TildeB) here for TCI
      70             :  * checks, we simply use the square root of the sum of spatial components
      71             :  * squared, _not_ the square root of the scalar product using the spatial
      72             :  * metric.
      73             :  *
      74             :  * \note We adopt negative integers to mark TCI status from DG grid returned by
      75             :  * TciOnDgGrid class. Positive integers are used for TCIs on FD grid; see
      76             :  * TciOnFdGrid and its documentation.
      77             :  *
      78             :  */
      79           1 : class TciOnDgGrid {
      80             :  public:
      81           0 :   using return_tags = tmpl::list<>;
      82           0 :   using argument_tags =
      83             :       tmpl::list<ForceFree::Tags::TildeE, ForceFree::Tags::TildeB,
      84             :                  ForceFree::Tags::TildeQ, domain::Tags::Mesh<3>,
      85             :                  evolution::dg::subcell::Tags::Mesh<3>,
      86             :                  evolution::dg::subcell::Tags::DataForRdmpTci, Tags::TciOptions,
      87             :                  evolution::dg::subcell::Tags::SubcellOptions<3>>;
      88             : 
      89           0 :   static std::tuple<int, evolution::dg::subcell::RdmpTciData> apply(
      90             :       const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_e,
      91             :       const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_b,
      92             :       const Scalar<DataVector>& tilde_q, const Mesh<3>& dg_mesh,
      93             :       const Mesh<3>& subcell_mesh,
      94             :       const evolution::dg::subcell::RdmpTciData& past_rdmp_tci_data,
      95             :       const TciOptions& tci_options,
      96             :       const evolution::dg::subcell::SubcellOptions& subcell_options,
      97             :       double persson_exponent, bool /*element_stays_on_dg*/);
      98             : };
      99             : 
     100             : }  // namespace ForceFree::subcell

Generated by: LCOV version 1.14