SpECTRE  v2024.03.19
grmhd::GhValenciaDivClean::fd Namespace Reference

Finite difference functionality for the coupled Generalized Harmonic and ValenciaDivClean equations. More...

Namespaces

namespace  OptionTags
 Option tags for finite difference solver.
 
namespace  Tags
 Tags for finite difference solver
 

Classes

struct  BoundaryConditionGhostData
 Computes finite difference ghost data for external boundary conditions. More...
 
struct  FilterOptions
 Filtering/dissipation options. More...
 
class  MonotonisedCentralPrim
 Monotonised central reconstruction on the GRMHD primitive variables (see fd::reconstruction::monotonised_central() for details) and unlimited 3rd order (degree 2 polynomial) reconstruction on the metric variables. More...
 
class  PositivityPreservingAdaptiveOrderPrim
 Positivity-preserving adaptive order reconstruction. See fd::reconstruction::positivity_preserving_adaptive_order() for details. The rest mass density, electron fraction, and the pressure are kept positive. Use unlimited 5th order (degree 4 polynomial) reconstruction on the metric variables. More...
 
class  Reconstructor
 The base class from which all reconstruction schemes must inherit. More...
 
class  Wcns5zPrim
 Fifth order weighted nonlinear compact scheme reconstruction using the Z oscillation indicator. See fd::reconstruction::wcns5z() for details. More...
 

Typedefs

using tags_list_for_reconstruct = tmpl::push_front< grmhd::ValenciaDivClean::fd::tags_list_for_reconstruct, gr::Tags::SpacetimeMetric< DataVector, 3 >, gh::Tags::Pi< DataVector, 3 >, gh::Tags::Phi< DataVector, 3 > >
 
using tags_list_for_reconstruct_fd_neighbor = tmpl::append< tmpl::front< detail::tags_list_for_reconstruct_split_lapse >, tmpl::push_front< tmpl::back< detail::tags_list_for_reconstruct_split_lapse >, gh::ConstraintDamping::Tags::ConstraintGamma1, gh::ConstraintDamping::Tags::ConstraintGamma2, gr::Tags::Lapse< DataVector > > >
 

Functions

void spacetime_derivatives (gsl::not_null< Variables< db::wrap_tags_in< ::Tags::deriv, typename grmhd::GhValenciaDivClean::System::gradients_tags, tmpl::size_t< 3 >, Frame::Inertial > > * > result, const Variables< typename grmhd::GhValenciaDivClean::System::variables_tag::tags_list > &volume_evolved_variables, const DirectionalIdMap< 3, evolution::dg::subcell::GhostData > &all_ghost_data, const size_t &deriv_order, const Mesh< 3 > &volume_mesh, const InverseJacobian< DataVector, 3, Frame::ElementLogical, Frame::Inertial > &cell_centered_logical_to_inertial_inv_jacobian)
 Compute partial derivatives of the spacetime variables \(g_{ab}\), \(\Phi_{iab}\), and \(\Pi_{ab}\). More...
 
void spacetime_kreiss_oliger_filter (gsl::not_null< Variables< typename grmhd::GhValenciaDivClean::System::variables_tag::tags_list > * > result, const Variables< typename grmhd::GhValenciaDivClean::System::variables_tag::tags_list > &volume_evolved_variables, const DirectionalIdMap< 3, evolution::dg::subcell::GhostData > &all_ghost_data, const Mesh< 3 > &volume_mesh, size_t order, double epsilon)
 Apply a Kreiss-Oliger filter to \(g_{ab}\), \(\Phi_{iab}\), and \(\Pi_{ab}\).
 
bool operator== (const MonotonisedCentralPrim &, const MonotonisedCentralPrim &)
 
bool operator!= (const MonotonisedCentralPrim &lhs, const MonotonisedCentralPrim &rhs)
 
template<typename SpacetimeTagsToReconstruct , typename PrimTagsForReconstruction , typename PrimsTags , typename SpacetimeAndConsTags , size_t ThermodynamicDim, typename HydroReconstructor , typename SpacetimeReconstructor , typename ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags , typename PrimsTagsSentByNeighbor >
void reconstruct_prims_work (gsl::not_null< std::array< Variables< tags_list_for_reconstruct >, 3 > * > vars_on_lower_face, gsl::not_null< std::array< Variables< tags_list_for_reconstruct >, 3 > * > vars_on_upper_face, const HydroReconstructor &hydro_reconstructor, const SpacetimeReconstructor &spacetime_reconstructor, const ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags &spacetime_vars_for_grmhd, const Variables< PrimsTags > &volume_prims, const Variables< SpacetimeAndConsTags > &volume_spacetime_and_cons_vars, const EquationsOfState::EquationOfState< true, ThermodynamicDim > &eos, const Element< 3 > &element, const DirectionalIdMap< 3, Variables< PrimsTagsSentByNeighbor > > &neighbor_data, const Mesh< 3 > &subcell_mesh, size_t ghost_zone_size, bool compute_conservatives)
 Reconstructs \(\rho, p, Wv^i, B^i\), \(\Phi\), and the spacetime metric, then computes the Lorentz factor, upper spatial velocity, specific internal energy, and the conserved variables. All results are written into vars_on_lower_face and vars_on_upper_face.
 
