[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
bound_preserving_limiter.h
1 #ifndef __BOUND_PRESERVING_LIMITER__
2 #define __BOUND_PRESERVING_LIMITER__
3 
4 #include <deal.II/dofs/dof_handler.h>
5 #include <deal.II/base/parameter_handler.h>
6 
7 #include "parameters/all_parameters.h"
8 #include "operators/operators.h"
9 #include "physics/euler.h"
10 #include "physics/real_gas.h"
11 
12 namespace PHiLiP {
13 
15 
23 template<int dim, int nspecies, typename real>
25 {
26 public:
28  explicit BoundPreservingLimiter(
29  const int nstate_input,//number of states input
30  const Parameters::AllParameters* const parameters_input);//pointer to parameters
31 
33  ~BoundPreservingLimiter() = default;
34 
36  const int nstate;
37 
40 
42  virtual void limit(
43  dealii::LinearAlgebra::distributed::Vector<double>& solution,
44  const dealii::DoFHandler<dim>& dof_handler,
45  const dealii::hp::FECollection<dim>& fe_collection,
46  const dealii::hp::QCollection<dim>& volume_quadrature_collection,
47  const unsigned int grid_degree,
48  const unsigned int max_degree,
49  const dealii::hp::FECollection<1> oneD_fe_collection_1state,
50  const dealii::hp::QCollection<1> oneD_quadrature_collection,
51  double dt) = 0;
52 }; // End of BoundPreservingLimiter Class
53 
55 template<int dim, int nspecies, int nstate, typename real>
56 class BoundPreservingLimiterState : public BoundPreservingLimiter <dim, nspecies, real>
57 {
58 public:
61 
64  const Parameters::AllParameters* const parameters_input);
65 
67  ~BoundPreservingLimiterState() = default;
68 
70  virtual void limit(
71  dealii::LinearAlgebra::distributed::Vector<double>& solution,
72  const dealii::DoFHandler<dim>& dof_handler,
73  const dealii::hp::FECollection<dim>& fe_collection,
74  const dealii::hp::QCollection<dim>& volume_quadrature_collection,
75  const unsigned int grid_degree,
76  const unsigned int max_degree,
77  const dealii::hp::FECollection<1> oneD_fe_collection_1state,
78  const dealii::hp::QCollection<1> oneD_quadrature_collection,
79  double dt) = 0;
80 
82  std::array<real, nstate> get_soln_cell_avg(
83  const std::array<std::vector<real>, nstate>& soln_at_q,
84  const unsigned int n_quad_pts,
85  const std::vector<real>& quad_weights);
86 
87 }; // End of BoundPreservingLimiterState Class
88 } // PHiLiP namespace
89 
90 #endif
91 
~BoundPreservingLimiter()=default
Destructor.
Base Class for bound preserving limiters templated on state.
const Parameters::AllParameters *const all_parameters
Pointer to parameters object.
Files for the baseline physics.
Definition: ADTypes.hpp:10
Main parameter class that contains the various other sub-parameter classes.
Base Class for implementation of bound preserving limiters.
const int nstate
Number of states.
virtual 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, double dt)=0
Function to limit the solution.
BoundPreservingLimiter(const int nstate_input, const Parameters::AllParameters *const parameters_input)
Constructor.