4 #include <deal.II/base/tensor.h> 6 #include "parameters/all_parameters.h" 7 #include "parameters/parameters_manufactured_solution.h" 17 template <
int dim,
int nspecies,
int nstate,
typename real>
67 const std::array<real,nstate> &conservative_soln)
const;
71 const std::array<real,nstate> &entropy_var)
const;
75 const std::array<real,nstate> &conservative_soln)
const;
79 const std::array<real,nstate> &,
80 const dealii::Tensor<1,dim,real> &)
const;
88 const std::array<real,nstate> &soln,
89 const dealii::Tensor<1,dim,real> &normal)
const override;
97 const std::array<real,nstate> &conservative_soln,
98 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
99 const dealii::types::global_dof_index cell_index)
const;
103 const dealii::Point<dim,real> &pos,
104 const std::array<real,nstate> &conservative_soln,
105 const real current_time,
106 const dealii::types::global_dof_index cell_index)
const;
116 const dealii::Tensor<1,dim,real> &normal_int,
117 const std::array<real,nstate> &soln_int,
118 const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
119 std::array<real,nstate> &soln_bc,
120 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const;
124 const dealii::Tensor<1,dim,real> &normal_int,
125 const std::array<real,nstate> &soln_int,
126 const std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_int,
127 std::array<real,nstate> &soln_bc,
128 std::array<dealii::Tensor<1,dim,real>,nstate> &soln_grad_bc)
const;
133 const dealii::Point<dim, real> &,
134 const dealii::Tensor<1,dim,real> &,
135 const std::array<real,nstate> &,
136 const std::array<dealii::Tensor<1,dim,real>,nstate> &,
137 std::array<real,nstate> &,
138 std::array<dealii::Tensor<1,dim,real>,nstate> &)
const;
145 const std::array<dealii::Tensor<1,dim,real>,nstate> &conservative_soln_gradient)
const;
156 std::array<dealii::Tensor<1,dim,real>,nstate>
158 const std::array<real,nstate> &conservative_soln,
159 const std::array<dealii::Tensor<1,dim,real>,nstate> &conservative_soln_gradient)
const;
162 std::array<dealii::Tensor<1,dim,real>,nstate>
164 const std::array<real,nstate> &primitive_soln,
165 const std::array<dealii::Tensor<1,dim,real>,nstate> &primitive_soln_gradient)
const;
170 template<
typename real2>
171 real2 compute_mixture_density (
const std::array<real2,nstate> &conservative_soln )
const;
174 dealii::Tensor<1,dim,real> compute_velocities (
const std::array<real,nstate> &conservative_soln )
const;
177 real compute_velocity_squared_from_conservative_solution (
const std::array<real,nstate> &conservative_soln )
const;
180 real compute_velocity_squared (
const dealii::Tensor<1,dim,real> &velocities )
const;
186 real compute_specific_kinetic_energy (
const std::array<real,nstate> &conservative_soln )
const;
189 real compute_mixture_specific_total_energy (
const std::array<real,nstate> &conservative_soln )
const;
193 std::array<real,nspecies> compute_species_densities (
const std::array<real,nstate> &conservative_soln )
const;
196 std::array<real,nspecies> compute_mass_fractions (
const std::array<real,nstate> &conservative_soln )
const;
200 real compute_mixture_from_species(
const std::array<real,nspecies> &mass_fractions,
const std::array<real,nspecies> &species )
const;
203 real compute_dimensional_temperature (
const real temperature )
const;
207 std::array<real,nspecies> compute_Rs (
const real Ru )
const;
213 std::array<real,nspecies> compute_species_specific_Cp (
const real temperature )
const;
216 std::array<real,nspecies>compute_species_specific_Cv (
const real temperature )
const;
224 std::array<real,nspecies> compute_species_specific_internal_energy (
const real temperature )
const;
231 std::array<real,nspecies> compute_species_entropy (
const std::array<real,nstate> &conservative_soln )
const;
234 std::array<real,nspecies> compute_species_gibbs_energy (
const std::array<real,nstate> &conservative_soln )
const;
237 real
compute_entropy (
const std::array<real,nstate> &conservative_soln )
const;
240 virtual real
compute_temperature (
const std::array<real,nstate> &conservative_soln )
const;
244 real compute_mixture_gas_constant (
const std::array<real,nstate> &conservative_soln )
const;
248 virtual real compute_mixture_pressure (
const std::array<real,nstate> &conservative_soln )
const;
251 virtual real
compute_pressure (
const std::array<real,nstate> &conservative_soln )
const;
257 real compute_mixture_specific_total_enthalpy (
const std::array<real,nstate> &conservative_soln )
const;
261 const std::array<real,nstate> &conservative_soln)
const;
265 const std::array<real,nstate> &conservative_soln,
266 const dealii::Tensor<1,dim,real> &normal)
const;
270 const std::array<real,nstate> &conservative_soln1,
271 const std::array<real,nstate> &conservative_soln2)
const override;
276 const std::array<real,nstate> &conservative_soln1,
277 const std::array<real,nstate> &conservative_soln2)
const;
281 virtual std::array<real,nspecies> compute_species_specific_heat_ratio (
const std::array<real,nstate> &conservative_soln )
const;
284 virtual real
compute_gamma (
const std::array<real,nstate> &conservative_soln )
const;
287 std::array<real,nspecies> compute_species_speed_of_sound (
const std::array<real,nstate> &conservative_soln )
const;
292 real
compute_sound (
const std::array<real,nstate> &conservative_soln )
const;
297 const dealii::Vector<double> &uh,
298 const std::vector<dealii::Tensor<1,dim> > &duh,
299 const std::vector<dealii::Tensor<2,dim> > &dduh,
300 const dealii::Tensor<1,dim> &normals,
301 const dealii::Point<dim> &evaluation_points)
const;
315 std::array<std::array<double,4>,nspecies> NASACAPTemperatureLimits;
316 std::array<std::string,nspecies> species_name;
317 std::array<double,nspecies> species_weight;
318 std::array<double,nspecies> species_enthalpy_offset;
319 std::array<real,nspecies> Rs;
RealGas(const Parameters::AllParameters *const parameters_input, std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr, const bool has_nonzero_diffusion=false, const bool has_nonzero_physical_source=false)
Constructor.
std::array< std::array< std::array< double, 3 >, 9 >, nspecies > NASACAPCoeffs
Variables to store NASA Coefficients.
RealGas equations. Derived from PhysicsBase.
const double u_ref
reference velocity [m/s]
real max_viscous_eigenvalue(const std::array< real, nstate > &soln) const
Maximum viscous eigenvalue.
const bool has_nonzero_diffusion
Flag to signal that diffusion term is non-zero.
std::array< real, nstate > compute_entropy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the entropy variables.
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
virtual std::array< real, nstate > compute_kinetic_energy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the kinetic energy variables.
Manufactured solution used for grid studies to check convergence orders.
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.
real compute_entropy(const std::array< real, nstate > &conservative_soln) const
Compute entropy from conservative solution.
Files for the baseline physics.
const bool has_nonzero_physical_source
Flag to signal that physical source term is non-zero.
void readspeciesdata(std::string reactionFilename)
Reads in data from chemistry file.
virtual real compute_temperature(const std::array< real, nstate > &conservative_soln) const
virtual real compute_pressure(const std::array< real, nstate > &conservative_soln) const
Compute pressure from conservative solution.
real compute_sound(const std::array< real, nstate > &conservative_soln) const
Evaluate speed of sound from conservative variables.
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
For post processing purposes (update comment later)
virtual std::array< real, nstate > convert_conservative_to_primitive(const std::array< real, nstate > &conservative_soln) const
Convert conservative variables to primitive variables.
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
virtual std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
Convert primitive solution to conservative solution.
const double tol
tolerance for NRM (Newton-raphson Method) [m/s]
const two_point_num_flux_enum two_point_num_flux_type
Two point numerical flux type (for split form)
const double R_ref
reference gas constant: [J/(kg·K)]
Main parameter class that contains the various other sub-parameter classes.
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
const double density_ref
reference mixture density: [kg/m^3]
const double Ru
universal gas constant: [J/(mol·K)]
std::array< real, nstate > convective_eigenvalues(const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const
Spectral radius of convective term Jacobian is 'c'.
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &conservative_soln) const
Convective fluxes that will be differentiated once in space.
TwoPointNumericalFlux
Two point numerical flux type for split form.
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.
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.
const double gam_ref
reference gamma
std::array< dealii::Tensor< 1, dim, real >, dim+2 > get_mixture_solution_gradient(const std::array< dealii::Tensor< 1, dim, real >, nstate > &conservative_soln_gradient) const
returns the solution gradient vector without the species conservation states (only mixture) ...
std::array< real, nstate > compute_conservative_variables_from_entropy_variables(const std::array< real, nstate > &entropy_var) const
Computes the conservative variables from the entropy variables.
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
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const
Maximum convective eigenvalue.
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.
std::array< real, nspecies > compute_species_entropy_cv_integral(const real temperature) const
dealii::Tensor< 1, dim, real > extract_velocities_from_primitive(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns velocities.
virtual std::vector< std::string > post_get_names() const
For post processing purposes, sets the base names (with no prefix or suffix) of the computed quantiti...
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
const double u_ref_sqr
reference velocity squared[m/s]^2
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)
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
const double mach_ref_sqr
reference mach number (Farfield Mach number squared)
const double temperature_ref
reference temperature [K]
virtual std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > post_get_data_component_interpretation() const
For post processing purposes, sets the interpretation of each computed quantity as either scalar or v...
virtual real compute_gamma(const std::array< real, nstate > &conservative_soln) const
Compute gamma from conservative solution.
virtual 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.
const double MW_Air
molar weight of Air: [kg/mol]
const double mach_ref
reference mach number (Farfield Mach number)
std::array< int, nspecies > GetNASACAP_TemperatureIndex(const real temperature) const
Determine the.
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: .
virtual dealii::UpdateFlags post_get_needed_update_flags() const
For post processing purposes (update comment later)
std::array< real, nspecies > compute_species_specific_enthalpy(const real temperature) const
real compute_pressure_from_density_temperature(const real density, const real temperature, const std::array< real, nstate > &conservative_soln) const
Given density and temperature, returns NON-DIMENSIONALIZED pressure using free-stream non-dimensional...
std::array< real, dim+2 > get_mixture_solution_vector(const std::array< real, nstate > &full_soln) const
returns the solution vector without the species conservation states (only mixture) ...