SpECTRE  v2025.08.19
grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim< System > Class Template Reference

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...

#include <PositivityPreservingAdaptiveOrder.hpp>

Classes

struct  Alpha5
 
struct  Alpha7
 
struct  Alpha9
 
struct  AtmosphereTreatment
 
struct  LowOrderReconstructor
 
struct  ReconstructRhoTimesTemperature
 

Public Types

using options = tmpl::list< Alpha5, Alpha7, Alpha9, LowOrderReconstructor, AtmosphereTreatment, ReconstructRhoTimesTemperature >
 
using reconstruction_argument_tags = tmpl::list<::Tags::Variables< hydro::grmhd_tags< DataVector > >, typename System::variables_tag, hydro::Tags::GrmhdEquationOfState, domain::Tags::Element< dim >, evolution::dg::subcell::Tags::GhostDataForReconstruction< dim >, evolution::dg::subcell::Tags::Mesh< dim >, ::Tags::VariableFixer< VariableFixing::FixToAtmosphere< dim > > >
 
- Public Types inherited from grmhd::GhValenciaDivClean::fd::Reconstructor< System >
using system = System
 
using creatable_classes = tmpl::list< MonotonisedCentralPrim< System >, PositivityPreservingAdaptiveOrderPrim< System >, Wcns5zPrim< System > >
 

Public Member Functions

 PositivityPreservingAdaptiveOrderPrim (PositivityPreservingAdaptiveOrderPrim &&)=default
 
PositivityPreservingAdaptiveOrderPrimoperator= (PositivityPreservingAdaptiveOrderPrim &&)=default
 
 PositivityPreservingAdaptiveOrderPrim (const PositivityPreservingAdaptiveOrderPrim &)=default
 
PositivityPreservingAdaptiveOrderPrimoperator= (const PositivityPreservingAdaptiveOrderPrim &)=default
 
 PositivityPreservingAdaptiveOrderPrim (double alpha_5, std::optional< double > alpha_7, std::optional< double > alpha_9, FallbackReconstructorType low_order_reconstructor, ::VariableFixing::FixReconstructedStateToAtmosphere fix_reconstructed_state_to_atmosphere, bool reconstruct_rho_times_temperature, const Options::Context &context={})
 
 PositivityPreservingAdaptiveOrderPrim (CkMigrateMessage *msg)
 
 WRAPPED_PUPable_decl_base_template (Reconstructor< System >, PositivityPreservingAdaptiveOrderPrim< System >)
 
auto get_clone () const -> std::unique_ptr< Reconstructor< System > > override
 
bool supports_adaptive_order () const override
 
void pup (PUP::er &p) override
 
size_t ghost_zone_size () const override
 
template<size_t ThermodynamicDim, typename TagsList >
void reconstruct (gsl::not_null< std::array< Variables< TagsList >, dim > * > vars_on_lower_face, gsl::not_null< std::array< Variables< TagsList >, dim > * > vars_on_upper_face, gsl::not_null< std::optional< std::array< gsl::span< std::uint8_t >, dim > > * > reconstruction_order, const Variables< hydro::grmhd_tags< DataVector > > &volume_prims, const Variables< typename System::variables_tag::type::tags_list > &volume_spacetime_and_cons_vars, const EquationsOfState::EquationOfState< true, ThermodynamicDim > &eos, const Element< dim > &element, const DirectionalIdMap< dim, evolution::dg::subcell::GhostData > &ghost_data, const Mesh< dim > &subcell_mesh, const VariableFixing::FixToAtmosphere< dim > &fix_to_atmosphere) const
 
template<size_t ThermodynamicDim, typename TagsList >
void reconstruct_fd_neighbor (gsl::not_null< Variables< TagsList > * > vars_on_face, const Variables< hydro::grmhd_tags< DataVector > > &subcell_volume_prims, const Variables< grmhd::GhValenciaDivClean::Tags::spacetime_reconstruction_tags > &subcell_volume_spacetime_metric, const EquationsOfState::EquationOfState< true, ThermodynamicDim > &eos, const Element< dim > &element, const DirectionalIdMap< dim, evolution::dg::subcell::GhostData > &ghost_data, const Mesh< dim > &subcell_mesh, const VariableFixing::FixToAtmosphere< dim > &fix_to_atmosphere, Direction< dim > direction_to_reconstruct) const
 Called by an element doing DG when the neighbor is doing subcell.
 
bool reconstruct_rho_times_temperature () const override
 
- Public Member Functions inherited from grmhd::GhValenciaDivClean::fd::Reconstructor< System >
 Reconstructor (const Reconstructor &)=default
 
Reconstructoroperator= (const Reconstructor &)=default
 
 Reconstructor (Reconstructor &&)=default
 
Reconstructoroperator= (Reconstructor &&)=default
 
virtual std::unique_ptr< Reconstructor< System > > get_clone () const =0
 
virtual size_t ghost_zone_size () const =0
 
virtual bool supports_adaptive_order () const
 
virtual bool reconstruct_rho_times_temperature () const =0
 
void pup (PUP::er &p) override
 

Static Public Attributes

static constexpr size_t dim = 3
 
static constexpr Options::String help
 
static constexpr bool use_adaptive_order = true
 

Friends

template<typename LocalSystem >
bool operator== (const PositivityPreservingAdaptiveOrderPrim< LocalSystem > &lhs, const PositivityPreservingAdaptiveOrderPrim< LocalSystem > &rhs)
 
template<typename LocalSystem >
bool operator!= (const PositivityPreservingAdaptiveOrderPrim< LocalSystem > &lhs, const PositivityPreservingAdaptiveOrderPrim< LocalSystem > &rhs)
 

Detailed Description

template<typename System>
class grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim< System >

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.

Only the spacetime metric is reconstructed when we and the neighboring element in the direction are doing FD. If we are doing DG and a neighboring element is doing FD, then the spacetime metric, \(\Phi_{iab}\), and \(\Pi_{ab}\) are all reconstructed since the Riemann solver on the DG element also needs to solve for the metric variables.

Member Function Documentation

◆ get_clone()

◆ ghost_zone_size()

template<typename System >
size_t grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim< System >::ghost_zone_size ( ) const
inlineoverridevirtual

◆ reconstruct_rho_times_temperature()

template<typename System >
bool grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim< System >::reconstruct_rho_times_temperature ( ) const
overridevirtual

◆ supports_adaptive_order()

template<typename System >
bool grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim< System >::supports_adaptive_order ( ) const
inlineoverridevirtual

Member Data Documentation

◆ help

Initial value:
{
"Positivity-preserving adaptive-order reconstruction."}

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