template<typename SpacetimeTagsToReconstruct , typename PrimTagsForReconstruction , typename PrimsTagsSentByNeighbor , typename PrimsTags , size_t ThermodynamicDim, typename LowerHydroReconstructor , typename LowerSpacetimeReconstructor , typename UpperHydroReconstructor , typename UpperSpacetimeReconstructor , typename ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags >
void reconstruct_fd_neighbor_work (gsl::not_null< Variables< tags_list_for_reconstruct_fd_neighbor > * > vars_on_face, const LowerHydroReconstructor &reconstruct_lower_neighbor_hydro, const LowerSpacetimeReconstructor &reconstruct_lower_neighbor_spacetime, const UpperHydroReconstructor &reconstruct_upper_neighbor_hydro, const UpperSpacetimeReconstructor &reconstruct_upper_neighbor_spacetime, const ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags &spacetime_vars_for_grmhd, const Variables< PrimsTags > &subcell_volume_prims, const Variables< grmhd::GhValenciaDivClean::Tags::spacetime_reconstruction_tags > &subcell_volume_spacetime_vars, const EquationsOfState::EquationOfState< true, ThermodynamicDim > &eos, const Element< 3 > &element, const DirectionalIdMap< 3, evolution::dg::subcell::GhostData > &ghost_data, const Mesh< 3 > &subcell_mesh, const Direction< 3 > &direction_to_reconstruct, size_t ghost_zone_size, bool compute_conservatives)
 Reconstructs \(\rho, p, Wv^i, B^i\), \(\Phi\), the spacetime metric, \(\Phi_{iab}\), and \(\Pi_{ab}\), then computes the Lorentz factor, upper spatial velocity, specific internal energy, and the conserved variables. All results are written into vars_on_face. More...
 
void register_derived_with_charm ()
 

Detailed Description

Finite difference functionality for the coupled Generalized Harmonic and ValenciaDivClean equations.

Function Documentation

◆ reconstruct_fd_neighbor_work()

template<typename SpacetimeTagsToReconstruct , typename PrimTagsForReconstruction , typename PrimsTagsSentByNeighbor , typename PrimsTags , size_t ThermodynamicDim, typename LowerHydroReconstructor , typename LowerSpacetimeReconstructor , typename UpperHydroReconstructor , typename UpperSpacetimeReconstructor , typename ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags >
void grmhd::GhValenciaDivClean::fd::reconstruct_fd_neighbor_work ( gsl::not_null< Variables< tags_list_for_reconstruct_fd_neighbor > * >  vars_on_face,
const LowerHydroReconstructor &  reconstruct_lower_neighbor_hydro,
const LowerSpacetimeReconstructor &  reconstruct_lower_neighbor_spacetime,
const UpperHydroReconstructor &  reconstruct_upper_neighbor_hydro,
const UpperSpacetimeReconstructor &  reconstruct_upper_neighbor_spacetime,
const ComputeGrmhdSpacetimeVarsFromReconstructedSpacetimeTags &  spacetime_vars_for_grmhd,
const Variables< PrimsTags > &  subcell_volume_prims,
const Variables< grmhd::GhValenciaDivClean::Tags::spacetime_reconstruction_tags > &  subcell_volume_spacetime_vars,
const EquationsOfState::EquationOfState< true, ThermodynamicDim > &  eos,
const Element< 3 > &  element,
const DirectionalIdMap< 3, evolution::dg::subcell::GhostData > &  ghost_data,
const Mesh< 3 > &  subcell_mesh,
const Direction< 3 > &  direction_to_reconstruct,
size_t  ghost_zone_size,
bool  compute_conservatives 
)

Reconstructs \(\rho, p, Wv^i, B^i\), \(\Phi\), the spacetime metric, \(\Phi_{iab}\), and \(\Pi_{ab}\), then computes the Lorentz factor, upper spatial velocity, specific internal energy, and the conserved variables. All results are written into vars_on_face.

This is used on DG elements to reconstruct their subcell neighbors' solution on the shared faces.

◆ spacetime_derivatives()

void grmhd::GhValenciaDivClean::fd::spacetime_derivatives ( gsl::not_null< Variables< db::wrap_tags_in< ::Tags::deriv, typename grmhd::GhValenciaDivClean::System::gradients_tags, tmpl::size_t< 3 >, Frame::Inertial > > * >  result,
const Variables< typename grmhd::GhValenciaDivClean::System::variables_tag::tags_list > &  volume_evolved_variables,
const DirectionalIdMap< 3, evolution::dg::subcell::GhostData > &  all_ghost_data,
const size_t &  deriv_order,
const Mesh< 3 > &  volume_mesh,
const InverseJacobian< DataVector, 3, Frame::ElementLogical, Frame::Inertial > &  cell_centered_logical_to_inertial_inv_jacobian 
)

Compute partial derivatives of the spacetime variables \(g_{ab}\), \(\Phi_{iab}\), and \(\Pi_{ab}\).

The derivatives are computed using FD of order deriv_order