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" 9 #include "../real_gas.h" 10 #include "../navier_stokes.h" 15 template <
int dim,
int nspecies,
int nstate,
typename real>
19 using dealii::Function<dim,real>::value;
26 virtual real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const = 0;
31 template <
int dim,
int nspecies,
int nstate,
typename real>
35 using dealii::Function<dim,real>::value;
48 const double density_bc = euler_physics.
density_inf;
49 const double pressure_bc = 1.0/(euler_physics.
gam*euler_physics.
mach_inf_sqr);
50 std::array<double,nstate> primitive_boundary_values;
51 primitive_boundary_values[0] = density_bc;
52 for (
int d=0;d<dim;d++) { primitive_boundary_values[1+d] = euler_physics.
velocities_inf[d]; }
53 primitive_boundary_values[nstate-1] = pressure_bc;
58 double value (
const dealii::Point<dim> &,
const unsigned int istate)
const 60 return farfield_conservative[istate];
65 template <
int dim,
int nspecies,
int nstate,
typename real>
69 using dealii::Function<dim,real>::value;
75 const double channel_friction_velocity_reynolds_number_,
76 const double domain_length_x_,
77 const double domain_length_y_,
78 const double domain_length_z_);
89 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
93 real get_distance_from_wall(
const dealii::Point<dim,real> &point)
const;
95 virtual real x_velocity (
const dealii::Point<dim,real> &point,
const real density,
const real temperature)
const;
97 virtual real y_velocity (
const dealii::Point<dim,real> &point)
const;
100 template <
int dim,
int nspecies,
int nstate,
typename real>
110 const double channel_friction_velocity_reynolds_number_,
111 const double domain_length_x_,
112 const double domain_length_y_,
113 const double domain_length_z_);
117 real x_velocity (
const dealii::Point<dim,real> &point,
const real density,
const real temperature)
const override;
120 template <
int dim,
int nspecies,
int nstate,
typename real>
129 const double channel_friction_velocity_reynolds_number_,
130 const double domain_length_x_,
131 const double domain_length_y_,
132 const double domain_length_z_);
136 real y_velocity (
const dealii::Point<dim,real> &point)
const override;
140 template <
int dim,
int nspecies,
int nstate,
typename real>
144 using dealii::Function<dim,real>::value;
156 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
160 virtual real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const = 0;
163 real convert_primitive_to_conversative_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
166 std::shared_ptr < Physics::Euler<dim, nspecies, nstate, double > > euler_physics;
170 template <
int dim,
int nspecies,
int nstate,
typename real>
174 using dealii::Function<dim, real>::value;
182 real
value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
186 virtual real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const = 0;
189 real convert_primitive_to_conversative_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const;
192 std::shared_ptr < Physics::RealGas<dim, nspecies, nstate, double > > real_gas_physics;
196 template <
int dim,
int nspecies,
int nstate,
typename real>
213 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
216 virtual real density(
const dealii::Point<dim,real> &point)
const;
220 template <
int dim,
int nspecies,
int nstate,
typename real>
240 real density(
const dealii::Point<dim,real> &point)
const override;
244 template <
int dim,
int nspecies,
int nstate,
typename real>
260 const real extremum_vorticity_value_,
261 const real dipole_radius,
262 const real dipole_axis_angle_wrt_x_axis_in_degrees);
264 const real extremum_vorticity_value;
273 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
277 template <
int dim,
int nspecies,
int nstate,
typename real>
296 template <
int dim,
int nspecies,
int nstate,
typename real>
315 template <
int dim,
int nspecies,
int nstate,
typename real>
319 using dealii::Function<dim,real>::value;
327 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
331 template <
int dim,
int nspecies,
int nstate,
typename real>
335 using dealii::Function<dim,real>::value;
343 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
347 template <
int dim,
int nspecies,
int nstate,
typename real>
351 using dealii::Function<dim,real>::value;
359 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
363 template <
int dim,
int nspecies,
int nstate,
typename real>
368 using dealii::Function<dim,real>::value;
376 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
380 template <
int dim,
int nspecies,
int nstate,
typename real>
385 using dealii::Function<dim,real>::value;
393 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
397 template <
int dim,
int nspecies,
int nstate,
typename real>
402 using dealii::Function<dim,real>::value;
410 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
414 template <
int dim,
int nspecies,
int nstate,
typename real>
419 using dealii::Function<dim,real>::value;
427 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
431 template <
int dim,
int nspecies,
int nstate,
typename real>
436 using dealii::Function<dim,real>::value;
444 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate)
const override;
448 template <
int dim,
int nspecies,
int nstate,
typename real>
453 using dealii::Function<dim,real>::value;
460 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
464 template <
int dim,
int nspecies,
int nstate,
typename real>
469 using dealii::Function<dim,real>::value;
483 real
value (
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
488 std::shared_ptr < Physics::Euler<dim, nspecies, nstate, double > > euler_physics;
500 template <
int dim,
int nspecies,
int nstate,
typename real>
504 using dealii::Function<dim,real>::value;
512 real
value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
520 std::shared_ptr < Physics::Euler<dim, nspecies, nstate, double > > euler_physics;
529 template <
int dim,
int nspecies,
int nstate,
typename real>
534 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
549 template <
int dim,
int nspecies,
int nstate,
typename real>
554 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
568 template <
int dim,
int nspecies,
int nstate,
typename real>
573 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
587 template <
int dim,
int nspecies,
int nstate,
typename real>
592 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
606 template <
int dim,
int nspecies,
int nstate,
typename real>
611 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
625 template <
int dim,
int nspecies,
int nstate,
typename real>
630 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
645 template <
int dim,
int nspecies,
int nstate,
typename real>
650 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
665 template <
int dim,
int nspecies,
int nstate,
typename real>
670 real primitive_value(
const dealii::Point<dim, real>& point,
const unsigned int istate = 0)
const override;
684 template <
int dim,
int nspecies,
int nstate,
typename real>
690 bool high_temperature);
693 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
694 bool use_high_temp_ic;
702 template <
int dim,
int nspecies,
int nstate,
typename real>
710 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
719 template <
int dim,
int nspecies,
int nstate,
typename real>
727 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
731 template <
int dim,
int nspecies,
int nstate,
typename real>
735 using dealii::Function<dim,real>::value;
744 const bool smooth_interface;
748 real primitive_value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const;
751 virtual real mass_fraction(
const dealii::Point<dim,real> &point)
const;
755 template <
int dim,
int nspecies,
int nstate,
typename real>
759 using dealii::Function<dim,real>::value;
766 real
value(
const dealii::Point<dim,real> &point,
const unsigned int istate = 0)
const override;
770 template <
int dim,
int nspecies,
int nstate,
typename real>
783 static std::shared_ptr<InitialConditionFunction<dim,nspecies,nstate,real>>
784 create_InitialConditionFunction(
dealii::Tensor< 1, dim, double > velocities_inf
Non-dimensionalized Velocity vector at farfield.
Initial Condition Function: Taylor Green Vortex (uniform density)
FlowCaseType
Selects the flow case to be simulated.
Initial Condition Function: Advection Energy.
Initial Condition Function: Taylor Green Vortex (isothermal density)
virtual real value(const dealii::Point< dim, real > &point, const unsigned int istate=0) const =0
Value of the initial condition.
FreeStreamInitialConditions(const Physics::Euler< dim, nspecies, nstate, double > euler_physics)
Constructor.
Function used to evaluate farfield conservative solution.
Initial Condition Function: Dipole Wall Collision Normal.
Initial Condition Function: Dipole Wall Collision.
Initial Condition Function: 1D Burgers Viscous.
2D Initial Condition Function: Multispecies_IsentropicVortex
Initial Condition Function: 1D Sod Shock Tube.
XVelocityInitialConditionType
For turbulent channel flow, selects the type of x-velocity initialization.
Initial Condition Function: 2D Low Density Euler.
const double domain_length_y
Domain length in y-direction.
Initial Condition Function: 2D Strong Vortex Shock Wave Interaction.
Files for the baseline physics.
Initial Condition Function: 1D Shu Osher Problem.
std::array< double, nstate > farfield_conservative
< dealii::Function we are templating on
Initial Condition Function: 2D Astrophysical Mach Jet.
double value(const dealii::Point< dim > &, const unsigned int istate) const
Returns the istate-th farfield conservative value.
std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
Initial Condition Function: Convection Diffusion Orders of Accuracy.
Initial Condition Function: Isentropic vortex.
1D Initial Condition Function: Multispecies_VortexAdvection
const double half_channel_height
Half channel height.
Main parameter class that contains the various other sub-parameter classes.
1D Initial Condition Function: Multispecies_SodShockTube
const real atwood_number
Atwood number: quantifies density difference.
const double mach_inf
Farfield Mach number.
Initial Condition Function: Dipole Wall Collision Oblique.
Initial Condition Function: 1D Burgers Inviscid Energy.
Initial condition function factory.
const double gamma_gas
Constant heat capacity ratio of fluid.
Initial Condition Function: 1D Burgers Inviscid.
Initial condition function used to initialize a particular flow setup/case.
Initial Condition Function: 1D Burgers Rewienski.
Kelvin-Helmholtz Instability, parametrized by Atwood number.
Initial Condition Function: 2D Double Mach Reflection Problem.
const Physics::NavierStokes< dim, nspecies, nstate, double > navier_stokes_physics
Navier-Stokes physics object.
Function used to evaluate initial turbulent channel conservative solution.
Initial Condition Function: Euler Equations (primitive values)
const double domain_length_x
Domain length in x-direction.
const double mach_inf_sqr
Farfield Mach number squared.
Initial Condition Function: 1D Sine Function; used for temporal convergence.
const double channel_friction_velocity_reynolds_number
Channel Reynolds number based on wall friction velocity.
InitialConditionFunction()
< dealii::Function we are templating on
const double domain_length_z
Domain length in z-direction.
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 gam
Constant heat capacity ratio of fluid.
const double mach_inf
Farfield Mach number.
const double mach_inf_sqr
const double channel_height
Channel height.
Initial Condition Function: 2D Shock Diffraction Problem.
Initial Condition Function: Taylor Green Vortex (uniform density)
const double gamma_gas
Constant heat capacity ratio of fluid.
Initial Condition Function: Convection Diffusion Energy.
const double mach_inf_sqr
Farfield Mach number squared.
Initial Condition Function: NavierStokesBase.