[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
PHiLiP::Physics::RealGas< dim, nspecies, nstate, real > Class Template Reference

RealGas equations. Derived from PhysicsBase. More...

#include <real_gas.h>

Inheritance diagram for PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >:
Collaboration diagram for PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >:

Public Types

using two_point_num_flux_enum = Parameters::AllParameters::TwoPointNumericalFlux
 
- Public Types inherited from PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >
using NonPhysicalBehaviorEnum = Parameters::AllParameters::NonPhysicalBehaviorEnum
 

Public Member Functions

 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.
 
 ~RealGas ()
 Destructor.
 
void readspeciesdata (std::string reactionFilename)
 Reads in data from chemistry file.
 
std::array< int, nspecies > GetNASACAP_TemperatureIndex (const real temperature) const
 Determine the.
 
std::array< real, nstate > compute_entropy_variables (const std::array< real, nstate > &conservative_soln) const
 Computes the entropy variables.
 
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.
 
virtual std::array< real, nstate > compute_kinetic_energy_variables (const std::array< real, nstate > &conservative_soln) const
 Computes the kinetic energy variables.
 
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'.
 
real max_convective_eigenvalue (const std::array< real, nstate > &soln) const
 Maximum convective eigenvalue.
 
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) More...
 
real max_viscous_eigenvalue (const std::array< real, nstate > &soln) const
 Maximum viscous eigenvalue.
 
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.
 
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.
 
virtual std::array< real, nstate > convert_primitive_to_conservative (const std::array< real, nstate > &primitive_soln) const
 Convert primitive solution to conservative solution.
 
virtual std::array< real, nstate > convert_conservative_to_primitive (const std::array< real, nstate > &conservative_soln) const
 Convert conservative variables to primitive variables.
 
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
 
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
 
std::array< real, nspecies > compute_species_densities (const std::array< real, nstate > &conservative_soln) const
 
std::array< real, nspecies > compute_mass_fractions (const std::array< real, nstate > &conservative_soln) const
 
std::array< real, nspecies > compute_Rs (const real Ru) const
 
real compute_entropy (const std::array< real, nstate > &conservative_soln) const
 Compute entropy from conservative solution.
 
virtual real compute_temperature (const std::array< real, nstate > &conservative_soln) const
 
