1 #ifndef __INITIAL_CONDITION_FUNCTION_H__ 2 #define __INITIAL_CONDITION_FUNCTION_H__ 5 #include <deal.II/lac/vector.h> 6 #include <deal.II/base/function.h> 7 #include "parameters/all_parameters.h" 13 template <
int dim,
int nstate,
typename real>
17 using dealii::Function<dim,real>::value;
24 virtual real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const = 0;
29 template <
int dim,
int nstate,
typename real>
33 using dealii::Function<dim,real>::value;
46 const double density_bc = euler_physics.
density_inf;
47 const double pressure_bc = 1.0/(euler_physics.
gam*euler_physics.
mach_inf_sqr);
48 std::array<double,nstate> primitive_boundary_values;
49 primitive_boundary_values[0] = density_bc;
50 for (
int d=0;d<dim;d++) { primitive_boundary_values[1+d] = euler_physics.
velocities_inf[d]; }
51 primitive_boundary_values[nstate-1] = pressure_bc;
56 double value (
const dealii::Point<dim> &,
const unsigned int istate)
const 58 return farfield_conservative[istate];
63 template <
int dim,
int nstate,
typename real>
67 using dealii::Function<dim, real>::value;
75 real
value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
79 virtual real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const = 0;
82 real convert_primitive_to_conversative_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const;
86 std::shared_ptr < Physics::Euler<dim, nstate, double > > euler_physics;
90 template <
int dim,
int nstate,
typename real>
94 using dealii::Function<dim,real>::value;
114 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
117 virtual real density(
const dealii::Point<dim,real> &point)
const;
121 template <
int dim,
int nstate,
typename real>
141 real density(
const dealii::Point<dim,real> &point)
const override;
145 template <
int dim,
int nstate,
typename real>
149 using dealii::Function<dim,real>::value;
157 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
161 template <
int dim,
int nstate,
typename real>
165 using dealii::Function<dim,real>::value;
173 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
177 template <
int dim,
int nstate,
typename real>
181 using dealii::Function<dim,real>::value;
189 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
193 template <
int dim,
int nstate,
typename real>
198 using dealii::Function<dim,real>::value;
206 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
210 template <
int dim,
int nstate,
typename real>
215 using dealii::Function<dim,real>::value;
223 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
227 template <
int dim,
int nstate,
typename real>
232 using dealii::Function<dim,real>::value;
240 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
244 template <
int dim,
int nstate,
typename real>
249 using dealii::Function<dim,real>::value;
257 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
261 template <
int dim,
int nstate,
typename real>
266 using dealii::Function<dim,real>::value;
274 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
278 template <
int dim,
int nstate,
typename real>
283 using dealii::Function<dim,real>::value;
290 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
294 template <
int dim,
int nstate,
typename real>
299 using dealii::Function<dim,real>::value;
313 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
318 std::shared_ptr < Physics::Euler<dim, nstate, double > > euler_physics;
330 template <
int dim,
int nstate,
typename real>
334 using dealii::Function<dim,real>::value;
342 real
value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
350 std::shared_ptr < Physics::Euler<dim, nstate, double > > euler_physics;
359 template <
int dim,
int nstate,
typename real>
364 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
378 template <
int dim,
int nstate,
typename real>
383 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
397 template <
int dim,
int nstate,
typename real>
402 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
416 template <
int dim,
int nstate,
typename real>
421 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
431 template <
int dim,
int nstate,
typename real>
435 using dealii::Function<dim,real>::value;
442 real
value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
446 template <
int dim,
int nstate,
typename real>
457 static std::shared_ptr<InitialConditionFunction<dim,nstate,real>>
458 create_InitialConditionFunction(
FlowCaseType
Selects the flow case to be simulated.
Initial Condition Function: Advection Energy.
Initial Condition Function: Taylor Green Vortex (isothermal density)
Function used to evaluate farfield conservative solution.
Initial Condition Function: 1D Burgers Viscous.
const double gam
Constant heat capacity ratio of fluid.
Initial Condition Function: 1D Sod Shock Tube.
InitialConditionFunction()
< dealii::Function we are templating on
Files for the baseline physics.
FreeStreamInitialConditions(const Physics::Euler< dim, nstate, double > euler_physics)
Constructor.
Initial Condition Function: Euler Equations (primitive values)
Initial Condition Function: 1D Shu Osher Problem.
Initial Condition Function: Convection Diffusion Orders of Accuracy.
Initial Condition Function: Isentropic vortex.
const double gamma_gas
Constant heat capacity ratio of fluid.
const double mach_inf_sqr
Farfield Mach number squared.
Main parameter class that contains the various other sub-parameter classes.
Initial Condition Function: 1D Burgers Inviscid Energy.
Initial condition function factory.
double value(const dealii::Point< dim > &, const unsigned int istate) const
Returns the istate-th farfield conservative value.
virtual real value(const dealii::Point< dim, real > &point, const unsigned int istate=0) const =0
Value of the initial condition.
Initial Condition Function: 1D Burgers Inviscid.
Initial Condition Function: 2D Low Density Euler.
Initial condition function used to initialize a particular flow setup/case.
Initial Condition Function: 1D Burgers Rewienski.
Kelvin-Helmholtz Instability, parametrized by Atwood number.
const real atwood_number
Atwood number: quantifies density difference.
Initial Condition Function: 1D Sine Function; used for temporal convergence.
std::array< double, nstate > farfield_conservative
< dealii::Function we are templating on
Initial Condition Function: 1D Burgers Inviscid.
Initial Condition Function: 1D Leblanc Shock Tube.
DensityInitialConditionType
For taylor green vortex, selects the type of density initialization.
const double mach_inf
Farfield Mach number.
std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
const double mach_inf_sqr
Initial Condition Function: Taylor Green Vortex (uniform density)
dealii::Tensor< 1, dim, double > velocities_inf
Non-dimensionalized Velocity vector at farfield.
Initial Condition Function: Convection Diffusion Energy.