[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
parameters_limiter.cpp
1 #include "parameters/parameters_limiter.h"
2 
3 namespace PHiLiP {
4 namespace Parameters {
5 
6 // Limiter inputs
8 
9 void LimiterParam::declare_parameters (dealii::ParameterHandler &prm)
10 {
11  prm.enter_subsection("limiter");
12  {
13  prm.declare_entry("use_OOA", "false",
14  dealii::Patterns::Bool(),
15  "Does not perform Convergence Test by default. Otherwise, performs Convergence Test.");
16 
17  prm.declare_entry("bound_preserving_limiter", "none",
18  dealii::Patterns::Selection(
19  "none | "
20  "maximum_principle | "
21  "positivity_preservingZhang2010 | "
22  "positivity_preservingWang2012 "),
23  "The type of limiter we want to apply to the solution. "
24  "Choices are "
25  " <none | "
26  " maximum_principle | "
27  " positivity_preservingZhang2010 | "
28  " positivity_preservingWang2012>.");
29 
30  prm.declare_entry("min_density", "1e-13",
31  dealii::Patterns::Double(1e-20, 1e200),
32  "Lower bound for density used in Positivity-Preserving Limiter. Small value greater than zero, less than solution at all times.");
33 
34  prm.declare_entry("use_tvb_limiter", "false",
35  dealii::Patterns::Bool(),
36  "Applies TVB Limiter to solution. Tune M and h to obtain favourable results.");
37 
38  prm.declare_entry("max_delta_x", "1.0",
39  dealii::Patterns::Double(0, 1e200),
40  "Maximum delta_x required for minmod function within TVB Limiter.");
41 
42  using convert_tensor = dealii::Patterns::Tools::Convert<dealii::Tensor<1, 4, double>>;
43  prm.declare_entry("tuning_parameter_for_each_state", "0,0,0,0",
44  *convert_tensor::to_pattern(),
45  "TVB Limiter tuning parameters for each state. Set to 0 if TVD is required.");
46  }
47  prm.leave_subsection();
48 }
49 
50 void LimiterParam::parse_parameters (dealii::ParameterHandler &prm)
51 {
52  prm.enter_subsection("limiter");
53  {
54  use_OOA = prm.get_bool("use_OOA");
55 
56  const std::string bound_preserving_limiter_string = prm.get("bound_preserving_limiter");
57  if (bound_preserving_limiter_string == "none") bound_preserving_limiter = LimiterType::none;
58  if (bound_preserving_limiter_string == "maximum_principle") bound_preserving_limiter = LimiterType::maximum_principle;
59  if (bound_preserving_limiter_string == "positivity_preservingZhang2010") bound_preserving_limiter = LimiterType::positivity_preservingZhang2010;
60  if (bound_preserving_limiter_string == "positivity_preservingWang2012") bound_preserving_limiter = LimiterType::positivity_preservingWang2012;
61 
62  min_density = prm.get_double("min_density");
63 
64  use_tvb_limiter = prm.get_bool("use_tvb_limiter");
65  max_delta_x = prm.get_double("max_delta_x");
66 
67  using convert_tensor = dealii::Patterns::Tools::Convert<dealii::Tensor<1, 4, double>>;
68  tuning_parameter_for_each_state = convert_tensor::to_value(prm.get("tuning_parameter_for_each_state"));
69  }
70  prm.leave_subsection();
71 }
72 
73 } // Parameters namespace
74 } // PHiLiP namespace
LimiterType bound_preserving_limiter
Variable to store specified limiter type.
double min_density
Epsilon value for Positivity-Preserving Limiter.
double max_delta_x
Maximum delta_x for TVB Limiter.
void parse_parameters(dealii::ParameterHandler &prm)
Function to parse parameters.
Files for the baseline physics.
Definition: ADTypes.hpp:10
bool use_OOA
Flag to perform convergence analysis for Limiter Tests (ie. burgers_limiter, advection_limiter, low_density_2d)
bool use_tvb_limiter
Flag for applying TVB Limiter.
dealii::Tensor< 1, 4, double > tuning_parameter_for_each_state
Tuning parameters for TVB Limiter.
static void declare_parameters(dealii::ParameterHandler &prm)
Function to declare parameters.