virtual real compute_mixture_pressure (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_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-dimensionalization.
 
real compute_mixture_specific_total_enthalpy (const std::array< real, nstate > &conservative_soln) const
 
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.
 
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: \( \frac{\partial \mathbf{F}_{conv}}{\partial w} \cdot \mathbf{n} \).
 
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< 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 compute_sound (const std::array< real, nstate > &conservative_soln) const
 Evaluate speed of sound from conservative variables.
 
- Public Member Functions inherited from PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >
 PhysicsBase (const Parameters::AllParameters *const parameters_input, const bool has_nonzero_diffusion_input, const bool has_nonzero_physical_source_input, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function_input=nullptr)
 Default constructor that will set the constants.
 
 PhysicsBase (const Parameters::AllParameters *const parameters_input, const bool has_nonzero_diffusion_input, const bool has_nonzero_physical_source_input, std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function_input=nullptr)
 Constructor that will call default constructor.
 
virtual ~PhysicsBase ()=default
 Virtual destructor required for abstract classes.
 
virtual std::array< real, nstate > dissipative_flux_dot_normal (const std::array< real, nstate > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const std::array< real, nstate > &filtered_solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &filtered_solution_gradient, const bool on_boundary, const dealii::types::global_dof_index cell_index, const dealii::Tensor< 1, dim, real > &normal, const int boundary_type)
 Dissipative fluxes dot normal vector.
 
virtual std::array< dealii::Tensor< 1, dim, real >, nstate > dissipative_flux (const std::array< real, nstate > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const std::array< real, nstate > &filtered_solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &filtered_solution_gradient, const dealii::types::global_dof_index cell_index)
 Dissipative fluxes that will be differentiated ONCE in space.
 
virtual std::array< real, nstate > physical_source_term (const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const
 Physical source term that does require differentiation.
 
virtual std::array< real, nstate > artificial_source_term (const real viscosity_coefficient, const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution) const
 Artificial source term that does not require differentiation stemming from artificial dissipation.
 
virtual 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 > &, 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
 Evaluates boundary values and gradients on the other side of the face for the convective flux.
 
virtual void boundary_face_values_viscous_flux (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 > &, 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
 Evaluates boundary values and gradients on the other side of the face for the viscous flux.
 
virtual dealii::Vector< double > post_compute_derived_quantities_scalar (const double &uh, const dealii::Tensor< 1, dim > &, const dealii::Tensor< 2, dim > &, const dealii::Tensor< 1, dim > &, const dealii::Point< dim > &) const
 Returns current scalar solution to be used by PhysicsPostprocessor to output current solution. More...
 
template<typename real2 >
real2 handle_non_physical_result (const std::string message="") const
 Function to handle nonphysical results. More...
 

Public Attributes

const double gam_ref
 reference gamma
 
const double mach_ref
 reference mach number (Farfield Mach number)
 
const double mach_ref_sqr
 reference mach number (Farfield Mach number squared)
 
const two_point_num_flux_enum two_point_num_flux_type
 Two point numerical flux type (for split form)
 
const double Ru
 universal gas constant: [J/(mol·K)]
 
const double MW_Air
 molar weight of Air: [kg/mol]
 
const double R_ref
 reference gas constant: [J/(kg·K)]
 
const double temperature_ref
 reference temperature [K]
 
const double u_ref
 reference velocity [m/s]
 
const double u_ref_sqr
 reference velocity squared[m/s]^2
 
const double tol
 tolerance for NRM (Newton-raphson Method) [m/s]
 
const double density_ref
 reference mixture density: [kg/m^3]
 
- Public Attributes inherited from PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >
const bool has_nonzero_diffusion
 Flag to signal that diffusion term is non-zero.
 
const bool has_nonzero_physical_source
 Flag to signal that physical source term is non-zero.
 
const Parameters::AllParameters *const all_parameters
 Pointer to parameters object.
 
const NonPhysicalBehaviorEnum non_physical_behavior_type
 Determines type of nonphysical behavior.
 
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
 Manufactured solution function.
 
const double BIG_NUMBER = 1e100
 BIG_NUMBER which is returned in place of NaN according to handle_non_physical_result() More...
 

Protected Member Functions

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
 
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.
 
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, 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)
 
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)
 
template<typename real2 >
real2 compute_mixture_density (const std::array< real2, nstate > &conservative_soln) const
 
dealii::Tensor< 1, dim, real > compute_velocities (const std::array< real, nstate > &conservative_soln) const
 
real compute_velocity_squared_from_conservative_solution (const std::array< real, nstate > &conservative_soln) const
 
real compute_velocity_squared (const dealii::Tensor< 1, dim, real > &velocities) const
 
dealii::Tensor< 1, dim, real > extract_velocities_from_primitive (const std::array< real, nstate > &primitive_soln) const
 Given primitive variables, returns velocities.
 
real compute_specific_kinetic_energy (const std::array< real, nstate > &conservative_soln) const
 
real compute_mixture_specific_total_energy (const std::array< real, nstate > &conservative_soln) const
 
real compute_mixture_from_species (const std::array< real, nspecies > &mass_fractions, const std::array< real, nspecies > &species) const
 
real compute_dimensional_temperature (const real temperature) const
 
std::array< real, nspecies > compute_species_specific_Cp (const real temperature) const
 
std::array< real, nspecies > compute_species_specific_Cv (const real temperature) const
 
std::array< real, nspecies > compute_species_specific_enthalpy (const real temperature) const
 
std::array< real, nspecies > compute_species_specific_internal_energy (const real temperature) const
 
std::array< real, nspecies > compute_species_entropy_cv_integral (const real temperature) const
 
std::array< real, nspecies > compute_species_entropy (const std::array< real, nstate > &conservative_soln) const
 
std::array< real, nspecies > compute_species_gibbs_energy (const std::array< real, nstate > &conservative_soln) const
 
real compute_mixture_gas_constant (const std::array< real, nstate > &conservative_soln) const
 
virtual std::array< real, nspecies > compute_species_specific_heat_ratio (const std::array< real, nstate > &conservative_soln) const
 
virtual real compute_gamma (const std::array< real, nstate > &conservative_soln) const
 Compute gamma from conservative solution.
 
std::array< real, nspecies > compute_species_speed_of_sound (const std::array< real, nstate > &conservative_soln) const
 
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::vector< std::string > post_get_names () const
 For post processing purposes, sets the base names (with no prefix or suffix) of the computed quantities.
 
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 vector.
 
virtual dealii::UpdateFlags post_get_needed_update_flags () const
 For post processing purposes (update comment later)
 

Protected Attributes

std::array< std::array< std::array< double, 3 >, 9 >, nspecies > NASACAPCoeffs
 Variables to store NASA Coefficients.
 
std::array< std::array< double, 4 >, nspecies > NASACAPTemperatureLimits
 
std::array< std::string, nspecies > species_name
 
std::array< double, nspecies > species_weight
 
std::array< double, nspecies > species_enthalpy_offset
 
std::array< real, nspecies > Rs
 
- Protected Attributes inherited from PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >
dealii::ConditionalOStream pcout
 ConditionalOStream. More...
 
dealii::Tensor< 2, dim, double > diffusion_tensor
 Anisotropic diffusion matrix. More...
 

Detailed Description

template<int dim, int nspecies, int nstate, typename real>
class PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >

RealGas equations. Derived from PhysicsBase.

Definition at line 18 of file real_gas.h.

Member Function Documentation

◆ boundary_slip_wall()

template<int dim, int nspecies, int nstate, typename real >
void PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::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
protected

Slip wall boundary conditions (No penetration)

  • Given by Algorithm II of the following paper:
  • * Krivodonova, L., and Berger, M., “High-order accurate implementation of solid wall boundary conditions in curved geometries,” Journal of Computational Physics, vol. 211, 2006, pp. 492–512.

Definition at line 264 of file real_gas.cpp.

◆ compute_species_entropy_cv_integral()

template<int dim, int nspecies, int nstate, typename real >
std::array< real, nspecies > PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::compute_species_entropy_cv_integral ( const real  temperature) const
protected

species loop

Definition at line 629 of file real_gas.cpp.

◆ compute_species_specific_enthalpy()

template<int dim, int nspecies, int nstate, typename real >
std::array< real, nspecies > PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::compute_species_specific_enthalpy ( const real  temperature) const
protected

species loop

Definition at line 552 of file real_gas.cpp.

◆ compute_temperature()

template<int dim, int nspecies, int nstate, typename real >
real PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::compute_temperature ( const std::array< real, nstate > &  conservative_soln) const
inlinevirtual

1) f(T_n)

