[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
PHiLiP::PositivityPreservingLimiter< dim, nstate, real > Class Template Reference

Class for implementation of two forms of the Positivity-Preserving limiter derived from BoundPreservingLimiterState class. More...

#include <positivity_preserving_limiter.h>

Inheritance diagram for PHiLiP::PositivityPreservingLimiter< dim, nstate, real >:
Collaboration diagram for PHiLiP::PositivityPreservingLimiter< dim, nstate, real >:

Public Member Functions

 PositivityPreservingLimiter (const Parameters::AllParameters *const parameters_input)
 Constructor.
 
 ~PositivityPreservingLimiter ()=default
 Destructor.
 
void limit (dealii::LinearAlgebra::distributed::Vector< double > &solution, const dealii::DoFHandler< dim > &dof_handler, const dealii::hp::FECollection< dim > &fe_collection, const dealii::hp::QCollection< dim > &volume_quadrature_collection, const unsigned int grid_degree, const unsigned int max_degree, const dealii::hp::FECollection< 1 > oneD_fe_collection_1state, const dealii::hp::QCollection< 1 > oneD_quadrature_collection)
 
- Public Member Functions inherited from PHiLiP::BoundPreservingLimiterState< dim, nstate, real >
 BoundPreservingLimiterState (const Parameters::AllParameters *const parameters_input)
 Constructor.
 
 ~BoundPreservingLimiterState ()=default
 Destructor.
 
std::array< real, nstateget_soln_cell_avg (const std::array< std::vector< real >, nstate > &soln_at_q, const unsigned int n_quad_pts, const std::vector< real > &quad_weights)
 Function to obtain the solution cell average.
 
- Public Member Functions inherited from PHiLiP::BoundPreservingLimiter< dim, real >
 BoundPreservingLimiter (const int nstate_input, const Parameters::AllParameters *const parameters_input)
 Constructor.
 
 ~BoundPreservingLimiter ()=default
 Destructor.
 

Public Attributes

std::shared_ptr< BoundPreservingLimiterState< dim, nstate, real > > tvbLimiter
 Pointer to TVB limiter class (TVB limiter can be applied in conjunction with this limiter)
 
std::shared_ptr< Physics::Euler< dim, nstate, double > > euler_physics
 Euler physics pointer. Used to compute pressure.
 
- Public Attributes inherited from PHiLiP::BoundPreservingLimiter< dim, real >
const int nstate
 Number of states.
 
const Parameters::AllParameters *const all_parameters
 Pointer to parameters object.
 

Protected Member Functions

std::vector< real > get_theta2_Zhang2010 (const std::vector< real > &p_lim, const std::array< real, nstate > &soln_cell_avg, const std::array< std::vector< real >, nstate > &soln_at_q, const unsigned int n_quad_pts, const double eps, const double gamma)
 Obtain the theta value used to scale all the states using 3.16-3.18 in Zhang, Shu 2010.
 
real get_theta2_Wang2012 (const std::array< std::vector< real >, nstate > &soln_at_q, const unsigned int n_quad_pts, const double p_avg)
 Obtain the theta value used to scale all the states using 3.7 in Wang, Shu 2012.
 
real get_density_scaling_value (const double density_avg, const double density_min, const double pos_eps, const double p_avg)
 
void write_limited_solution (dealii::LinearAlgebra::distributed::Vector< double > &solution, const std::array< std::vector< real >, nstate > &soln_coeff, const unsigned int n_shape_fns, const std::vector< dealii::types::global_dof_index > &current_dofs_indices)
 

Detailed Description

template<int dim, int nstate, typename real>
class PHiLiP::PositivityPreservingLimiter< dim, nstate, real >

Class for implementation of two forms of the Positivity-Preserving limiter derived from BoundPreservingLimiterState class.

Definition at line 20 of file positivity_preserving_limiter.h.

Member Function Documentation

◆ get_density_scaling_value()

template<int dim, int nstate, typename real >
real PHiLiP::PositivityPreservingLimiter< dim, nstate, real >::get_density_scaling_value ( const double  density_avg,
const double  density_min,
const double  pos_eps,
const double  p_avg 
)
protected

Obtain the value used to scale density and enforce positivity of density Using 3.15 from Zhang, Shu 2010

Definition at line 137 of file positivity_preserving_limiter.cpp.

◆ limit()

template<int dim, int nstate, typename real >
void PHiLiP::PositivityPreservingLimiter< dim, nstate, real >::limit ( dealii::LinearAlgebra::distributed::Vector< double > &  solution,
const dealii::DoFHandler< dim > &  dof_handler,
const dealii::hp::FECollection< dim > &  fe_collection,
const dealii::hp::QCollection< dim > &  volume_quadrature_collection,
const unsigned int  grid_degree,
const unsigned int  max_degree,
const dealii::hp::FECollection< 1 >  oneD_fe_collection_1state,
const dealii::hp::QCollection< 1 >  oneD_quadrature_collection 
)
virtual

Applies positivity-preserving limiter to the solution. Using Zhang,Shu November 2010 Eq 3.14-3.19 or Wang, Shu 2012 Eq 3.7 we apply a limiter on the global solution

Implements PHiLiP::BoundPreservingLimiterState< dim, nstate, real >.

Definition at line 180 of file positivity_preserving_limiter.cpp.

◆ write_limited_solution()

template<int dim, int nstate, typename real >
void PHiLiP::PositivityPreservingLimiter< dim, nstate, real >::write_limited_solution ( dealii::LinearAlgebra::distributed::Vector< double > &  solution,
const std::array< std::vector< real >, nstate > &  soln_coeff,
const unsigned int  n_shape_fns,
const std::vector< dealii::types::global_dof_index > &  current_dofs_indices 
)
protected

Function to verify the limited solution preserves positivity of density and pressure and write back limited solution

Definition at line 158 of file positivity_preserving_limiter.cpp.


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