[P]arallel [Hi]gh-order [Li]brary for [P]DEs
Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
|
Large Eddy Simulation equations. Derived from Navier-Stokes for modifying the stress tensor and heat flux, which is derived from PhysicsBase. More...
#include <large_eddy_simulation.h>
Public Types | |
using | thermal_boundary_condition_enum = Parameters::NavierStokesParam::ThermalBoundaryCondition |
using | two_point_num_flux_enum = Parameters::AllParameters::TwoPointNumericalFlux |
Public Member Functions | |
LargeEddySimulationBase (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 turbulent_prandtl_number, const double ratio_of_filter_width_to_cell_size, 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, real > > manufactured_solution_function=nullptr, const two_point_num_flux_enum two_point_num_flux_type=two_point_num_flux_enum::KG) | |
Constructor. | |
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 > | 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. | |
double | get_filter_width (const dealii::types::global_dof_index cell_index) const |
Compute the nondimensionalized filter width used by the SGS model given a cell index. More... | |
virtual dealii::Tensor< 2, dim, real > | compute_SGS_stress_tensor (const std::array< real, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &primitive_soln_gradient, const dealii::types::global_dof_index cell_index) const =0 |
Nondimensionalized sub-grid scale (SGS) stress tensor, (tau^sgs)*. | |
virtual dealii::Tensor< 1, dim, real > | compute_SGS_heat_flux (const std::array< real, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &primitive_soln_gradient, const dealii::types::global_dof_index cell_index) const =0 |
Nondimensionalized sub-grid scale (SGS) heat flux, (q^sgs)*. | |
virtual dealii::Tensor< 2, dim, FadType > | compute_SGS_stress_tensor_fad (const std::array< FadType, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, FadType >, nstate > &primitive_soln_gradient, const dealii::types::global_dof_index cell_index) const =0 |
Nondimensionalized sub-grid scale (SGS) stress tensor, (tau^sgs)* (Automatic Differentiation Type: FadType) | |
virtual dealii::Tensor< 1, dim, FadType > | compute_SGS_heat_flux_fad (const std::array< FadType, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, FadType >, nstate > &primitive_soln_gradient, const dealii::types::global_dof_index cell_index) const =0 |
Nondimensionalized sub-grid scale (SGS) heat flux, (q^sgs)* (Automatic Differentiation Type: FadType) | |
![]() | |
ModelBase (std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function_input=nullptr) | |
Constructor. | |
virtual | ~ModelBase ()=default |
Virtual destructor required for abstract classes. | |
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 terms additional to the baseline physics (including physical source terms in additional PDEs of model) | |
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... | |
Public Attributes | |
const double | turbulent_prandtl_number |
Turbulent Prandtl number. | |
const double | ratio_of_filter_width_to_cell_size |
Ratio of filter width to cell size. | |
std::unique_ptr< NavierStokes< dim, nstate, real > > | navier_stokes_physics |
Pointer to Navier-Stokes physics object. | |
![]() | |
std::shared_ptr< ManufacturedSolutionFunction< dim, 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 |
Protected Member Functions | |
template<typename real2 > | |
real2 | get_tensor_magnitude_sqr (const dealii::Tensor< 2, dim, real2 > &tensor) const |
Returns the square of the magnitude of the tensor (i.e. the double dot product of a tensor with itself) | |
template<typename real2 > | |
std::array< dealii::Tensor< 1, dim, real2 >, nstate > | dissipative_flux_templated (const std::array< real2, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real2 >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const |
Templated dissipative (i.e. viscous) flux: \( \mathbf{F}_{diss} \). | |
dealii::Tensor< 2, nstate, real > | dissipative_flux_directional_jacobian (const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::Tensor< 1, dim, real > &normal, const dealii::types::global_dof_index cell_index) const |
dealii::Tensor< 2, nstate, real > | dissipative_flux_directional_jacobian_wrt_gradient_component (const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::Tensor< 1, dim, real > &normal, const int d_gradient, const dealii::types::global_dof_index cell_index) const |
std::array< real, nstate > | get_manufactured_solution_value (const dealii::Point< dim, real > &pos) const |
Get manufactured solution value (repeated from Euler) | |
std::array< dealii::Tensor< 1, dim, real >, nstate > | get_manufactured_solution_gradient (const dealii::Point< dim, real > &pos) const |
Get manufactured solution value (repeated from Euler) | |
std::array< real, nstate > | dissipative_source_term (const dealii::Point< dim, real > &pos, const dealii::types::global_dof_index cell_index) const |
Dissipative flux contribution to the source term (repeated from NavierStokes) More... | |
![]() | |
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 |
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 |
Additional Inherited Members | |
![]() | |
const MPI_Comm | mpi_communicator |
MPI communicator. | |
dealii::ConditionalOStream | pcout |
Parallel std::cout that only outputs on mpi_rank==0. | |
Large Eddy Simulation equations. Derived from Navier-Stokes for modifying the stress tensor and heat flux, which is derived from PhysicsBase.
Definition at line 13 of file large_eddy_simulation.h.
|
overridevirtual |
Convective eigenvalues of the additional models' PDEs.
For LES model, all entries are assigned to be zero
Implements PHiLiP::Physics::ModelBase< dim, nstate, real >.
Definition at line 137 of file large_eddy_simulation.cpp.
|
protected |
Dissipative flux Jacobian (repeated from NavierStokes) Note: Only used for computing the manufactured solution source term; computed using automatic differentiation
Definition at line 221 of file large_eddy_simulation.cpp.
|
protected |
Dissipative flux Jacobian wrt gradient component (repeated from NavierStokes) Note: Only used for computing the manufactured solution source term; computed using automatic differentiation
Definition at line 260 of file large_eddy_simulation.cpp.
|
protected |
Dissipative flux contribution to the source term (repeated from NavierStokes)
This function is same as the one in NavierStokes; TO DO: Reduce this code repetition in the future by moving it elsewhere
Definition at line 336 of file large_eddy_simulation.cpp.
double PHiLiP::Physics::LargeEddySimulationBase< dim, nstate, real >::get_filter_width | ( | const dealii::types::global_dof_index | cell_index | ) | const |
Compute the nondimensionalized filter width used by the SGS model given a cell index.
Reference: Marta de la Llave Plata, et al. "On the performance of a high-order multiscale DG approach to LES at increasing Reynolds number." Computers and Fluids 194 (2019), Page 4, Eq.(14).
Definition at line 183 of file large_eddy_simulation.cpp.
|
virtual |
Maximum convective eigenvalue of the additional models' PDEs.
For LES model, this value is assigned to be zero
Implements PHiLiP::Physics::ModelBase< dim, nstate, real >.
Definition at line 148 of file large_eddy_simulation.cpp.
|
virtual |
Maximum convective normal eigenvalue (used in Lax-Friedrichs) of the additional models' PDEs.
For LES model, this value is assigned to be zero
Implements PHiLiP::Physics::ModelBase< dim, nstate, real >.
Definition at line 156 of file large_eddy_simulation.cpp.