[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
euler.h
1 #ifndef __EULER__
2 #define __EULER__
3 
4 #include <deal.II/base/tensor.h>
5 #include "physics.h"
6 #include "parameters/all_parameters.h"
7 #include "parameters/parameters_manufactured_solution.h"
8 
9 namespace PHiLiP {
10 namespace Physics {
11 
13 
77 template <int dim, int nspecies, int nstate, typename real>
78 class Euler : public PhysicsBase <dim, nspecies, nstate, real>
79 {
80 protected:
81  // For overloading the virtual functions defined in PhysicsBase
90 public:
93  Euler (
94  const Parameters::AllParameters *const parameters_input,
95  const double ref_length,
96  const double gamma_gas,
97  const double mach_inf,
98  const double angle_of_attack,
99  const double side_slip_angle,
101  const two_point_num_flux_enum two_point_num_flux_type = two_point_num_flux_enum::KG,
102  const bool has_nonzero_diffusion = false,
103  const bool has_nonzero_physical_source = false);
104 
105  const double ref_length;
106  const double gam;
107  const double gamm1;
108 
112  const double density_inf;
113 
114  const double mach_inf;
115  const double mach_inf_sqr;
116 
119  const double angle_of_attack;
121 
123  const double side_slip_angle;
124 
125 
126  const double sound_inf;
127  const double pressure_inf;
128  const double entropy_inf;
132 
133  //const double internal_energy_inf;
135 
137  dealii::Tensor<1,dim,double> velocities_inf; // should be const
138 
139 
140  // dealii::Tensor<1,dim,double> compute_velocities_inf() const;
141 
142  // std::array<real,nstate> manufactured_solution (const dealii::Point<dim,double> &pos) const;
143 
145  std::array<dealii::Tensor<1,dim,real>,nstate> convective_flux (
146  const std::array<real,nstate> &conservative_soln) const override;
147 
149  std::array<real,nstate> convective_normal_flux (const std::array<real,nstate> &conservative_soln, const dealii::Tensor<1,dim,real> &normal) const;
150 
152  dealii::Tensor<2,nstate,real> convective_flux_directional_jacobian (
153  const std::array<real,nstate> &conservative_soln,
154  const dealii::Tensor<1,dim,real> &normal) const;
155 
157  std::array<real,nstate> convective_eigenvalues (
158  const std::array<real,nstate> &/*conservative_soln*/,
159  const dealii::Tensor<1,dim,real> &/*normal*/) const override;
160 
162  real max_convective_eigenvalue (const std::array<real,nstate> &soln) const override;
163 
165 
167  const std::array<real,nstate> &soln,
168  const dealii::Tensor<1,dim,real> &normal) const override;
169 
171  real max_viscous_eigenvalue (const std::array<real,nstate> &soln) const override;
172 
174  std::array<dealii::Tensor<1,dim,real>,nstate> dissipative_flux (
175  const std::array<real,nstate> &conservative_soln,
176  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
177  const dealii::types::global_dof_index cell_index) const;
178 
180  virtual std::array<dealii::Tensor<1,dim,real>,nstate> dissipative_flux (
181  const std::array<real,nstate> &conservative_soln,
182  const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient) const;
183 
185  std::array<real,nstate> source_term (
186  const dealii::Point<dim,real> &pos,
187  const std::array<real,nstate> &conservative_soln,
188  const real current_time,
189  const dealii::types::global_dof_index cell_index) const;
190 
192  virtual std::array<real,nstate> source_term (
193  const dealii::Point<dim,real> &pos,
194  const std::array<real,nstate> &conservative_soln,
195  const real current_time) const;
196 
198  std::array<real,nstate> convective_source_term (
199  const dealii::Point<dim,real> &pos) const;
200 
201 protected:
203 
205  template<typename real2>
206  bool check_positive_quantity(real2 &quantity, const std::string qty_name) const;
207 
208 public:
213  template<typename real2>
214  std::array<real2,nstate> convert_conservative_to_primitive_templated ( const std::array<real2,nstate> &conservative_soln ) const;
215 
217  std::array<real,nstate> convert_conservative_to_primitive ( const std::array<real,nstate> &conservative_soln ) const;
218 
223  std::array<real,nstate> convert_primitive_to_conservative ( const std::array<real,nstate> &primitive_soln ) const;
224 
226  template<typename real2>
227  std::array<dealii::Tensor<1,dim,real2>,nstate>
229  const std::array<real2,nstate> &conservative_soln,
230  const std::array<dealii::Tensor<1,dim,real2>,nstate> &conservative_soln_gradient) const;
231 
233  std::array<dealii::Tensor<1,dim,real>,nstate>
235  const std::array<real,nstate> &conservative_soln,
236  const std::array<dealii::Tensor<1,dim,real>,nstate> &conservative_soln_gradient) const;
237 
239  std::array<dealii::Tensor<1,dim,real>,nstate>
241  const std::array<real,nstate> &primitive_soln,
242  const std::array<dealii::Tensor<1,dim,real>,nstate> &primitive_soln_gradient) const;
243 
245  virtual real compute_gamma ( const std::array<real,nstate> &conservative_soln ) const;
246 
248  template<typename real2>
249  real2 compute_pressure_templated ( const std::array<real2,nstate> &conservative_soln ) const;
250 
251  real compute_pressure ( const std::array<real,nstate> &conservative_soln ) const;
252 
254  template<typename real2>
255  real2 compute_entropy (const real2 density, const real2 pressure) const;
256 
258  real compute_specific_enthalpy ( const std::array<real,nstate> &conservative_soln, const real pressure) const;
259 
261  template<typename real2>
262  real2 compute_entropy_templated (const std::array<real2,nstate> &conservative_soln) const;
263 
265  real compute_entropy ( const std::array<real,nstate> &conservative_soln ) const;
266 
268  real compute_numerical_entropy_function(const std::array<real,nstate> &conservative_soln) const;
269 
271  real compute_sound ( const std::array<real,nstate> &conservative_soln ) const;
273  real compute_sound ( const real density, const real pressure ) const;
274 
276  template<typename real2>
277  dealii::Tensor<1,dim,real2> compute_velocities ( const std::array<real2,nstate> &conservative_soln ) const;
279  template<typename real2>
280  real2 compute_velocity_squared ( const dealii::Tensor<1,dim,real2> &velocities ) const;
281 
283  template<typename real2>
284  dealii::Tensor<1,dim,real2> extract_velocities_from_primitive ( const std::array<real2,nstate> &primitive_soln ) const;
286 
289  real compute_total_energy ( const std::array<real,nstate> &primitive_soln ) const;
290 
292  real compute_kinetic_energy_from_primitive_solution ( const std::array<real,nstate> &primitive_soln ) const;
293 
295  real compute_incompressible_kinetic_energy_from_primitive_solution ( const std::array<real,nstate> &primitive_soln ) const;
296 
298  real compute_kinetic_energy_from_conservative_solution ( const std::array<real,nstate> &conservative_soln ) const;
299 
301  real compute_incompressible_kinetic_energy_from_conservative_solution ( const std::array<real,nstate> &conservative_soln ) const;
302 
304 
312  real compute_entropy_measure ( const std::array<real,nstate> &conservative_soln ) const;
313 
315  real compute_entropy_measure ( const real density, const real pressure ) const;
316 
318  real compute_mach_number ( const std::array<real,nstate> &conservative_soln ) const;
319 
321 
322  template<typename real2>
323  real2 compute_temperature ( const std::array<real2,nstate> &primitive_soln ) const;
324 
326 
327  real compute_density_from_pressure_temperature ( const real pressure, const real temperature ) const;
328 
330 
331  real compute_temperature_from_density_pressure ( const real density, const real pressure ) const;
332 
334 
335  real compute_pressure_from_density_temperature ( const real density, const real temperature ) const;
336 
338  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux (
339  const std::array<real,nstate> &conservative_soln1,
340  const std::array<real,nstate> &conservative_soln2) const override;
341 
345  std::array<real,nstate> compute_entropy_variables (
346  const std::array<real,nstate> &conservative_soln) const;
347 
351  const std::array<real,nstate> &entropy_var) const;
352 
354  std::array<real,nstate> compute_kinetic_energy_variables (
355  const std::array<real,nstate> &conservative_soln) const;
356 
358 
361  const std::array<real,nstate> &conservative_soln1,
362  const std::array<real,nstate> &convervative_soln2) const;
363 
365 
368  const std::array<real,nstate> &conservative_soln1,
369  const std::array<real,nstate> &convervative_soln2) const;
370 
372 
374  dealii::Tensor<1,dim,real> compute_mean_velocities(
375  const std::array<real,nstate> &conservative_soln1,
376  const std::array<real,nstate> &convervative_soln2) const;
377 
379 
382  const std::array<real,nstate> &conservative_soln1,
383  const std::array<real,nstate> &convervative_soln2) const;
384 
386  void boundary_face_values (
387  const int /*boundary_type*/,
388  const dealii::Point<dim, real> &/*pos*/,
389  const dealii::Tensor<1,dim,real> &/*normal*/,
390  const std::array<real,nstate> &/*soln_int*/,
391  const std::array<dealii::Tensor<1,dim,real>,nstate> &/*soln_grad_int*/,
392  std::array<real,nstate> &/*soln_bc*/,
393  std::array<dealii::Tensor<1,dim,real>,nstate> &/*soln_grad_bc*/) const;
394 
396  virtual dealii::Vector<double> post_compute_derived_quantities_vector (
397  const dealii::Vector<double> &uh,
398  const std::vector<dealii::Tensor<1,dim> > &duh,
399  const std::vector<dealii::Tensor<2,dim> > &dduh,
400  const dealii::Tensor<1,dim> &normals,
401  const dealii::Point<dim> &evaluation_points) const override;
402 
404  virtual std::vector<std::string> post_get_names () const override;
405 
407  virtual std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation> post_get_data_component_interpretation () const override;
408 
410  virtual dealii::UpdateFlags post_get_needed_update_flags () const override;
411 
412 protected:
419  void boundary_slip_wall (
420  const dealii::Tensor<1,dim,real> &normal_int,
421  const std::array<real,nstate> &soln_int,
422  const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
423  std::array<real,nstate> &soln_bc,
424  std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc) const;
425 
427  void boundary_wall (
428  const dealii::Tensor<1,dim,real> &normal_int,
429  const std::array<real,nstate> &soln_int,
430  const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
431  std::array<real,nstate> &soln_bc,
432  std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc) const;
433 
435  virtual void boundary_manufactured_solution (
436  const dealii::Point<dim, real> &pos,
437  const dealii::Tensor<1,dim,real> &normal_int,
438  const std::array<real,nstate> &soln_int,
439  const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
440  std::array<real,nstate> &soln_bc,
441  std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc) const;
442 
446  const real total_inlet_pressure,
447  const real back_pressure,
448  const std::array<real,nstate> &soln_int,
449  std::array<real,nstate> &soln_bc) const;
450 
453  void boundary_inflow (
454  const real total_inlet_pressure,
455  const real total_inlet_temperature,
456  const dealii::Tensor<1,dim,real> &normal_int,
457  const std::array<real,nstate> &soln_int,
458  std::array<real,nstate> &soln_bc) const;
459 
462  void boundary_riemann (
463  const dealii::Tensor<1,dim,real> &normal_int,
464  const std::array<real,nstate> &soln_int,
465  std::array<real,nstate> &soln_bc) const;
466 
468  void boundary_farfield (
469  std::array<real,nstate> &soln_bc) const;
470 
473  const std::array<real,nstate> &soln_int,
474  std::array<real,nstate> &soln_bc,
475  std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc) const;
476 
478  void boundary_custom (
479  std::array<real,nstate> &soln_bc) const;
480 
483  std::array<real,nstate> &soln_bc) const;
484 
486  std::array<real,nstate> get_manufactured_solution_value(
487  const dealii::Point<dim,real> &pos) const;
488 
490  std::array<dealii::Tensor<1,dim,real>,nstate> get_manufactured_solution_gradient(
491  const dealii::Point<dim,real> &pos) const;
492 
495  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux_kennedy_gruber (
496  const std::array<real,nstate> &conservative_soln1,
497  const std::array<real,nstate> &conservative_soln2) const;
498 
501  const std::array<real,nstate> &primitive_soln) const;
502 
504  real compute_ismail_roe_logarithmic_mean(const real val1, const real val2) const;
505 
508  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux_ismail_roe (
509  const std::array<real,nstate> &conservative_soln1,
510  const std::array<real,nstate> &conservative_soln2) const;
511 
513  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux_chandrashekar (
514  const std::array<real,nstate> &conservative_soln1,
515  const std::array<real,nstate> &conservative_soln2) const;
516 
518  std::array<dealii::Tensor<1,dim,real>,nstate> convective_numerical_split_flux_ranocha (
519  const std::array<real,nstate> &conservative_soln1,
520  const std::array<real,nstate> &conservative_soln2) const;
521 };
522 
523 } // Physics namespace
524 } // PHiLiP namespace
525 
526 #endif
virtual dealii::UpdateFlags post_get_needed_update_flags() const override
For post processing purposes, updates the required flags for dealii.
Definition: euler.cpp:1686
real compute_mean_density(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean density given two sets of conservative solutions.
Definition: euler.cpp:887
real compute_temperature_from_density_pressure(const real density, const real pressure) const
Given density and pressure, returns NON-DIMENSIONALIZED temperature using free-stream non-dimensional...
Definition: euler.cpp:476
dealii::Tensor< 1, dim, double > velocities_inf
Non-dimensionalized Velocity vector at farfield.
Definition: euler.h:137
std::array< dealii::Tensor< 1, dim, real >, nstate > dissipative_flux(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const
Dissipative flux: 0.
Definition: euler.cpp:1085
const double angle_of_attack
Angle of attack.
Definition: euler.h:119
std::array< real, nstate > convert_conservative_to_primitive(const std::array< real, nstate > &conservative_soln) const
Convert conservative to primitive (real2==real); required by base class.
Definition: euler.cpp:199
void boundary_slip_wall(const dealii::Tensor< 1, dim, real > &normal_int, const std::array< real, nstate > &soln_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const
Definition: euler.cpp:1183
real compute_pressure_from_density_temperature(const real density, const real temperature) const
Given density and temperature, returns NON-DIMENSIONALIZED pressure using free-stream non-dimensional...
Definition: euler.cpp:484
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const override
Maximum convective eigenvalue.
Definition: euler.cpp:1047
std::array< real, nstate > convective_normal_flux(const std::array< real, nstate > &conservative_soln, const dealii::Tensor< 1, dim, real > &normal) const
Convective normal flux: .
Definition: euler.cpp:953
const bool has_nonzero_diffusion
Flag to signal that diffusion term is non-zero.
Definition: physics.h:59
const double mach_inf
Farfield Mach number.
Definition: euler.h:114
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &conservative_soln) const override
Convective flux: .
Definition: euler.cpp:928
dealii::Tensor< 1, dim, real2 > compute_velocities(const std::array< real2, nstate > &conservative_soln) const
Evaluate velocities from conservative variables.
Definition: euler.cpp:331
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
Definition: physics.h:34
const two_point_num_flux_enum two_point_num_flux_type
Two point numerical flux type (for split form)
Definition: euler.h:129
Manufactured solution used for grid studies to check convergence orders.
real max_viscous_eigenvalue(const std::array< real, nstate > &soln) const override
Maximum viscous eigenvalue.
Definition: euler.cpp:1078
real compute_specific_enthalpy(const std::array< real, nstate > &conservative_soln, const real pressure) const
Evaluate pressure from conservative variables.
Definition: euler.cpp:434
std::array< real, nstate > compute_kinetic_energy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the kinetic energy variables.
Definition: euler.cpp:869
Files for the baseline physics.
Definition: ADTypes.hpp:10
const bool has_nonzero_physical_source
Flag to signal that physical source term is non-zero.
Definition: physics.h:62
virtual void boundary_manufactured_solution(const dealii::Point< dim, real > &pos, const dealii::Tensor< 1, dim, real > &normal_int, const std::array< real, nstate > &soln_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const
Evaluate the manufactured solution boundary conditions.
Definition: euler.cpp:1244
real compute_total_energy(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns total energy.
Definition: euler.cpp:364
real compute_sound(const std::array< real, nstate > &conservative_soln) const
Evaluate speed of sound from conservative variables.
Definition: euler.cpp:548
void boundary_face_values(const int, const dealii::Point< dim, real > &, const dealii::Tensor< 1, dim, real > &, const std::array< real, nstate > &, const std::array< dealii::Tensor< 1, dim, real >, nstate > &, std::array< real, nstate > &, std::array< dealii::Tensor< 1, dim, real >, nstate > &) const
Boundary condition handler.
Definition: euler.cpp:1520
std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
Definition: euler.cpp:206
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux_ismail_roe(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const
Definition: euler.cpp:663
std::array< real2, nstate > convert_conservative_to_primitive_templated(const std::array< real2, nstate > &conservative_soln) const
Definition: euler.cpp:178
real compute_density_from_pressure_temperature(const real pressure, const real temperature) const
Given pressure and temperature, returns NON-DIMENSIONALIZED density using free-stream non-dimensional...
Definition: euler.cpp:468
std::array< real, nstate > compute_ismail_roe_parameter_vector_from_primitive(const std::array< real, nstate > &primitive_soln) const
Compute Ismail-Roe parameter vector from primitive solution.
Definition: euler.cpp:627
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
Definition: physics.h:71
const double pressure_inf
Non-dimensionalized pressure* at infinity.
Definition: euler.h:127
void boundary_astrophysical_inflow(std::array< real, nstate > &soln_bc) const
Boundary conditions based on user-defined values.
Definition: euler.cpp:1495
void boundary_riemann(const dealii::Tensor< 1, dim, real > &normal_int, const std::array< real, nstate > &soln_int, std::array< real, nstate > &soln_bc) const
Definition: euler.cpp:1109
bool check_positive_quantity(real2 &quantity, const std::string qty_name) const
Check positive quantity and modify it according to handle_non_physical_result()
Definition: euler.cpp:155
Main parameter class that contains the various other sub-parameter classes.
real compute_entropy_measure(const std::array< real, nstate > &conservative_soln) const
Evaluate entropy from conservative variables.
Definition: euler.cpp:413
std::array< real, nstate > source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &conservative_soln, const real current_time, const dealii::types::global_dof_index cell_index) const
Source term is zero or depends on manufactured solution.
Definition: euler.cpp:71
real compute_mean_specific_total_energy(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean specific total energy given two sets of conservative solutions.
Definition: euler.cpp:919
real2 compute_pressure_templated(const std::array< real2, nstate > &conservative_soln) const
Evaluate pressure from conservative variables.
Definition: euler.cpp:493
dealii::Tensor< 1, dim, real2 > extract_velocities_from_primitive(const std::array< real2, nstate > &primitive_soln) const
Given primitive variables, returns velocities.
Definition: euler.cpp:355
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux_chandrashekar(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const
Chandrashekar entropy conserving flux.
Definition: euler.cpp:723
virtual std::vector< std::string > post_get_names() const override
For post processing purposes, sets the base names (with no prefix or suffix) of the computed quantiti...
Definition: euler.cpp:1664
TwoPointNumericalFlux
Two point numerical flux type for split form.
virtual real compute_gamma(const std::array< real, nstate > &conservative_soln) const
For Euler it returns this->gam.
Definition: euler.cpp:316
real compute_mean_pressure(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean pressure given two sets of conservative solutions.
Definition: euler.cpp:895
const double entropy_inf
Entropy measure at infinity.
Definition: euler.h:128
std::array< real, nstate > convective_source_term(const dealii::Point< dim, real > &pos) const
Convective flux contribution to the source term.
Definition: euler.cpp:124
const double density_inf
Definition: euler.h:112
void boundary_custom(std::array< real, nstate > &soln_bc) const
Custom boundary conditions for the left boundary of the astrophysical mach jet case where it is not h...
Definition: euler.cpp:1479
real compute_pressure(const std::array< real, nstate > &conservative_soln) const
Compute pressure from conservative solution.
Definition: euler.cpp:510
const double side_slip_angle
Sideslip angle.
Definition: euler.h:123
const double gamm1
Constant heat capacity ratio (Gamma-1.0) used often.
Definition: euler.h:107
std::array< real, nstate > convective_eigenvalues(const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const override
Spectral radius of convective term Jacobian is &#39;c&#39;.
Definition: euler.cpp:1027
void boundary_pressure_outflow(const real total_inlet_pressure, const real back_pressure, const std::array< real, nstate > &soln_int, std::array< real, nstate > &soln_bc) const
Definition: euler.cpp:1301
real compute_kinetic_energy_from_conservative_solution(const std::array< real, nstate > &conservative_soln) const
Given conservative variables, returns kinetic energy.
Definition: euler.cpp:395
Euler equations. Derived from PhysicsBase.
Definition: euler.h:78
double temperature_inf
Non-dimensionalized temperature* at infinity. Should equal 1/density*(inf)
Definition: euler.h:130
std::array< dealii::Tensor< 1, dim, real >, nstate > get_manufactured_solution_gradient(const dealii::Point< dim, real > &pos) const
Get manufactured solution gradient.
Definition: euler.cpp:108
real2 compute_temperature(const std::array< real2, nstate > &primitive_soln) const
Given primitive variables, returns NON-DIMENSIONALIZED temperature using free-stream non-dimensionali...
Definition: euler.cpp:458
void boundary_inflow(const real total_inlet_pressure, const real total_inlet_temperature, const dealii::Tensor< 1, dim, real > &normal_int, const std::array< real, nstate > &soln_int, std::array< real, nstate > &soln_bc) const
Definition: euler.cpp:1341
std::array< real, nstate > compute_conservative_variables_from_entropy_variables(const std::array< real, nstate > &entropy_var) const
Definition: euler.cpp:845
virtual std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > post_get_data_component_interpretation() const override
For post processing purposes, sets the interpretation of each computed quantity as either scalar or v...
Definition: euler.cpp:1636
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux_kennedy_gruber(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const
Definition: euler.cpp:600
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_primitive_gradient_to_conservative_gradient(const std::array< real, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &primitive_soln_gradient) const
Definition: euler.cpp:224
real compute_incompressible_kinetic_energy_from_primitive_solution(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns incompressible kinetic energy.
Definition: euler.cpp:385
const double sound_inf
Non-dimensionalized sound* at infinity.
Definition: euler.h:126
std::array< real, nstate > get_manufactured_solution_value(const dealii::Point< dim, real > &pos) const
Get manufactured solution value.
Definition: euler.cpp:93
real compute_ismail_roe_logarithmic_mean(const real val1, const real val2) const
Compute Ismail-Roe logarithmic mean.
Definition: euler.cpp:642
const double ref_length
Reference length.
Definition: euler.h:105
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const override
Evaluates convective flux based on the chosen split form.
Definition: euler.cpp:581
void boundary_p0_extrapolation(const std::array< real, nstate > &soln_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const
p0 extrapolation at the boundary
Definition: euler.cpp:1465
double dynamic_pressure_inf
Non-dimensionalized dynamic pressure* at infinity.
Definition: euler.h:131
real max_convective_normal_eigenvalue(const std::array< real, nstate > &soln, const dealii::Tensor< 1, dim, real > &normal) const override
Maximum convective normal eigenvalue (used in Lax-Friedrichs)
Definition: euler.cpp:1062
real compute_kinetic_energy_from_primitive_solution(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns kinetic energy.
Definition: euler.cpp:374
Euler(const Parameters::AllParameters *const parameters_input, const double ref_length, const double gamma_gas, const double mach_inf, const double angle_of_attack, const double side_slip_angle, std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr, const two_point_num_flux_enum two_point_num_flux_type=two_point_num_flux_enum::KG, const bool has_nonzero_diffusion=false, const bool has_nonzero_physical_source=false)
Constructor.
Definition: euler.cpp:14
real compute_numerical_entropy_function(const std::array< real, nstate > &conservative_soln) const
Compute numerical entropy function -rho s.
Definition: euler.cpp:444
real2 compute_entropy_templated(const std::array< real2, nstate > &conservative_soln) const
Evaluate physical entropy = log(p ^{-}) from pressure and density.
Definition: euler.cpp:518
std::array< dealii::Tensor< 1, dim, real2 >, nstate > convert_conservative_gradient_to_primitive_gradient_templated(const std::array< real2, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real2 >, nstate > &conservative_soln_gradient) const
Definition: euler.cpp:261
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_conservative_gradient_to_primitive_gradient(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &conservative_soln_gradient) const
Definition: euler.cpp:307
dealii::Tensor< 1, dim, real > compute_mean_velocities(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean velocities given two sets of conservative solutions.
Definition: euler.cpp:905
real2 compute_velocity_squared(const dealii::Tensor< 1, dim, real2 > &velocities) const
Given the velocity vector , returns the dot-product .
Definition: euler.cpp:342
virtual dealii::Vector< double > post_compute_derived_quantities_vector(const dealii::Vector< double > &uh, const std::vector< dealii::Tensor< 1, dim > > &duh, const std::vector< dealii::Tensor< 2, dim > > &dduh, const dealii::Tensor< 1, dim > &normals, const dealii::Point< dim > &evaluation_points) const override
For post processing purposes, computes all the quantities we write to the VTK files.
Definition: euler.cpp:1581
const double gam
Constant heat capacity ratio of fluid.
Definition: euler.h:106
dealii::Tensor< 2, nstate, real > convective_flux_directional_jacobian(const std::array< real, nstate > &conservative_soln, const dealii::Tensor< 1, dim, real > &normal) const
Convective flux Jacobian: .
Definition: euler.cpp:980
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_numerical_split_flux_ranocha(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &conservative_soln2) const
Ranocha pressure equilibrium preserving, entropy and energy conserving flux.
Definition: euler.cpp:772
void boundary_farfield(std::array< real, nstate > &soln_bc) const
Simple farfield boundary conditions based on freestream values.
Definition: euler.cpp:1448
const double mach_inf_sqr
Definition: euler.h:115
real compute_incompressible_kinetic_energy_from_conservative_solution(const std::array< real, nstate > &conservative_soln) const
Given conservative variables, returns incompressible kinetic energy.
Definition: euler.cpp:404
void boundary_wall(const dealii::Tensor< 1, dim, real > &normal_int, const std::array< real, nstate > &soln_int, const std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_int, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const
Wall boundary condition.
Definition: euler.cpp:1231
std::array< real, nstate > compute_entropy_variables(const std::array< real, nstate > &conservative_soln) const
Definition: euler.cpp:823
real2 compute_entropy(const real2 density, const real2 pressure) const
Evaluate physical entropy = log(p ^{-}) from pressure and density.
real compute_mach_number(const std::array< real, nstate > &conservative_soln) const
Given conservative variables, returns Mach number.
Definition: euler.cpp:568