Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
NewtonianEuler::Limiters::Minmod< VolumeDim > Class Template Reference

A minmod-based generalized slope limiter for the NewtonianEuler system. More...

#include <Minmod.hpp>

Classes

struct  ApplyFlattener
 
struct  VariablesToLimit
 

Public Types

using ConservativeVarsMinmod = ::Limiters::Minmod< VolumeDim, tmpl::list< NewtonianEuler::Tags::MassDensityCons, NewtonianEuler::Tags::MomentumDensity< VolumeDim >, NewtonianEuler::Tags::EnergyDensity > >
 
using options = tmpl::list< typename ConservativeVarsMinmod::Type, VariablesToLimit, typename ConservativeVarsMinmod::TvbConstant, ApplyFlattener, typename ConservativeVarsMinmod::DisableForDebugging >
 
using PackagedData = typename ConservativeVarsMinmod::PackagedData
 
using package_argument_tags = typename ConservativeVarsMinmod::package_argument_tags
 
using limit_tags = tmpl::list< NewtonianEuler::Tags::MassDensityCons, NewtonianEuler::Tags::MomentumDensity< VolumeDim >, NewtonianEuler::Tags::EnergyDensity >
 
using limit_argument_tags = tmpl::list< domain::Tags::Mesh< VolumeDim >, domain::Tags::Element< VolumeDim >, domain::Tags::Coordinates< VolumeDim, Frame::Logical >, domain::Tags::SizeOfElement< VolumeDim >, domain::Tags::DetInvJacobian< Frame::Logical, Frame::Inertial >, ::hydro::Tags::EquationOfStateBase >
 

Public Member Functions

 Minmod (::Limiters::MinmodType minmod_type, NewtonianEuler::Limiters::VariablesToLimit vars_to_limit, double tvb_constant, bool apply_flattener, bool disable_for_debugging=false) noexcept
 
 Minmod (const Minmod &)=default
 
Minmodoperator= (const Minmod &)=default
 
 Minmod (Minmod &&) noexcept=default
 
Minmodoperator= (Minmod &&) noexcept=default
 
void pup (PUP::er &p) noexcept
 
void package_data (gsl::not_null< PackagedData * > packaged_data, const Scalar< DataVector > &mass_density_cons, const tnsr::I< DataVector, VolumeDim > &momentum_density, const Scalar< DataVector > &energy_density, const Mesh< VolumeDim > &mesh, const std::array< double, VolumeDim > &element_size, const OrientationMap< VolumeDim > &orientation_map) const noexcept
 Package data for sending to neighbor elements.
 
template<size_t ThermodynamicDim>
bool operator() (gsl::not_null< Scalar< DataVector > * > mass_density_cons, gsl::not_null< tnsr::I< DataVector, VolumeDim > * > momentum_density, gsl::not_null< Scalar< DataVector > * > energy_density, const Mesh< VolumeDim > &mesh, const Element< VolumeDim > &element, const tnsr::I< DataVector, VolumeDim, Frame::Logical > &logical_coords, const std::array< double, VolumeDim > &element_size, const Scalar< DataVector > &det_inv_logical_to_inertial_jacobian, const EquationsOfState::EquationOfState< false, ThermodynamicDim > &equation_of_state, const std::unordered_map< std::pair< Direction< VolumeDim >, ElementId< VolumeDim > >, PackagedData, boost::hash< std::pair< Direction< VolumeDim >, ElementId< VolumeDim > > > > &neighbor_data) const noexcept
 Limits the solution on the element.
 

Static Public Member Functions

static std::string name () noexcept
 

Static Public Attributes

static constexpr Options::String help
 

Friends

template<size_t LocalDim>
bool operator== (const Minmod< LocalDim > &lhs, const Minmod< LocalDim > &rhs) noexcept
 

Detailed Description

template<size_t VolumeDim>
class NewtonianEuler::Limiters::Minmod< VolumeDim >

A minmod-based generalized slope limiter for the NewtonianEuler system.

Implements the three minmod-based generalized slope limiters from [29] Sec. 2.4: \(\Lambda\Pi^1\), \(\Lambda\Pi^N\), and MUSCL. See the documentation of the system-agnostic Limiters::Minmod limiter for a general discussion of the algorithm and the various options that control the action of the limiter.

This implemention is specialized to the NewtonianEuler evolution system. By specializing the limiter to the system, we can add two features that improve its robustness:

Member Data Documentation

◆ help

template<size_t VolumeDim>
constexpr Options::String NewtonianEuler::Limiters::Minmod< VolumeDim >::help
staticconstexpr
Initial value:
= {
"A Minmod limiter specialized to the NewtonianEuler system"}

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