SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim Class 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
 

Public Types

using options = implementation defined
 
using reconstruction_argument_tags = implementation defined
 
- Public Types inherited from grmhd::GhValenciaDivClean::fd::Reconstructor
using creatable_classes = implementation defined
 

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, const Options::Context &context={})
 
 PositivityPreservingAdaptiveOrderPrim (CkMigrateMessage *msg)
 
 WRAPPED_PUPable_decl_base_template (Reconstructor, PositivityPreservingAdaptiveOrderPrim)
 
auto get_clone () const -> std::unique_ptr< Reconstructor > 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.
 
- Public Member Functions inherited from grmhd::GhValenciaDivClean::fd::Reconstructor
 Reconstructor (const Reconstructor &)=default
 
Reconstructoroperator= (const Reconstructor &)=default
 
 Reconstructor (Reconstructor &&)=default
 
Reconstructoroperator= (Reconstructor &&)=default
 
virtual std::unique_ptr< Reconstructorget_clone () const =0
 
virtual size_t ghost_zone_size () const =0
 
virtual bool supports_adaptive_order () const
 
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

bool operator== (const PositivityPreservingAdaptiveOrderPrim &lhs, const PositivityPreservingAdaptiveOrderPrim &rhs)
 
bool operator!= (const PositivityPreservingAdaptiveOrderPrim &lhs, const PositivityPreservingAdaptiveOrderPrim &rhs)
 

Detailed Description

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, Φiab, and Π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()

auto grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim::get_clone ( ) const -> std::unique_ptr< Reconstructor >
overridevirtual

◆ ghost_zone_size()

size_t grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim::ghost_zone_size ( ) const
inlineoverridevirtual

◆ supports_adaptive_order()

bool grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim::supports_adaptive_order ( ) const
inlineoverridevirtual

Member Data Documentation

◆ help

constexpr Options::String grmhd::GhValenciaDivClean::fd::PositivityPreservingAdaptiveOrderPrim::help
staticconstexpr
Initial value:
{
"Positivity-preserving adaptive-order reconstruction."}

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