[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
artificial_dissipation_factory.cpp
1 #include "parameters/all_parameters.h"
2 #include "parameters/parameters_artificial_dissipation.h"
3 #include <deal.II/base/tensor.h>
4 #include "artificial_dissipation_factory.h"
5 #include "artificial_dissipation.h"
6 
7 namespace PHiLiP {
8 
9 template <int dim, int nstate>
10 std::shared_ptr < ArtificialDissipationBase<dim,nstate> >
12 {
14  artificial_dissipation_enum arti_dissipation_type = parameters_input->artificial_dissipation_param.artificial_dissipation_type;
15 
16  switch (arti_dissipation_type)
17  {
18  case artificial_dissipation_enum::laplacian:
19  {
20  return std::make_shared<LaplacianArtificialDissipation<dim,nstate>>(parameters_input);
21  break;
22  }
23 
24  case artificial_dissipation_enum::physical:
25  {
26  if constexpr(dim+2==nstate)
27  {
28  std::cout<<"Physical Artifical Dissipation pointer created"<<std::endl;
29  return std::make_shared<PhysicalArtificialDissipation<dim,nstate>>(parameters_input);
30  }
31  break;
32  }
33 
34  case artificial_dissipation_enum::enthalpy_conserving_laplacian:
35  {
36  if constexpr(dim+2==nstate)
37  {
38  std::cout<<"Enthalpy Conserving Laplacian Artifical Dissipation pointer created"<<std::endl;
39  return std::make_shared<EnthalpyConservingArtificialDissipation<dim,nstate>>(parameters_input);
40  }
41  break;
42  }
43 
44  }
45 
46  assert(0==1 && "Cannot create artificial dissipation due to an invalid artificial dissipation type specified for the problem");
47  return nullptr;
48 }
49 
50 
57 
58 } // namespace PHiLiP
Files for the baseline physics.
Definition: ADTypes.hpp:10
Main parameter class that contains the various other sub-parameter classes.
static std::shared_ptr< ArtificialDissipationBase< dim, nstate > > create_artificial_dissipation(const Parameters::AllParameters *const parameters_input)
Creates artificial dissipation type depending on input parameters.
ArtificialDissipationType
Specified choices of artificial dissipation type.
ArtificialDissipationType artificial_dissipation_type
Selected artificial dissipation type specified in the input.
Creates artificial dissipation pointer.
ArtificialDissipationParam artificial_dissipation_param
Contains parameters for artificial dissipation.