1 #ifndef __VISCOUS_NUMERICAL_FLUX__ 2 #define __VISCOUS_NUMERICAL_FLUX__ 4 #include <deal.II/base/tensor.h> 5 #include <deal.II/base/types.h> 6 #include "physics/physics.h" 7 #include "dg/artificial_dissipation.h" 10 namespace NumericalFlux {
13 template<
int dim,
int nspecies,
int nstate,
typename real>
27 const std::array<real, nstate> &soln_int,
28 const std::array<real, nstate> &soln_ext,
29 const dealii::Tensor<1,dim,real> &normal_int)
const = 0;
33 const dealii::types::global_dof_index current_cell_index,
34 const dealii::types::global_dof_index neighbor_cell_index_,
35 const real artificial_diss_coeff_int,
36 const real artificial_diss_coeff_ext_,
37 const std::array<real, nstate> &soln_int,
38 const std::array<real, nstate> &soln_ext,
39 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_int,
40 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_ext_,
41 const std::array<real, nstate> &filtered_soln_int,
42 const std::array<real, nstate> &filtered_soln_ext,
43 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_int,
44 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_ext_,
45 const dealii::Tensor<1,dim,real> &normal_int,
47 const bool on_boundary,
48 const int boundary_type=0)
const = 0;
51 const std::shared_ptr < Physics::PhysicsBase<dim, nspecies, nstate, real> >
pde_physics;
52 const std::shared_ptr < ArtificialDissipationBase<dim, nspecies, nstate> >
artificial_dissip;
56 template<
int dim,
int nspecies,
int nstate,
typename real>
71 const std::array<real, nstate> &soln_int,
72 const std::array<real, nstate> &soln_ext,
73 const dealii::Tensor<1,dim,real> &normal_int)
const override;
83 const dealii::types::global_dof_index current_cell_index,
84 const dealii::types::global_dof_index neighbor_cell_index_,
85 const real artificial_diss_coeff_int,
86 const real artificial_diss_coeff_ext_,
87 const std::array<real, nstate> &soln_int,
88 const std::array<real, nstate> &soln_ext,
89 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_int,
90 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_ext_,
91 const std::array<real, nstate> &filtered_soln_int,
92 const std::array<real, nstate> &filtered_soln_ext,
93 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_int,
94 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_ext_,
95 const dealii::Tensor<1,dim,real> &normal_int,
97 const bool on_boundary,
98 const int boundary_type=0)
const override;
103 template<
int dim,
int nspecies,
int nstate,
typename real>
118 const std::array<real, nstate> &soln_int,
119 const std::array<real, nstate> &soln_ext,
120 const dealii::Tensor<1,dim,real> &normal_int)
const override;
130 const dealii::types::global_dof_index current_cell_index,
131 const dealii::types::global_dof_index neighbor_cell_index_,
132 const real artificial_diss_coeff_int,
133 const real artificial_diss_coeff_ext_,
134 const std::array<real, nstate> &soln_int,
135 const std::array<real, nstate> &soln_ext,
136 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_int,
137 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_ext_,
138 const std::array<real, nstate> &filtered_soln_int,
139 const std::array<real, nstate> &filtered_soln_ext,
140 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_int,
141 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_ext_,
142 const dealii::Tensor<1,dim,real> &normal_int,
144 const bool on_boundary,
145 const int boundary_type=0)
const override;
149 template<
int dim,
int nspecies,
int nstate,
typename real>
164 const std::array<real, nstate> &soln_int,
165 const std::array<real, nstate> &soln_ext,
166 const dealii::Tensor<1,dim,real> &normal_int)
const override;
176 const dealii::types::global_dof_index current_cell_index,
177 const dealii::types::global_dof_index neighbor_cell_index_,
178 const real artificial_diss_coeff_int,
179 const real artificial_diss_coeff_ext_,
180 const std::array<real, nstate> &soln_int,
181 const std::array<real, nstate> &soln_ext,
182 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_int,
183 const std::array<dealii::Tensor<1,dim,real>, nstate> &soln_grad_ext_,
184 const std::array<real, nstate> &filtered_soln_int,
185 const std::array<real, nstate> &filtered_soln_ext,
186 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_int,
187 const std::array<dealii::Tensor<1,dim,real>, nstate> &filtered_soln_grad_ext_,
188 const dealii::Tensor<1,dim,real> &normal_int,
190 const bool on_boundary,
191 const int boundary_type=0)
const override;
NumericalFluxDissipative(std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate >> artificial_dissipation_input)
Constructor.
virtual std::array< real, nstate > evaluate_solution_flux(const std::array< real, nstate > &soln_int, const std::array< real, nstate > &soln_ext, const dealii::Tensor< 1, dim, real > &normal_int) const =0
Solution flux at the interface.
const std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate > > artificial_dissip
Link to artificial dissipation.
const std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real > > pde_physics
Associated physics.
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Base class of numerical flux associated with dissipation.
Files for the baseline physics.
virtual std::array< real, nstate > evaluate_auxiliary_flux(const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index_, const real artificial_diss_coeff_int, const real artificial_diss_coeff_ext_, const std::array< real, nstate > &soln_int, const std::array< real, nstate > &soln_ext, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_ext_, const std::array< real, nstate > &filtered_soln_int, const std::array< real, nstate > &filtered_soln_ext, const std::array< dealii::Tensor< 1, dim, real >, nstate > &filtered_soln_grad_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &filtered_soln_grad_ext_, const dealii::Tensor< 1, dim, real > &normal_int, const real &penalty, const bool on_boundary, const int boundary_type=0) const =0
Auxiliary flux at the interface.
BassiRebay2(std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate >> artificial_dissipation_input)
Constructor.
SymmetricInternalPenalty(std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate >> artificial_dissipation_input)
Constructor.
CentralViscousNumericalFlux(std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate >> artificial_dissipation_input)
Constructor.
Class to add artificial dissipation with an option to add one of the 3 dissipation types: 1...
virtual ~NumericalFluxDissipative()=default
Abstract class must have a virtual destructor and an implementation.
Symmetric interior penalty method.