[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, 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, nstate, real, nstate_baseline_physics >:
Collaboration diagram for PHiLiP::Physics::PhysicsModel< dim, 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, nstate, real > > model_input, std::shared_ptr< ManufacturedSolutionFunction< dim, real > > manufactured_solution_function, const bool has_nonzero_diffusion, const bool has_nonzero_physical_source)
 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 > 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.
 
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, 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, 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 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_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, nstate_baseline_physics, real > > physics_baseline
 Baseline physics object with nstate==nstate_baseline_physics.
 
std::shared_ptr< ModelBase< dim, nstate, real > > model
 Model object.
 
- Public Attributes inherited from PHiLiP::Physics::PhysicsBase< dim, 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, 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, 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, nstate, real >
using NonPhysicalBehaviorEnum = Parameters::AllParameters::NonPhysicalBehaviorEnum
 

Detailed Description

template<int dim, int nstate, typename real, int nstate_baseline_physics>
class PHiLiP::Physics::PhysicsModel< dim, 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 nstate, typename real , int nstate_baseline_physics>
std::array< real, nstate > PHiLiP::Physics::PhysicsModel< dim, 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, nstate, real >.

Definition at line 219 of file physics_model.cpp.

◆ post_compute_derived_quantities_vector()

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

Definition at line 341 of file physics_model.cpp.

◆ post_get_data_component_interpretation()

template<int dim, int nstate, typename real , int nstate_baseline_physics>
std::vector< dealii::DataComponentInterpretation::DataComponentInterpretation > PHiLiP::Physics::PhysicsModel< dim, 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, nstate, real >.

Definition at line 390 of file physics_model.cpp.

◆ post_get_names()

template<int dim, int nstate, typename real , int nstate_baseline_physics>
std::vector< std::string > PHiLiP::Physics::PhysicsModel< dim, 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, nstate, real >.

Definition at line 374 of file physics_model.cpp.

◆ post_get_needed_update_flags()

template<int dim, int nstate, typename real , int nstate_baseline_physics>
dealii::UpdateFlags PHiLiP::Physics::PhysicsModel< dim, 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, nstate, real >.

Definition at line 407 of file physics_model.cpp.

Member Data Documentation

◆ n_mpi

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

Number of MPI processes.

Definition at line 131 of file physics_model.h.

◆ pcout

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

ConditionalOStream.

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

Definition at line 135 of file physics_model.h.


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