SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/AnalyticSolutions/Xcts - CommonVariables.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 13.8 % 29 4
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 <cstddef>
       7              : 
       8              : #include "DataStructures/DataBox/Prefixes.hpp"
       9              : #include "DataStructures/Tensor/Tensor.hpp"
      10              : #include "Elliptic/Systems/Xcts/Tags.hpp"
      11              : #include "PointwiseFunctions/AnalyticData/Xcts/CommonVariables.hpp"
      12              : #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
      13              : #include "Utilities/Gsl.hpp"
      14              : 
      15            1 : namespace Xcts::Solutions {
      16              : 
      17              : /// Tags for variables that solutions can share
      18              : template <typename DataType>
      19            1 : using common_tags = tmpl::push_back<
      20              :     AnalyticData::common_tags<DataType>,
      21              :     // Solved variables
      22              :     Tags::ConformalFactorMinusOne<DataType>, Tags::ConformalFactor<DataType>,
      23              :     Tags::LapseTimesConformalFactorMinusOne<DataType>,
      24              :     Tags::LapseTimesConformalFactor<DataType>,
      25              :     Tags::ShiftExcess<DataType, 3, Frame::Inertial>,
      26              :     // ADM variables
      27              :     gr::Tags::Lapse<DataType>, gr::Tags::Shift<DataType, 3>,
      28              :     gr::Tags::SpatialMetric<DataType, 3>,
      29              :     gr::Tags::InverseSpatialMetric<DataType, 3>,
      30              :     ::Tags::deriv<gr::Tags::SpatialMetric<DataType, 3>, tmpl::size_t<3>,
      31              :                   Frame::Inertial>,
      32              :     gr::Tags::ExtrinsicCurvature<DataType, 3>,
      33              :     // Derivatives of solved variables
      34              :     ::Tags::deriv<Tags::ConformalFactorMinusOne<DataType>, tmpl::size_t<3>,
      35              :                   Frame::Inertial>,
      36              :     ::Tags::deriv<Tags::LapseTimesConformalFactorMinusOne<DataType>,
      37              :                   tmpl::size_t<3>, Frame::Inertial>,
      38              :     ::Tags::deriv<Tags::ShiftExcess<DataType, 3, Frame::Inertial>,
      39              :                   tmpl::size_t<3>, Frame::Inertial>,
      40              :     Tags::ShiftStrain<DataType, 3, Frame::Inertial>,
      41              :     // Fluxes
      42              :     ::Tags::Flux<Tags::ConformalFactorMinusOne<DataType>, tmpl::size_t<3>,
      43              :                  Frame::Inertial>,
      44              :     ::Tags::Flux<Tags::LapseTimesConformalFactorMinusOne<DataType>,
      45              :                  tmpl::size_t<3>, Frame::Inertial>,
      46              :     Tags::LongitudinalShiftExcess<DataType, 3, Frame::Inertial>,
      47              :     // Background quantities for subsets of the XCTS equations
      48              :     Tags::LongitudinalShiftMinusDtConformalMetricSquare<DataType>,
      49              :     Tags::LongitudinalShiftMinusDtConformalMetricOverLapseSquare<DataType>,
      50              :     Tags::ShiftDotDerivExtrinsicCurvatureTrace<DataType>>;
      51              : 
      52              : /// Tags for hydro variables that are typically retrieved from a hydro solution
      53              : template <typename DataType>
      54            1 : using hydro_tags = AnalyticData::hydro_tags<DataType>;
      55              : 
      56              : /// Implementations for variables that solutions can share
      57              : template <typename DataType, typename Cache>
      58            1 : struct CommonVariables : AnalyticData::CommonVariables<DataType, Cache> {
      59            0 :   static constexpr size_t Dim = 3;
      60            0 :   using Base = AnalyticData::CommonVariables<DataType, Cache>;
      61              :   using Base::Base;
      62            0 :   using Base::operator();
      63              : 
      64            0 :   virtual void operator()(
      65              :       gsl::not_null<Scalar<DataType>*> conformal_factor_minus_one,
      66              :       gsl::not_null<Cache*> cache,
      67              :       Tags::ConformalFactorMinusOne<DataType> /*meta*/) const = 0;
      68            0 :   virtual void operator()(gsl::not_null<Scalar<DataType>*> conformal_factor,
      69              :                           gsl::not_null<Cache*> cache,
      70              :                           Tags::ConformalFactor<DataType> /*meta*/) const;
      71            0 :   virtual void operator()(
      72              :       gsl::not_null<Scalar<DataType>*> lapse_times_conformal_factor_minus_one,
      73              :       gsl::not_null<Cache*> cache,
      74              :       Tags::LapseTimesConformalFactorMinusOne<DataType> /*meta*/) const = 0;
      75            0 :   virtual void operator()(
      76              :       gsl::not_null<Scalar<DataType>*> lapse_times_conformal_factor,
      77              :       gsl::not_null<Cache*> cache,
      78              :       Tags::LapseTimesConformalFactor<DataType> /*meta*/) const;
      79            0 :   virtual void operator()(
      80              :       gsl::not_null<tnsr::I<DataType, Dim>*> shift_excess,
      81              :       gsl::not_null<Cache*> cache,
      82              :       Tags::ShiftExcess<DataType, Dim, Frame::Inertial> /*meta*/) const = 0;
      83            0 :   virtual void operator()(gsl::not_null<Scalar<DataType>*> lapse,
      84              :                           gsl::not_null<Cache*> cache,
      85              :                           gr::Tags::Lapse<DataType> /*meta*/) const = 0;
      86            0 :   virtual void operator()(
      87              :       gsl::not_null<tnsr::ii<DataType, Dim>*> spatial_metric,
      88              :       gsl::not_null<Cache*> cache,
      89              :       gr::Tags::SpatialMetric<DataType, Dim> /*meta*/) const;
      90            0 :   virtual void operator()(
      91              :       gsl::not_null<tnsr::II<DataType, Dim>*> inv_spatial_metric,
      92              :       gsl::not_null<Cache*> cache,
      93              :       gr::Tags::InverseSpatialMetric<DataType, Dim> /*meta*/) const;
      94            0 :   virtual void operator()(
      95              :       gsl::not_null<tnsr::ijj<DataType, Dim>*> deriv_spatial_metric,
      96              :       gsl::not_null<Cache*> cache,
      97              :       ::Tags::deriv<gr::Tags::SpatialMetric<DataType, Dim>, tmpl::size_t<Dim>,
      98              :                     Frame::Inertial> /*meta*/) const;
      99            0 :   virtual void operator()(
     100              :       gsl::not_null<tnsr::i<DataType, Dim>*> deriv_conformal_factor,
     101              :       gsl::not_null<Cache*> cache,
     102              :       ::Tags::deriv<Tags::ConformalFactorMinusOne<DataType>, tmpl::size_t<Dim>,
     103              :                     Frame::Inertial> /*meta*/) const = 0;
     104            0 :   virtual void operator()(
     105              :       gsl::not_null<tnsr::i<DataType, Dim>*> deriv_lapse_times_conformal_factor,
     106              :       gsl::not_null<Cache*> cache,
     107              :       ::Tags::deriv<Tags::LapseTimesConformalFactorMinusOne<DataType>,
     108              :                     tmpl::size_t<Dim>, Frame::Inertial> /*meta*/) const = 0;
     109            0 :   virtual void operator()(
     110              :       gsl::not_null<tnsr::iJ<DataType, Dim>*> deriv_shift_excess,
     111              :       gsl::not_null<Cache*> cache,
     112              :       ::Tags::deriv<Tags::ShiftExcess<DataType, 3, Frame::Inertial>,
     113              :                     tmpl::size_t<3>, Frame::Inertial> /*meta*/) const = 0;
     114            0 :   virtual void operator()(
     115              :       gsl::not_null<tnsr::ii<DataType, Dim>*> shift_strain,
     116              :       gsl::not_null<Cache*> cache,
     117              :       Tags::ShiftStrain<DataType, Dim, Frame::Inertial> /*meta*/) const;
     118            0 :   virtual void operator()(
     119              :       gsl::not_null<tnsr::I<DataType, Dim>*> conformal_factor_flux,
     120              :       gsl::not_null<Cache*> cache,
     121              :       ::Tags::Flux<Tags::ConformalFactorMinusOne<DataType>, tmpl::size_t<Dim>,
     122              :                    Frame::Inertial> /*meta*/) const;
     123            0 :   virtual void operator()(
     124              :       gsl::not_null<tnsr::I<DataType, Dim>*> lapse_times_conformal_factor_flux,
     125              :       gsl::not_null<Cache*> cache,
     126              :       ::Tags::Flux<Tags::LapseTimesConformalFactorMinusOne<DataType>,
     127              :                    tmpl::size_t<Dim>, Frame::Inertial> /*meta*/) const;
     128            0 :   virtual void operator()(
     129              :       gsl::not_null<tnsr::II<DataType, Dim>*> longitudinal_shift_excess,
     130              :       gsl::not_null<Cache*> cache,
     131              :       Tags::LongitudinalShiftExcess<DataType, Dim, Frame::Inertial> /*meta*/)
     132              :       const;
     133            0 :   virtual void operator()(gsl::not_null<tnsr::I<DataType, Dim>*> shift,
     134              :                           gsl::not_null<Cache*> cache,
     135              :                           gr::Tags::Shift<DataType, Dim> /*meta*/) const;
     136            0 :   virtual void operator()(
     137              :       gsl::not_null<tnsr::ii<DataType, Dim>*> extrinsic_curvature,
     138              :       gsl::not_null<Cache*> cache,
     139              :       gr::Tags::ExtrinsicCurvature<DataType, Dim> /*meta*/) const = 0;
     140            0 :   virtual void operator()(
     141              :       gsl::not_null<Scalar<DataType>*>
     142              :           longitudinal_shift_minus_dt_conformal_metric_square,
     143              :       gsl::not_null<Cache*> cache,
     144              :       Tags::LongitudinalShiftMinusDtConformalMetricSquare<DataType> /*meta*/)
     145              :       const;
     146            0 :   virtual void operator()(
     147              :       gsl::not_null<Scalar<DataType>*>
     148              :           longitudinal_shift_minus_dt_conformal_metric_over_lapse_square,
     149              :       gsl::not_null<Cache*> cache,
     150              :       Tags::LongitudinalShiftMinusDtConformalMetricOverLapseSquare<
     151              :           DataType> /*meta*/) const;
     152            0 :   virtual void operator()(
     153              :       gsl::not_null<Scalar<DataType>*>
     154              :           shift_dot_deriv_extrinsic_curvature_trace,
     155              :       gsl::not_null<Cache*> cache,
     156              :       Tags::ShiftDotDerivExtrinsicCurvatureTrace<DataType> /*meta*/) const;
     157              : };
     158              : 
     159              : }  // namespace Xcts::Solutions
        

Generated by: LCOV version 2.0-1