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

Physics Model equations. Derived from PhysicsBase, holds a baseline physics and model terms and equations. More...

#include <physics_model.h>

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

Public Member Functions

 PhysicsModel (const Parameters::AllParameters *const parameters_input, Parameters::AllParameters::PartialDifferentialEquation baseline_physics_type, std::shared_ptr< ModelBase< dim, nspecies, nstate, real > > model_input, std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function, const bool has_nonzero_diffusion, const bool has_nonzero_physical_source)
 Constructor.
 
std::array< real, nstate > convert_conservative_to_primitive (const std::array< real, nstate > &conservative_soln) const
 Convert conservative variables to primitive variables.
 
std::array< real, nstate > convert_primitive_to_conservative (const std::array< real, nstate > &primitive_soln) const
 Convert primitive solution to conservative solution.
 
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< dealii::Tensor< 1, dim, real >, nstate > convective_flux (const std::array< real, nstate > &conservative_soln) const
 Convective flux: \( \mathbf{F}_{conv} \).
 
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) override
 Dissipative (i.e. viscous) flux: \( \mathbf{F}_{diss} \).
 
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} \).
 
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) override
 Dissipative (i.e. viscous) flux: \( \mathbf{F}_{diss} \) dot normal vector.
 
std::array< real, nstate > physical_source_term (const dealii::Point< dim, real > &pos, 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
 Physical source term.
 
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 that does not require differentiation.
 
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
 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
 
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)
 
real max_viscous_eigenvalue (const std::array< real, nstate > &soln) const
 Maximum viscous 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
 Evaluates boundary values and gradients on the other side of the face.
 
void boundary_face_values_viscous_flux (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, const std::array< real, nstate > &, const std::array< dealii::Tensor< 1, dim, real >, nstate > &, std::array< real, nstate > &soln_bc, std::array< dealii::Tensor< 1, dim, real >, nstate > &soln_grad_bc) const override
 Boundary face values for viscous fluxes.
 
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
 Returns current vector solution to be used by PhysicsPostprocessor to output current solution. More...
 
std::vector< std::string > post_get_names () const
 Returns names of the solution to be used by PhysicsPostprocessor to output current solution. More...
 
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...
 
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...
 
- 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 real compute_pressure (const std::array< real, nstate > &conservative_soln) const
 Compute pressure from conservative solution.
 
virtual real compute_entropy (const std::array< real, nstate > &conservative_soln) const
 Compute entropy from conservative solution.
 
virtual real compute_gamma (const std::array< real, nstate > &conservative_soln) const
 Compute gamma from conservative solution.
 
virtual std::array< real, nstate > compute_kinetic_energy_variables (const std::array< real, nstate > &conservative_soln) const
 Compute kinetic energy variables from conservative solution.
 
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 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 int n_model_equations
 Number of model equations (i.e. those additional to the baseline physics)
 
std::shared_ptr< PhysicsBase< dim, nspecies, nstate_baseline_physics, real > > physics_baseline
 Baseline physics object with nstate==nstate_baseline_physics.
 
std::shared_ptr< ModelBase< dim, nspecies, nstate, real > > model
 Model object.
 
- 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 Attributes

const MPI_Comm mpi_communicator
 MPI communicator.
 
const int mpi_rank
 MPI rank.
 
const int n_mpi
 
dealii::ConditionalOStream pcout
 ConditionalOStream. More...
 
- 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...
 

Additional Inherited Members

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

Detailed Description

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

Physics Model equations. Derived from PhysicsBase, holds a baseline physics and model terms and equations.

Definition at line 14 of file physics_model.h.

Member Function Documentation

◆ convective_eigenvalues()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
std::array< real, nstate > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::convective_eigenvalues ( const std::array< real, nstate > &  conservative_soln,
const dealii::Tensor< 1, dim, real > &  normal 
) const
virtual

Spectral radius of convective term Jacobian. Used for scalar dissipation

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

Definition at line 345 of file physics_model.cpp.

◆ convert_conservative_gradient_to_primitive_gradient()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
std::array< dealii::Tensor< 1, dim, real >, nstate > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::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 86 of file physics_model.cpp.

◆ convert_primitive_gradient_to_conservative_gradient()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
std::array< dealii::Tensor< 1, dim, real >, nstate > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::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 69 of file physics_model.cpp.

◆ post_compute_derived_quantities_vector()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
dealii::Vector< double > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::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
virtual

Returns current vector solution to be used by PhysicsPostprocessor to output current solution.

The implementation in this Physics base class simply returns the stored solution.

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

Definition at line 521 of file physics_model.cpp.

◆ post_get_data_component_interpretation()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::post_get_data_component_interpretation ( ) const
virtual

Returns DataComponentInterpretation of the solution to be used by PhysicsPostprocessor to output current solution.

Treats every solution state as an independent scalar.

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

Definition at line 570 of file physics_model.cpp.

◆ post_get_names()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
std::vector< std::string > PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::post_get_names ( ) const
virtual

Returns names of the solution to be used by PhysicsPostprocessor to output current solution.

The implementation in this Physics base class simply returns "state0, state1, etc.".

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

Definition at line 554 of file physics_model.cpp.

◆ post_get_needed_update_flags()

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
dealii::UpdateFlags PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::post_get_needed_update_flags ( ) const
virtual

Returns required update flags of the solution to be used by PhysicsPostprocessor to output current solution.

Only update the solution at the output points.

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

Definition at line 587 of file physics_model.cpp.

Member Data Documentation

◆ n_mpi

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
const int PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::n_mpi
protected

Number of MPI processes.

Definition at line 190 of file physics_model.h.

◆ pcout

template<int dim, int nspecies, int nstate, typename real , int nstate_baseline_physics>
dealii::ConditionalOStream PHiLiP::Physics::PhysicsModel< dim, nspecies, nstate, real, nstate_baseline_physics >::pcout
protected

ConditionalOStream.

Used as std::cout, but only prints if mpi_rank == 0

Definition at line 194 of file physics_model.h.


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