SpECTRE Documentation Coverage Report
Current view: top level - NumericalAlgorithms/DiscontinuousGalerkin - Formulation.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 0.0 % 3 0
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 <iosfwd>
       7              : 
       8              : /// \cond
       9              : namespace Options {
      10              : class Option;
      11              : template <typename T>
      12              : struct create_from_yaml;
      13              : }  // namespace Options
      14              : /// \endcond
      15              : 
      16              : namespace dg {
      17              : /*!
      18              :  * \ingroup DiscontinuousGalerkinGroup
      19              :  * \brief The DG formulation to use
      20              :  *
      21              :  * - The `StrongInertial` formulation is also known as the integrate then
      22              :  *   transform formulation. The "Inertial" part of the name refers to the fact
      23              :  *   that the integration is done over the physical/inertial coordinates, while
      24              :  *   the "strong" part refers to the fact that the boundary correction terms are
      25              :  *   zero if the solution is continuous at the interfaces.
      26              :  *   See \cite Teukolsky2015ega for an overview.
      27              :  * - The `WeakInertial` formulation is also known as the integrate then
      28              :  *   transform formulation. The "Inertial" part of the name refers to the fact
      29              :  *   that the integration is done over the physical/inertial coordinates, while
      30              :  *   the "weak" part refers to the fact that the boundary correction terms are
      31              :  *   non-zero even if the solution is continuous at the interfaces.
      32              :  *   See \cite Teukolsky2015ega for an overview.
      33              :  * - The `StrongLogical` formulation is also known as the transform then
      34              :  *   integrate formulation. The "logical" part of the name refers to the fact
      35              :  *   that the integration is done over the logical coordinates, while the
      36              :  *   "strong" part refers to the fact that the boundary correction terms are
      37              :  *   zero if the solution is continuous at the interfaces. This formulation
      38              :  *   arises from the `StrongInertial` formulation by moving the Jacobians that
      39              :  *   appear when computing the divergence of fluxes into the divergence so the
      40              :  *   divergence is computed in logical coordinates:
      41              :  *   \begin{equation}
      42              :  *     \partial_i F^i = \frac{1}{J} \partial_\hat{\imath} J F^\hat{\imath}
      43              :  *   \end{equation}
      44              :  *   where $J$ is the Jacobian determinant and $\hat{\imath}$ are the logical
      45              :  *   coordinates. This is possible because of the "metric identities"
      46              :  *   \begin{equation}
      47              :  *    \partial_\hat{\imath} \left(J \frac{\partial \xi^\hat{\imath}}
      48              :  *    {\partial x^i}\right) = 0.
      49              :  *   \end{equation}
      50              :  *   See also `dg::metric_identity_det_jac_times_inv_jac` for details and for
      51              :  *   functions that compute the Jacobians so they satisfy the metric identities
      52              :  *   numerically (which may or may not be useful or necessary).
      53              :  */
      54            0 : enum class Formulation { StrongInertial, WeakInertial, StrongLogical };
      55              : 
      56            0 : std::ostream& operator<<(std::ostream& os, Formulation t);
      57              : }  // namespace dg
      58              : 
      59              : /// \cond
      60              : template <>
      61              : struct Options::create_from_yaml<dg::Formulation> {
      62              :   template <typename Metavariables>
      63              :   static dg::Formulation create(const Options::Option& options) {
      64              :     return create<void>(options);
      65              :   }
      66              : };
      67              : 
      68              : template <>
      69              : dg::Formulation Options::create_from_yaml<dg::Formulation>::create<void>(
      70              :     const Options::Option& options);
      71              : /// \endcond
        

Generated by: LCOV version 2.0-1