[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
numerical_flux_factory.hpp
1 #ifndef __NUMERICAL_FLUX_FACTORY__
2 #define __NUMERICAL_FLUX_FACTORY__
3 
4 #include "physics/physics.h"
5 #include "dg/artificial_dissipation.h"
6 
7 #include "convective_numerical_flux.hpp"
8 #include "viscous_numerical_flux.hpp"
9 
10 namespace PHiLiP {
11 namespace NumericalFlux {
12 
14 template <int dim, int nspecies, int nstate, typename real>
16 {
17 public:
19  static std::unique_ptr < NumericalFluxConvective<dim,nspecies,nstate,real> >
21  const AllParam::ConvectiveNumericalFlux conv_num_flux_type,
23  const AllParam::ModelType model_type,
24  std::shared_ptr<Physics::PhysicsBase<dim, nspecies, nstate, real>> physics_input);
25 
27  static std::unique_ptr < NumericalFluxDissipative<dim,nspecies,nstate,real> >
29  const AllParam::DissipativeNumericalFlux diss_num_flux_type,
30  std::shared_ptr<Physics::PhysicsBase<dim, nspecies, nstate, real>> physics_input,
31  std::shared_ptr<ArtificialDissipationBase<dim, nspecies, nstate>> artificial_dissipation_input);
32 
33 protected:
35  static std::unique_ptr< NumericalFluxConvective<dim,nspecies,nstate,real> >
37  const AllParam::ConvectiveNumericalFlux conv_num_flux_type,
39  const AllParam::ModelType model_type,
40  std::shared_ptr<Physics::PhysicsBase<dim, nspecies, nstate, real>> physics_input);
41 };
42 
43 } // NumericalFlux namespace
44 } // PHiLiP namespace
45 
46 #endif
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Definition: physics.h:34
PartialDifferentialEquation
Possible Partial Differential Equations to solve.
Files for the baseline physics.
Definition: ADTypes.hpp:10
Creates a NumericalFluxConvective or NumericalFluxDissipative based on input.
ModelType
Types of models available.
static std::unique_ptr< NumericalFluxConvective< dim, nspecies, nstate, real > > create_convective_numerical_flux(const AllParam::ConvectiveNumericalFlux conv_num_flux_type, const AllParam::PartialDifferentialEquation pde_type, const AllParam::ModelType model_type, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input)
Creates convective numerical flux (baseline flux + upwind term) based on input.
DissipativeNumericalFlux
Possible dissipative numerical flux types.
ConvectiveNumericalFlux
Possible convective numerical flux types.
static std::unique_ptr< NumericalFluxDissipative< dim, nspecies, nstate, real > > create_dissipative_numerical_flux(const AllParam::DissipativeNumericalFlux diss_num_flux_type, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate >> artificial_dissipation_input)
Creates dissipative numerical flux based on input.
static std::unique_ptr< NumericalFluxConvective< dim, nspecies, nstate, real > > create_euler_based_convective_numerical_flux(const AllParam::ConvectiveNumericalFlux conv_num_flux_type, const AllParam::PartialDifferentialEquation pde_type, const AllParam::ModelType model_type, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real >> physics_input)
Creates euler-based convective numerical flux (upwind term)
Class to add artificial dissipation with an option to add one of the 3 dissipation types: 1...