2) f'(T_n)

3) main part

Definition at line 867 of file real_gas.cpp.

◆ convective_numerical_split_flux_kennedy_gruber()

template<int dim, int nspecies, int nstate, typename real >
std::array< dealii::Tensor< 1, dim, real >, nstate > PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::convective_numerical_split_flux_kennedy_gruber ( const std::array< real, nstate > &  conservative_soln1,
const std::array< real, nstate > &  conservative_soln2 
) const

Entropy conserving split form flux of Kennedy and Gruber. Refer to Gassner's paper (2016) Eq. 3.10

Definition at line 1106 of file real_gas.cpp.

◆ convert_conservative_gradient_to_primitive_gradient()

template<int dim, int nspecies, int nstate, typename real >
std::array< dealii::Tensor< 1, dim, real >, nstate > PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::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
virtual

Obtain gradient of primitive variables from gradient of conservative variables

Implements PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >.

Definition at line 1267 of file real_gas.cpp.

◆ convert_primitive_gradient_to_conservative_gradient()

template<int dim, int nspecies, int nstate, typename real >
std::array< dealii::Tensor< 1, dim, real >, nstate > PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::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
virtual

Obtain gradient of conservative variables from gradient of primitive variables

Implements PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >.

Definition at line 1255 of file real_gas.cpp.

◆ max_convective_normal_eigenvalue()

template<int dim, int nspecies, int nstate, typename real >
real PHiLiP::Physics::RealGas< dim, nspecies, nstate, real >::max_convective_normal_eigenvalue ( const std::array< real, nstate > &  soln,
const dealii::Tensor< 1, dim, real > &  normal 
) const
overridevirtual

Maximum convective normal eigenvalue (used in Lax-Friedrichs)

See the book I do like CFD, equation 3.6.18

Reimplemented from PHiLiP::Physics::PhysicsBase< dim, nspecies, nstate, real >.

Definition at line 195 of file real_gas.cpp.


The documentation for this class was generated from the following files: