SpECTRE Documentation Coverage Report
Current view: top level - PointwiseFunctions/AnalyticSolutions/Xcts - CommonVariables.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 4 28 14.3 %
Date: 2024-04-23 20:50:18
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             :   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 1.14