[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 nstate, typename real>
16 {
17 public:
19  static std::unique_ptr < NumericalFluxConvective<dim,nstate,real> >
21  const AllParam::ConvectiveNumericalFlux conv_num_flux_type,
23  const AllParam::ModelType model_type,
24  std::shared_ptr<Physics::PhysicsBase<dim, nstate, real>> physics_input);
25 
27  static std::unique_ptr < NumericalFluxDissipative<dim,nstate,real> >
29  const AllParam::DissipativeNumericalFlux diss_num_flux_type,
30  std::shared_ptr<Physics::PhysicsBase<dim, nstate, real>> physics_input,
31  std::shared_ptr<ArtificialDissipationBase<dim, nstate>> artificial_dissipation_input);
32 
33 protected:
35  static std::unique_ptr< NumericalFluxConvective<dim,nstate,real> >
37  const AllParam::ConvectiveNumericalFlux conv_num_flux_type,
39  const AllParam::ModelType model_type,
40  std::shared_ptr<Physics::PhysicsBase<dim, nstate, real>> physics_input);
41 };
42 
43 } // NumericalFlux namespace
44 } // PHiLiP namespace
45 
46 #endif
static std::unique_ptr< NumericalFluxConvective< dim, 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, nstate, real >> physics_input)
Creates euler-based convective numerical flux (upwind term)
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Definition: physics.h:34
static std::unique_ptr< NumericalFluxConvective< dim, 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, nstate, real >> physics_input)
Creates convective numerical flux (baseline flux + upwind term) based on input.
PartialDifferentialEquation
Possible Partial Differential Equations to solve.
Files for the baseline physics.
Definition: ADTypes.hpp:10
static std::unique_ptr< NumericalFluxDissipative< dim, nstate, real > > create_dissipative_numerical_flux(const AllParam::DissipativeNumericalFlux diss_num_flux_type, std::shared_ptr< Physics::PhysicsBase< dim, nstate, real >> physics_input, std::shared_ptr< ArtificialDissipationBase< dim, nstate >> artificial_dissipation_input)
Creates dissipative numerical flux based on input.
Creates a NumericalFluxConvective or NumericalFluxDissipative based on input.
ModelType
Types of models available.
DissipativeNumericalFlux
Possible dissipative numerical flux types.
ConvectiveNumericalFlux
Possible convective numerical flux types.
Class to add artificial dissipation with an option to add one of the 3 dissipation types: 1...