SpECTRE  v2024.04.12
grmhd::GhValenciaDivClean::TimeDerivativeTerms Struct Reference

Compute the RHS terms and flux values for both the Generalized Harmonic formulation of Einstein's equations and the Valencia formulation of the GRMHD equations with divergence cleaning. More...

#include <TimeDerivativeTerms.hpp>

Public Types

using gh_dt_tags = db::wrap_tags_in<::Tags::dt, typename gh::System< 3_st >::variables_tag::tags_list >
 
using valencia_dt_tags = db::wrap_tags_in< ::Tags::dt, typename grmhd::ValenciaDivClean::System::variables_tag::tags_list >
 
using dt_tags = tmpl::append< gh_dt_tags, valencia_dt_tags >
 
using d_spatial_metric = ::Tags::deriv< gr::Tags::SpatialMetric< DataVector, 3 >, tmpl::size_t< 3 >, Frame::Inertial >
 
using valencia_flux_tags = tmpl::transform< typename grmhd::ValenciaDivClean::System::flux_variables, tmpl::bind<::Tags::Flux, tmpl::_1, tmpl::pin< tmpl::size_t< 3_st > >, tmpl::pin< Frame::Inertial > > >
 
using gh_temp_tags = typename gh::TimeDerivative< 3_st >::temporary_tags
 
using gh_gradient_tags = typename gh::System< 3_st >::gradients_tags
 
using gh_arg_tags = typename gh::TimeDerivative< 3_st >::argument_tags
 
using valencia_temp_tags = typename grmhd::ValenciaDivClean::TimeDerivativeTerms::temporary_tags
 
using valencia_extra_temp_tags = tmpl::list<::Tags::deriv< gr::Tags::Lapse< DataVector >, tmpl::size_t< 3 >, Frame::Inertial >, ::Tags::deriv< gr::Tags::Shift< DataVector, 3 >, tmpl::size_t< 3 >, Frame::Inertial >, gr::Tags::ExtrinsicCurvature< DataVector, 3 > >
 
using valencia_arg_tags = tmpl::list_difference< typename grmhd::ValenciaDivClean::TimeDerivativeTerms::argument_tags, tmpl::append< gh_temp_tags, valencia_extra_temp_tags > >
 
using trace_reversed_stress_result_tags = tmpl::list< Tags::TraceReversedStressEnergy, Tags::FourVelocityOneForm, Tags::ComovingMagneticFieldOneForm >
 
using trace_reversed_stress_argument_tags = tmpl::list< hydro::Tags::RestMassDensity< DataVector >, hydro::Tags::SpatialVelocityOneForm< DataVector, 3_st, Frame::Inertial >, hydro::Tags::MagneticFieldOneForm< DataVector, 3_st, Frame::Inertial >, hydro::Tags::MagneticFieldSquared< DataVector >, hydro::Tags::MagneticFieldDotSpatialVelocity< DataVector >, hydro::Tags::LorentzFactor< DataVector >, grmhd::ValenciaDivClean::TimeDerivativeTerms::OneOverLorentzFactorSquared, hydro::Tags::Pressure< DataVector >, hydro::Tags::SpecificInternalEnergy< DataVector >, gr::Tags::SpacetimeMetric< DataVector, 3 >, gr::Tags::Shift< DataVector, 3_st >, gr::Tags::Lapse< DataVector > >
 
using extra_temp_tags = tmpl::list< gr::Tags::SpatialMetric< DataVector, 3 > >
 
using temporary_tags = tmpl::remove< tmpl::remove_duplicates< tmpl::append< gh_temp_tags, valencia_temp_tags, valencia_extra_temp_tags, trace_reversed_stress_result_tags, extra_temp_tags > >, gr::Tags::SpatialMetric< DataVector, 3 > >
 
using argument_tags = tmpl::remove< tmpl::remove< tmpl::append< gh_arg_tags, valencia_arg_tags >, gr::Tags::SpatialMetric< DataVector, 3 > >, d_spatial_metric >
 

Static Public Member Functions

template<typename... Args>
static void apply (const gsl::not_null< Variables< dt_tags > * > dt_vars_ptr, const gsl::not_null< Variables< db::wrap_tags_in< ::Tags::Flux, typename ValenciaDivClean::System::flux_variables, tmpl::size_t< 3 >, Frame::Inertial > > * > fluxes_ptr, const gsl::not_null< Variables< temporary_tags > * > temps_ptr, const tnsr::iaa< DataVector, 3 > &d_spacetime_metric, const tnsr::iaa< DataVector, 3 > &d_pi, const tnsr::ijaa< DataVector, 3 > &d_phi, const Args &... args)
 

Detailed Description

Compute the RHS terms and flux values for both the Generalized Harmonic formulation of Einstein's equations and the Valencia formulation of the GRMHD equations with divergence cleaning.

Details

The bulk of the computations in this class dispatch to gh::TimeDerivative and grmhd::ValenciaDivClean::TimeDerivativeTerms as a 'product system' – each independently operating on its own subset of the supplied variable collections. The additional step is taken to compute the trace-reversed stress energy tensor associated with the GRMHD part of the system and add its contribution to the \(\partial_t \Pi_{a b}\) variable in the Generalized Harmonic system, which is the only explicit coupling required to back-react the effect of matter on the spacetime solution.

Note
The MHD calculation reuses any spacetime quantities in its argument_tags that are computed by the GH time derivative. However, other quantities that aren't computed by the GH time derivative like the extrinsic curvature are currently still retrieved from the DataBox. Those calculations can be explicitly inlined here to reduce memory pressure and the number of compute tags.

The documentation for this struct was generated from the following file: