[P]arallel [Hi]gh-order [Li]brary for [P]DEs
Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
|
Convection-diffusion with linear advective and diffusive term. Derived from PhysicsBase. More...
#include <convection_diffusion.h>
Public Member Functions | |
ConvectionDiffusion (const Parameters::AllParameters *const parameters_input, const bool convection=true, const bool diffusion=true, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), const dealii::Tensor< 1, 3, double > input_advection_vector=Parameters::ManufacturedSolutionParam::get_default_advection_vector(), const double input_diffusion_coefficient=Parameters::ManufacturedSolutionParam::get_default_diffusion_coefficient(), std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function=nullptr, const Parameters::AllParameters::TestType parameters_test=Parameters::AllParameters::TestType::run_control, const bool has_nonzero_physical_source=false) | |
Constructor. | |
std::array< dealii::Tensor< 1, dim, real >, nstate > | convective_flux (const std::array< real, nstate > &solution) const |
Convective flux: \( \mathbf{F}_{conv} = u \). | |
std::array< dealii::Tensor< 1, dim, real >, nstate > | convective_numerical_split_flux (const std::array< real, nstate > &soln1, const std::array< real, nstate > &soln2) const override |
Convective numerical split flux for split form. | |
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. | |
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_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 > &solution, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const |
Dissipative flux: u. | |
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 |
(function overload) Dissipative flux: u | |
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 is zero or depends on manufactured solution. | |
std::array< real, nstate > | source_term (const dealii::Point< dim, real > &pos, const std::array< real, nstate > &solution, const real current_time) const |
(function overload) Source term is zero or depends on manufactured solution | |
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 |
If diffusion is present, assign Dirichlet boundary condition. More... | |
![]() | |
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, 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, real > > manufactured_solution_function_input=nullptr) | |
Constructor that will call default constructor. | |
virtual | ~PhysicsBase ()=default |
Virtual destructor required for abstract classes. | |
virtual 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) | |
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 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 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... | |
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 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 dealii::UpdateFlags | post_get_needed_update_flags () const |
Returns required update flags of the 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 bool | hasConvection |
Turns ON/OFF convection term. | |
const bool | hasDiffusion |
const Parameters::AllParameters::TestType | test_type |
Allows convection diffusion to distinguish between different unsteady test types. More... | |
![]() | |
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, 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 | |
dealii::Tensor< 1, dim, real > | advection_speed () const |
Linear advection speed: c. | |
real | diffusion_coefficient () const |
Diffusion coefficient. | |
Protected Attributes | |
double | linear_advection_velocity [3] = { 1.1, -atan(1)*4.0 / exp(1), exp(1)/(atan(1)*4.0) } |
Linear advection velocity in x, y, and z directions. | |
double | diffusion_scaling_coeff = 0.1*atan(1)*4.0/exp(1) |
Diffusion scaling coefficient in front of the diffusion tensor. | |
![]() | |
dealii::ConditionalOStream | pcout |
ConditionalOStream. More... | |
dealii::Tensor< 2, dim, double > | diffusion_tensor |
Anisotropic diffusion matrix. More... | |
Additional Inherited Members | |
![]() | |
using | NonPhysicalBehaviorEnum = Parameters::AllParameters::NonPhysicalBehaviorEnum |
Convection-diffusion with linear advective and diffusive term. Derived from PhysicsBase.
State variable: \( u \)
Convective flux \( \mathbf{F}_{conv} = u \)
Dissipative flux \( \mathbf{F}_{diss} = -\boldsymbol\nabla u \)
Source term \( s(\mathbf{x}) \)
Equation:
\[ \boldsymbol{\nabla} \cdot ( \mathbf{F}_{conv}( u ) + \mathbf{F}_{diss}( u, \boldsymbol{\nabla}(u) ) = s(\mathbf{x}) \]
Definition at line 29 of file convection_diffusion.h.
|
virtual |
If diffusion is present, assign Dirichlet boundary condition.
Using Neumann boundary conditions might need to modify the functional in order to obtain the optimal 2p convergence of the functional error
Implements PHiLiP::Physics::PhysicsBase< dim, nstate, real >.
Definition at line 18 of file convection_diffusion.cpp.
const bool PHiLiP::Physics::ConvectionDiffusion< dim, nstate, real >::hasDiffusion |
Turns ON/OFF diffusion term.
Definition at line 49 of file convection_diffusion.h.
const Parameters::AllParameters::TestType PHiLiP::Physics::ConvectionDiffusion< dim, nstate, real >::test_type |
Allows convection diffusion to distinguish between different unsteady test types.
Pointer to all parameters
Definition at line 51 of file convection_diffusion.h.