[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::NavierStokesWithModelSourceTerms< dim, nspecies, nstate, real > Class Template Reference

Navier Stokes equations with model source term. More...

#include <navier_stokes_model.h>

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

Public Types

using thermal_boundary_condition_enum = Parameters::NavierStokesParam::ThermalBoundaryCondition
 
using two_point_num_flux_enum = Parameters::AllParameters::TwoPointNumericalFlux
 

Public Member Functions

 NavierStokesWithModelSourceTerms (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, const double prandtl_number, const double reynolds_number_inf, const bool use_constant_viscosity, const double constant_viscosity, const double temperature_inf, const double relaxation_coefficient, const double isothermal_wall_temperature=1.0, const thermal_boundary_condition_enum thermal_boundary_condition_type=thermal_boundary_condition_enum::adiabatic, 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)
 Constructor.
 
 ~NavierStokesWithModelSourceTerms ()
 Destructor.
 
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux (const std::array< real, nstate > &conservative_soln) const
 Convective flux: \( \mathbf{F}_{conv} \).
 
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 (i.e. viscous) flux: \( \mathbf{F}_{diss} \).
 
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) const
 Dissipative (i.e. viscous) flux: \( \mathbf{F}_{diss} \) dot normal vector.
 
std::array< real, nstate > convective_eigenvalues (const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const override
 Convective eigenvalues of the additional models' PDEs. More...
 
real max_convective_eigenvalue (const std::array< real, nstate > &soln) const
 Maximum convective eigenvalue of the additional models' PDEs. More...
 
real max_convective_normal_eigenvalue (const std::array< real, nstate > &soln, const dealii::Tensor< 1, dim, real > &normal) const
 Maximum convective normal eigenvalue (used in Lax-Friedrichs) of the additional models' PDEs. More...
 
std::array< real, nstate > source_term (const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const real current_time, const dealii::types::global_dof_index cell_index) const
 Source term for manufactured solution functions.
 
std::array< real, nstate > physical_source_term (const dealii::Point< dim, real > &pos, const std::array< real, nstate > &conservative_solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const override
 Physical source term.
 
- Public Member Functions inherited from PHiLiP::Physics::ModelBase< dim, nspecies, nstate, real >
 ModelBase (std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function_input=nullptr)
 Constructor.
 
virtual ~ModelBase ()=default
 Virtual destructor required for abstract classes.
 
void boundary_face_values (const int boundary_type, const dealii::Point< dim, real > &pos, const dealii::Tensor< 1, dim, real > &normal, 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
 Boundary condition handler.
 
virtual dealii::Vector< double > post_compute_derived_quantities_vector (const dealii::Vector< double > &uh, const std::vector< dealii::Tensor< 1, dim > > &, const std::vector< dealii::Tensor< 2, dim > > &, const dealii::Tensor< 1, dim > &, const dealii::Point< dim > &) const
 Returns current vector solution to be used by PhysicsPostprocessor to output current solution. More...
 
virtual std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > post_get_data_component_interpretation () const
 Returns DataComponentInterpretation of the solution to be used by PhysicsPostprocessor to output current solution. More...
 
virtual std::vector< std::string > post_get_names () const
 Returns names of the solution to be used by PhysicsPostprocessor to output current solution. More...
 
virtual void set_unfiltered_conservative_solution (const std::array< real, nstate > &unfiltered_conservative_solution_)
 Setter for the unfiltered conservative solution.
 

Public Attributes

const double relaxation_coefficient
 Relaxation coefficient for the channel flow source term.
 
std::unique_ptr< NavierStokes< dim, nspecies, nstate, real > > navier_stokes_physics
 Pointer to Navier-Stokes physics object.
 
- Public Attributes inherited from PHiLiP::Physics::ModelBase< dim, nspecies, nstate, real >
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
 Manufactured solution function.
 
dealii::LinearAlgebra::distributed::Vector< int > cellwise_poly_degree
 Cellwise polynomial degree.
 
dealii::LinearAlgebra::distributed::Vector< double > cellwise_volume
 
double bulk_density
 Bulk density, needed for channel flow case.
 
double bulk_mass_flow_rate
 Bulk mass flow rate, needed for channel flow case.
 
double bulk_velocity
 Bulk velocity, needed for channel flow case.
 
double domain_volume
 Domain volume, needed for channel flow case.
 
double half_channel_height
 Half channel height, needed for channel flow case.
 
double resultant_wall_shear_force
 Resultant wall shear force, needed for channel flow case.
 
double time_step
 Current time step.
 
dealii::LinearAlgebra::distributed::Vector< double > cellwise_mean_strain_rate_tensor_magnitude
 
dealii::LinearAlgebra::distributed::Vector< double > dynamic_smagorinsky_model_constant_times_filter_width_sqr
 

Protected Member Functions

std::array< real, nstate > channel_flow_source_term (const std::array< real, nstate > &conservative_soln) const
 Channel flow source term. More...
 
- Protected Member Functions inherited from PHiLiP::Physics::ModelBase< dim, nspecies, nstate, real >
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.
 
virtual void boundary_wall (std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const
 Wall boundary condition.
 
virtual void boundary_outflow (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
 Outflow Boundary Condition.
 
virtual void boundary_inflow (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
 Inflow boundary conditions.
 
virtual void boundary_farfield (std::array< real, nstate > &soln_bc) const
 Farfield boundary conditions based on freestream values.
 
virtual 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
 Riemann-based farfield boundary conditions based on freestream values.
 
virtual 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
 Slip wall boundary condition.
 

Protected Attributes

std::array< real, nstate > zero_array
 Array of zeros.
 
std::array< dealii::Tensor< 1, dim, real >, nstate > zero_tensor_array
 Tensor array of zeros.
 
- Protected Attributes inherited from PHiLiP::Physics::ModelBase< dim, nspecies, nstate, real >
const MPI_Comm mpi_communicator
 MPI communicator.
 
dealii::ConditionalOStream pcout
 Parallel std::cout that only outputs on mpi_rank==0.
 
std::array< real, nstate > unfiltered_conservative_solution
 The unfiltered conservative solution.
 

Detailed Description

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

Navier Stokes equations with model source term.

Definition at line 13 of file navier_stokes_model.h.

Member Function Documentation

◆ channel_flow_source_term()

template<int dim, int nspecies, int nstate, typename real >
std::array< real, nstate > PHiLiP::Physics::NavierStokesWithModelSourceTerms< dim, nspecies, nstate, real >::channel_flow_source_term ( const std::array< real, nstate > &  conservative_soln) const
protected

Channel flow source term.

Forcing function to maintain the expected bulk Reynolds number throughout the solution Reference: Equation 34 of Lodato G, Castonguay P, Jameson A. Discrete filter operators for large-eddy simulation using high-order spectral difference methods. International Journal for Numerical Methods in Fluids2013;72(2):231–258.

Source term for driving the flow Reference: Lodato G, Castonguay P, Jameson A. Discrete filter operators for large-eddy simulation using high-order spectral difference methods. International Journal for Numerical Methods in Fluids2013;72(2):231–258.

Definition at line 152 of file navier_stokes_model.cpp.

◆ convective_eigenvalues()

template<int dim, int nspecies, int nstate, typename real >
std::array< real, nstate > PHiLiP::Physics::NavierStokesWithModelSourceTerms< dim, nspecies, nstate, real >::convective_eigenvalues ( const std::array< real, nstate > &  ,
const dealii::Tensor< 1, dim, real > &   
) const
overridevirtual

Convective eigenvalues of the additional models' PDEs.

For NS model, all entries are assigned to be zero

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

Definition at line 100 of file navier_stokes_model.cpp.

◆ max_convective_eigenvalue()

template<int dim, int nspecies, int nstate, typename real >
real PHiLiP::Physics::NavierStokesWithModelSourceTerms< dim, nspecies, nstate, real >::max_convective_eigenvalue ( const std::array< real, nstate > &  soln) const
virtual

Maximum convective eigenvalue of the additional models' PDEs.

For NS model, this value is assigned to be zero

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

Definition at line 109 of file navier_stokes_model.cpp.

◆ max_convective_normal_eigenvalue()

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

Maximum convective normal eigenvalue (used in Lax-Friedrichs) of the additional models' PDEs.

For NS model, this value is assigned to be zero

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

Definition at line 117 of file navier_stokes_model.cpp.


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