SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DgSubcell - CartesianFluxDivergence.hpp Hit Total Coverage
Commit: c428a3e2e0ca78fe0364ec1b0e0493c627d428d4 Lines: 4 5 80.0 %
Date: 2026-04-26 20:20:36
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 <memory>
       8             : #include <string>
       9             : #include <unordered_map>
      10             : 
      11             : #include "DataStructures/Tensor/TypeAliases.hpp"
      12             : 
      13             : /// \cond
      14             : class DataVector;
      15             : template <size_t Dim>
      16             : class Index;
      17             : template <size_t Dim, typename Frame>
      18             : class ElementMap;
      19             : namespace gsl {
      20             : template <typename T>
      21             : class not_null;
      22             : }  // namespace gsl
      23             : namespace Frame {
      24             : struct Inertial;
      25             : struct Grid;
      26             : }  // namespace Frame
      27             : namespace domain {
      28             : template <typename SourceFrame, typename TargetFrame, size_t Dim>
      29             : class CoordinateMapBase;
      30             : namespace FunctionsOfTime {
      31             : class FunctionOfTime;
      32             : }  // namespace FunctionsOfTime
      33             : }  // namespace domain
      34             : /// \endcond
      35             : 
      36             : namespace evolution::dg::subcell {
      37             : /// @{
      38             : /*!
      39             :  * \brief Compute and add the 2nd-order flux divergence on a Cartesian mesh to
      40             :  * the cell-centered time derivatives.
      41             :  */
      42           1 : void add_cartesian_flux_divergence(gsl::not_null<DataVector*> dt_var,
      43             :                                    double one_over_delta,
      44             :                                    const DataVector& det_inv_jacobian,
      45             :                                    const DataVector& boundary_correction,
      46             :                                    const Index<1>& subcell_extents,
      47             :                                    size_t dimension);
      48             : 
      49           1 : void add_cartesian_flux_divergence(gsl::not_null<DataVector*> dt_var,
      50             :                                    double one_over_delta,
      51             :                                    const DataVector& det_inv_jacobian,
      52             :                                    const DataVector& boundary_correction,
      53             :                                    const Index<2>& subcell_extents,
      54             :                                    size_t dimension);
      55             : 
      56           1 : void add_cartesian_flux_divergence(gsl::not_null<DataVector*> dt_var,
      57             :                                    double one_over_delta,
      58             :                                    const DataVector& det_inv_jacobian,
      59             :                                    const DataVector& boundary_correction,
      60             :                                    const Index<3>& subcell_extents,
      61             :                                    size_t dimension);
      62             : /// @}
      63             : 
      64             : /*!
      65             :  * \brief Compute and add the 2nd-order flux divergence on a Cartesian mesh to
      66             :  * the cell-centered time derivatives when some of the bases are Cartoon.
      67             :  *
      68             :  * \details Symmetries of your spacetime, used in the cartoon method, allow
      69             :  * the replacement of derivatives perpendicular to the computational domain by
      70             :  * scaled components of that same tensor. Specifically, for a spherically
      71             :  * symmetric system, this allows
      72             :  * \f[
      73             :  * \partial_t u + \partial_x F^x + \partial_y F^y + \partial_z F^z \Rightarrow
      74             :  * \partial_t u + \frac{1}{x^2} \partial_x \left( x^2 F^x \right),
      75             :  * \f]
      76             :  * and for an axially symmetric system,
      77             :  * \f[
      78             :  * \partial_t u + \partial_x F^x + \partial_y F^y + \partial_z F^z \Rightarrow
      79             :  * \partial_t u + \frac{1}{x} \partial_x \left( x F^x \right) + \partial_y F^y.
      80             :  * \f]
      81             :  *
      82             :  * \note This function will assume your basis is Cartoon by `subcell_extents ==
      83             :  * 1` in that dimension (only allowed in the second or third dimension).
      84             :  */
      85           1 : void add_cartoon_cartesian_flux_divergence(
      86             :     gsl::not_null<DataVector*> dt_var, double one_over_delta,
      87             :     const DataVector& det_inv_jacobian, const DataVector& boundary_correction,
      88             :     const Index<3>& subcell_extents, size_t dimension,
      89             :     const tnsr::I<DataVector, 3, Frame::Inertial>& inertial_coords,
      90             :     const ElementMap<3, Frame::Grid>& logical_to_grid_map,
      91             :     const ::domain::CoordinateMapBase<Frame::Grid, Frame::Inertial, 3>&
      92             :         grid_to_inertial_map,
      93             :     double time,
      94             :     const std::unordered_map<
      95             :         std::string,
      96             :         std::unique_ptr<::domain::FunctionsOfTime::FunctionOfTime>>&
      97             :         functions_of_time);
      98             : }  // namespace evolution::dg::subcell

Generated by: LCOV version 1.14