1 #ifndef __CONVECTION_DIFFUSION__ 2 #define __CONVECTION_DIFFUSION__ 4 #include <deal.II/base/tensor.h> 6 #include "parameters/all_parameters.h" 8 #include "parameters/parameters_manufactured_solution.h" 28 template <
int dim,
int nspecies,
int nstate,
typename real>
57 const bool convection =
true,
58 const bool diffusion =
true,
66 linear_advection_velocity{input_advection_vector[0], input_advection_vector[1], input_advection_vector[2]},
74 std::array<dealii::Tensor<1,dim,real>,nstate>
convective_flux (
const std::array<real,nstate> &solution)
const;
78 const std::array<real,nstate> &soln1,
79 const std::array<real,nstate> &soln2)
const override;
88 std::array<dealii::Tensor<1,dim,real>,nstate>
90 const std::array<real,nstate> &conservative_soln,
91 const std::array<dealii::Tensor<1,dim,real>,nstate> &conservative_soln_gradient)
const;
94 std::array<dealii::Tensor<1,dim,real>,nstate>
96 const std::array<real,nstate> &primitive_soln,
97 const std::array<dealii::Tensor<1,dim,real>,nstate> &primitive_soln_gradient)
const;
101 const std::array<real,nstate> &conservative_soln)
const;
105 const std::array<real,nstate> &entropy_var)
const;
109 const std::array<real,nstate> &,
110 const dealii::Tensor<1,dim,real> &)
const;
125 const std::array<real,nstate> &solution,
126 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
127 const dealii::types::global_dof_index cell_index)
const;
131 const std::array<real,nstate> &solution,
132 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient)
const;
136 const dealii::Point<dim,real> &pos,
137 const std::array<real,nstate> &solution,
138 const real current_time,
139 const dealii::types::global_dof_index cell_index)
const;
143 const dealii::Point<dim,real> &pos,
144 const std::array<real,nstate> &solution,
145 const real current_time)
const;
153 const dealii::Point<dim, real> &,
154 const dealii::Tensor<1,dim,real> &,
155 const std::array<real,nstate> &,
156 const std::array<dealii::Tensor<1,dim,real>,nstate> &,
157 std::array<real,nstate> &,
158 std::array<dealii::Tensor<1,dim,real>,nstate> &)
const;
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.
std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
Convert primitive solution to conservative solution.
static dealii::Tensor< 1, 3, double > get_default_advection_vector()
gets the default advection vector
const Parameters::AllParameters::TestType test_type
Allows convection diffusion to distinguish between different unsteady test types. ...
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_primitive_gradient_to_conservative_gradient(const std::array< real, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &primitive_soln_gradient) const
TestType
Possible integration tests to run.
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Manufactured solution used for grid studies to check convergence orders.
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.
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'.
const bool hasConvection
Turns ON/OFF convection term.
Convection-diffusion with linear advective and diffusive term. Derived from PhysicsBase.
dealii::Tensor< 1, dim, real > advection_speed() const
Linear advection speed: c.
Files for the baseline physics.
const bool has_nonzero_physical_source
Flag to signal that physical source term is non-zero.
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
Main parameter class that contains the various other sub-parameter classes.
std::array< real, nstate > compute_entropy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the entropy variables.
double diffusion_scaling_coeff
Diffusion scaling coefficient in front of the diffusion tensor.
static dealii::Tensor< 2, 3, double > get_default_diffusion_tensor()
gets the default diffusion tensor
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux(const std::array< real, nstate > &soln1, const std::array< real, nstate > &soln2) const override
Convective numerical split flux for split form.
double linear_advection_velocity[3]
Linear advection velocity in x, y, and z directions.
ConvectionDiffusion(const Parameters::AllParameters *const parameters_input, const bool convection=true, const bool diffusion=true, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), const dealii::Tensor< 1, 3, double > input_advection_vector=Parameters::ManufacturedSolutionParam::get_default_advection_vector(), const double input_diffusion_coefficient=Parameters::ManufacturedSolutionParam::get_default_diffusion_coefficient(), std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr, const Parameters::AllParameters::TestType parameters_test=Parameters::AllParameters::TestType::run_control, const bool has_nonzero_physical_source=false)
Constructor.
real max_viscous_eigenvalue(const std::array< real, nstate > &soln) const
Maximum viscous eigenvalue.
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_conservative_gradient_to_primitive_gradient(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &conservative_soln_gradient) const
std::array< real, nstate > convert_conservative_to_primitive(const std::array< real, nstate > &conservative_soln) const
Convert conservative variables to primitive variables.
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const
Maximum convective eigenvalue.
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.
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.
static double get_default_diffusion_coefficient()
gets the default diffusion coefficient;
real diffusion_coefficient() const
Diffusion coefficient.
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &solution) const
Convective flux: .