[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
burgers.h
1 #ifndef __BURGERS__
2 #define __BURGERS__
3 
4 #include <deal.II/base/tensor.h>
5 
6 #include "parameters/all_parameters.h"
7 #include "parameters/parameters_manufactured_solution.h"
8 
9 #include "physics.h"
10 
11 namespace PHiLiP {
12 namespace Physics {
14 
29 template <int dim, int nstate, typename real>
30 class Burgers : public PhysicsBase <dim, nstate, real>
31 {
32 protected:
33  // For overloading the virtual functions defined in PhysicsBase
42 protected:
45 public:
47 
48  const bool hasConvection;
50  const bool hasDiffusion;
53 
55  Burgers(
56  const Parameters::AllParameters *const parameters_input,
57  const double diffusion_coefficient,
58  const bool convection = true,
59  const bool diffusion = true,
60  const dealii::Tensor<2,3,double> input_diffusion_tensor = Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(),
62  const Parameters::AllParameters::TestType parameters_test = Parameters::AllParameters::TestType::run_control,
63  const bool has_nonzero_physical_source = false);
64 
66  std::array<dealii::Tensor<1,dim,real>,nstate> convective_flux (const std::array<real,nstate> &solution) const;
67 
69  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux (
70  const std::array<real,nstate> &conservative_soln1,
71  const std::array<real,nstate> &conservative_soln2) const override;
72 
74  std::array<real,nstate> compute_entropy_variables (
75  const std::array<real,nstate> &conservative_soln) const;
76 
79  const std::array<real,nstate> &entropy_var) const;
80 
82  std::array<real,nstate> convective_eigenvalues (
83  const std::array<real,nstate> &/*solution*/,
84  const dealii::Tensor<1,dim,real> &/*normal*/) const;
85 
87  real max_convective_eigenvalue (const std::array<real,nstate> &soln) const;
88 
90  real max_viscous_eigenvalue (const std::array<real,nstate> &soln) const;
91 
92  // /// Diffusion matrix is identity
93  // std::array<dealii::Tensor<1,dim,real>,nstate> apply_diffusion_matrix (
94  // const std::array<real,nstate> &solution,
95  // const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_grad) const;
96 
98  std::array<dealii::Tensor<1,dim,real>,nstate> dissipative_flux (
99  const std::array<real,nstate> &solution,
100  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
101  const dealii::types::global_dof_index cell_index) const;
102 
104  std::array<dealii::Tensor<1,dim,real>,nstate> dissipative_flux (
105  const std::array<real,nstate> &solution,
106  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient) const;
107 
109  std::array<real,nstate> source_term (
110  const dealii::Point<dim,real> &pos,
111  const std::array<real,nstate> &solution,
112  const real current_time,
113  const dealii::types::global_dof_index cell_index) const;
114 
116  virtual std::array<real,nstate> source_term (
117  const dealii::Point<dim,real> &pos,
118  const std::array<real,nstate> &solution,
119  const real current_time) const;
120 
122 
125  void boundary_face_values (
126  const int /*boundary_type*/,
127  const dealii::Point<dim, real> &/*pos*/,
128  const dealii::Tensor<1,dim,real> &/*normal*/,
129  const std::array<real,nstate> &/*soln_int*/,
130  const std::array<dealii::Tensor<1,dim,real>,nstate> &/*soln_grad_int*/,
131  std::array<real,nstate> &/*soln_bc*/,
132  std::array<dealii::Tensor<1,dim,real>,nstate> &/*soln_grad_bc*/) const;
133 
134 protected:
136  real diffusion_coefficient () const;
137 };
138 
139 
140 } // Physics namespace
141 } // PHiLiP namespace
142 
143 #endif
real max_viscous_eigenvalue(const std::array< real, nstate > &soln) const
Maximum viscous eigenvalue.
Definition: burgers.cpp:159
std::array< real, nstate > compute_entropy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the entropy variables.
Definition: burgers.cpp:104
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const override
Convective split flux.
Definition: burgers.cpp:89
TestType
Possible integration tests to run.
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &solution) const
Convective flux: .
Definition: burgers.cpp:77
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Definition: physics.h:34
Manufactured solution used for grid studies to check convergence orders.
std::array< dealii::Tensor< 1, dim, real >, nstate > dissipative_flux(const std::array< real, nstate > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const
Dissipative flux: u.
Definition: burgers.cpp:166
Files for the baseline physics.
Definition: ADTypes.hpp:10
Main parameter class that contains the various other sub-parameter classes.
std::array< real, nstate > compute_conservative_variables_from_entropy_variables(const std::array< real, nstate > &entropy_var) const
Computes the conservative variables from the entropy variables.
Definition: burgers.cpp:112
std::array< real, nstate > convective_eigenvalues(const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const
Spectral radius of convective term Jacobian is &#39;c&#39;.
Definition: burgers.cpp:129
void boundary_face_values(const int, const dealii::Point< dim, real > &, const dealii::Tensor< 1, dim, real > &, const std::array< real, nstate > &, const std::array< dealii::Tensor< 1, dim, real >, nstate > &, std::array< real, nstate > &, std::array< dealii::Tensor< 1, dim, real >, nstate > &) const
If diffusion is present, assign Dirichlet boundary condition.
Definition: burgers.cpp:29
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const
Maximum convective eigenvalue.
Definition: burgers.cpp:145
static dealii::Tensor< 2, 3, double > get_default_diffusion_tensor()
gets the default diffusion tensor
std::array< real, nstate > source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const real current_time, const dealii::types::global_dof_index cell_index) const
Source term is zero or depends on manufactured solution.
Definition: burgers.cpp:195
double diffusion_scaling_coeff
Diffusion scaling coefficient in front of the diffusion tensor.
Definition: burgers.h:44
const bool has_nonzero_physical_source
Flag to signal that physical source term is non-zero.
Definition: physics.h:62
const Parameters::AllParameters::TestType test_type
Allows Burgers to distinguish between different unsteady test types.
Definition: burgers.h:52
Burgers(const Parameters::AllParameters *const parameters_input, const double diffusion_coefficient, const bool convection=true, const bool diffusion=true, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function=nullptr, const Parameters::AllParameters::TestType parameters_test=Parameters::AllParameters::TestType::run_control, const bool has_nonzero_physical_source=false)
Constructor.
Definition: burgers.cpp:9
Burger&#39;s equation with nonlinear advective term and linear diffusive term. Derived from PhysicsBase...
Definition: burgers.h:30
const bool hasDiffusion
Turns on diffusive part of the Burgers problem.
Definition: burgers.h:50
std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function
Manufactured solution function.
Definition: physics.h:71
const bool hasConvection
Turns on convective part of the Burgers problem.
Definition: burgers.h:48
real diffusion_coefficient() const
Diffusion coefficient.
Definition: burgers.cpp:120