3 #include "burgers_rewienski.h" 8 template <
int dim,
int nspecies,
int nstate,
typename real>
11 const double rewienski_a,
12 const double rewienski_b,
13 const bool rewienski_manufactured_solution,
14 const bool convection,
16 const dealii::Tensor<2, 3> input_diffusion_tensor,
18 :
Burgers<dim, nspecies, nstate, real>(parameters_input,
22 input_diffusion_tensor,
23 manufactured_solution_function)
24 , rewienski_a(rewienski_a)
25 , rewienski_b(rewienski_b)
26 , rewienski_manufactured_solution(rewienski_manufactured_solution)
28 static_assert(nstate==dim,
"Physics::Burgers() should be created with nstate==dim");
33 template <
int dim,
int nspecies,
int nstate,
typename real>
37 const dealii::Point<dim, real> &pos,
38 const dealii::Tensor<1,dim,real> &normal_int,
39 const std::array<real,nstate> &soln_int,
40 const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
41 std::array<real,nstate> &soln_bc,
42 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const 44 std::array<real,nstate> boundary_values;
45 std::array<dealii::Tensor<1,dim,real>,nstate> boundary_gradients;
48 for (
int i=0; i<nstate; i++) {
52 for (
int i=0; i<nstate; i++) {
57 for (
int istate=0; istate<nstate; ++istate) {
60 const bool inflow = (characteristic_dot_n[istate] <= 0.);
63 soln_bc[istate] = boundary_values[istate];
64 soln_grad_bc[istate] = soln_grad_int[istate];
67 soln_bc[istate] = soln_int[istate];
68 soln_grad_bc[istate] = soln_grad_int[istate];
73 template <
int dim,
int nspecies,
int nstate,
typename real>
76 const dealii::Point<dim,real> &pos,
77 const std::array<real,nstate> &,
80 std::array<real,nstate> source;
82 for (
int istate=0; istate<nstate; istate++) {
84 source[istate] = 0.02*exp(b*pos[0]);
87 for (
int istate=0; istate<nstate; istate++) {
90 for (
int d=0;d<dim;++d) {
92 source[istate] += 0.5*manufactured_solution*manufactured_gradient[d];
95 for (
int istate=0; istate<nstate; istate++) {
97 real divergence = 0.0;
98 for (
int d=0;d<dim;++d) {
100 divergence += manufactured_gradient[d];
102 source[istate] += 0.5*manufactured_solution*divergence;
108 #if PHILIP_SPECIES==1 Manufactured solution used for grid studies to check convergence orders.
const bool rewienski_manufactured_solution
const double rewienski_a
Parameter a for eq.(18) in Carlberg 2011.
Files for the baseline physics.
std::array< real, nstate > source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const real current_time) const override
PDE Source term. If rewienski_manufactured_solution==true then the manufactured solution source term ...
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
Main parameter class that contains the various other sub-parameter classes.
Burgers Rewienski equation. Derived from Burgers, which is derived from PhysicsBase. Based on eq.(18) in Carlberg 2011.
const bool hasDiffusion
Turns on diffusive part of the Burgers problem.
const double rewienski_b
Parameter b for eq.(18) in Carlberg 2011.
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 override
If diffusion is present, assign Dirichlet boundary condition.
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 'c'.
Burger's equation with nonlinear advective term and linear diffusive term. Derived from PhysicsBase...
BurgersRewienski(const Parameters::AllParameters *const parameters_input, const double rewienski_a, const double rewienski_b, const bool rewienski_manufactured_solution, const bool convection, const bool diffusion, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr)
Constructor.