[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType > Class Template Reference

Abstract class templated on the number of state variables. More...

#include <dg_base_state.hpp>

Inheritance diagram for PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >:
Collaboration diagram for PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >:

Public Member Functions

 DGBaseState (const Parameters::AllParameters *const parameters_input, const unsigned int degree, const unsigned int max_degree_input, const unsigned int grid_degree_input, const std::shared_ptr< Triangulation > triangulation_input)
 < Input parameters. More...
 
void set_physics (std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real > > pde_physics_double_input, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadType > > pde_physics_fad_input, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadType > > pde_physics_rad_input, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadFadType > > pde_physics_fad_fad_input, std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadFadType > > pde_physics_rad_fad_input)
 
virtual void allocate_model_variables ()
 Allocate the necessary variables declared in src/physics/model.h.
 
virtual void update_model_variables ()
 Update the necessary variables declared in src/physics/model.h.
 
void set_unsteady_model_time_step (const double time_step)
 Set the necessary unsteady variables declared in src/physics/model.h.
 
void set_use_auxiliary_eq ()
 Set use_auxiliary_eq flag.
 
void set_store_vol_flux_nodes ()
 Set store_vol_flux_nodes flag.
 
void set_store_surf_flux_nodes ()
 Set store_surf_flux_nodes flag.
 
- Public Member Functions inherited from PHiLiP::DGBase< dim, nspecies, real, MeshType >
virtual ~DGBase ()=default
 Destructor.
 
 DGBase (const int nstate_input, const Parameters::AllParameters *const parameters_input, const unsigned int degree, const unsigned int max_degree_input, const unsigned int grid_degree_input, const std::shared_ptr< Triangulation > triangulation_input)
 Principal constructor that will call delegated constructor. More...
 
void reinit ()
 Reinitializes the DG object after a change of triangulation. More...
 
 DGBase (const int nstate_input, const Parameters::AllParameters *const parameters_input, const unsigned int degree, const unsigned int max_degree_input, const unsigned int grid_degree_input, const std::shared_ptr< Triangulation > triangulation_input, const MassiveCollectionTuple collection_tuple)
 Delegated constructor that initializes collections. More...
 
void set_high_order_grid (std::shared_ptr< HighOrderGrid< dim, real, MeshType >> new_high_order_grid)
 Sets the associated high order grid with the provided one.
 
void set_all_cells_fe_degree (const unsigned int degree)
 Refers to a collection Mappings, which represents the high-order grid. More...
 
unsigned int get_max_fe_degree ()
 Gets the maximum value of currently active FE degree.
 
unsigned int get_min_fe_degree ()
 Gets the minimum value of currently active FE degree.
 
dealii::Point< dim > coordinates_of_highest_refined_cell (bool check_for_p_refined_cell=false)
 Returns the coordinates of the most refined cell.
 
virtual void allocate_system (const bool compute_dRdW=true, const bool compute_dRdX=true, const bool compute_d2R=true)
 Allocates the system. More...
 
void time_scale_solution_update (dealii::LinearAlgebra::distributed::Vector< double > &solution_update, const real CFL) const
 Scales a solution update with the appropriate maximum time step. More...
 
void time_scaled_mass_matrices (const real scale)
 
void reinit_operators_for_cell_residual_loop (const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis)
 Builds needed operators for cell residual loop.
 
void reinit_operators_for_mass_matrix (const bool Cartesian_element, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, OPERATOR::basis_functions< dim, 2 *dim > &basis, OPERATOR::local_mass< dim, 2 *dim > &reference_mass_matrix, OPERATOR::local_Flux_Reconstruction_operator< dim, 2 *dim > &reference_FR, OPERATOR::local_Flux_Reconstruction_operator_aux< dim, 2 *dim > &reference_FR_aux, OPERATOR::derivative_p< dim, 2 *dim > &deriv_p)
 Builds needed operators to compute mass matrices/inverses efficiently.
 
void evaluate_mass_matrices (bool do_inverse_mass_matrix=false)
 Allocates and evaluates the mass matrices for the entire grid.
 
void evaluate_local_metric_dependent_mass_matrix_and_set_in_global_mass_matrix (const bool Cartesian_element, const bool do_inverse_mass_matrix, const unsigned int poly_degree, const unsigned int curr_grid_degree, const unsigned int n_quad_pts, const unsigned int n_dofs_cell, const std::vector< dealii::types::global_dof_index > dofs_indices, OPERATOR::metric_operators< real, dim, 2 *dim > &metric_oper, OPERATOR::basis_functions< dim, 2 *dim > &basis, OPERATOR::local_mass< dim, 2 *dim > &reference_mass_matrix, OPERATOR::local_Flux_Reconstruction_operator< dim, 2 *dim > &reference_FR, OPERATOR::local_Flux_Reconstruction_operator_aux< dim, 2 *dim > &reference_FR_aux, OPERATOR::derivative_p< dim, 2 *dim > &deriv_p)
 Evaluates the metric dependent local mass matrices and inverses, then sets them in the global matrices.
 
void apply_inverse_global_mass_matrix (const dealii::LinearAlgebra::distributed::Vector< double > &input_vector, dealii::LinearAlgebra::distributed::Vector< double > &output_vector, const bool use_auxiliary_eq=false)
 Applies the inverse of the local metric dependent mass matrices when the global is not stored. More...
 
void apply_global_mass_matrix (const dealii::LinearAlgebra::distributed::Vector< double > &input_vector, dealii::LinearAlgebra::distributed::Vector< double > &output_vector, const bool use_auxiliary_eq=false, const bool use_unmodified_mass_matrix=false)
 Applies the local metric dependent mass matrices when the global is not stored. More...
 
std::vector< real > evaluate_time_steps (const bool exact_time_stepping)
 Evaluates the maximum stable time step. More...
 
void add_mass_matrices (const real scale)
 Add mass matrices to the system scaled by a factor (likely time-step) More...
 
void add_time_scaled_mass_matrices ()
 Add time scaled mass matrices to the system. More...
 
double get_residual_l2norm () const
 Returns the L2-norm of the right_hand_side vector.
 
double get_residual_linfnorm () const
 Returns the Linf-norm of the right_hand_side vector.
 
unsigned int n_dofs () const
 Number of degrees of freedom.
 
void set_anisotropic_flags ()
 Set anisotropic flags based on jump indicator. More...
 
template<typename real2 >
real2 discontinuity_sensor (const dealii::Quadrature< dim > &volume_quadrature, const std::vector< real2 > &soln_coeff_high, const dealii::FiniteElement< dim, dim > &fe_high, const std::vector< real2 > &jac_det)
 
void set_dual (const dealii::LinearAlgebra::distributed::Vector< real > &dual_input)
 Sets the stored dual variables used to compute the dual dotted with the residual Hessians.
 
dealii::SparsityPattern get_dRdX_sparsity_pattern ()
 Evaluate SparsityPattern of dRdX.
 
dealii::SparsityPattern get_dRdW_sparsity_pattern ()
 Evaluate SparsityPattern of dRdW.
 
dealii::SparsityPattern get_d2RdWdW_sparsity_pattern ()
 Evaluate SparsityPattern of the residual Hessian dual.d2RdWdW.
 
dealii::SparsityPattern get_d2RdXdX_sparsity_pattern ()
 Evaluate SparsityPattern of the residual Hessian dual.d2RdXdX.
 
dealii::SparsityPattern get_d2RdWdX_sparsity_pattern ()
 Evaluate SparsityPattern of the residual Hessian dual.d2RdXdW.
 
dealii::SparsityPattern get_dRdXs_sparsity_pattern ()
 Evaluate SparsityPattern of dRdXs.
 
dealii::SparsityPattern get_d2RdXsdXs_sparsity_pattern ()
 Evaluate SparsityPattern of the residual Hessian dual.d2RdXsdXs.
 
dealii::SparsityPattern get_d2RdWdXs_sparsity_pattern ()
 Evaluate SparsityPattern of the residual Hessian dual.d2RdXsdW.
 
dealii::TrilinosWrappers::SparseMatrix get_dRdX_finite_differences (dealii::SparsityPattern dRdX_sparsity_pattern)
 Evaluate dRdX using finite-differences.
 
void initialize_manufactured_solution ()
 Virtual function defined in DG.
 
void output_results_vtk (const unsigned int cycle, const double current_time=0.0, const bool output_time_averaged_solution=false, const bool output_fluctuating_quantities=false)
 Output solution.
 
void output_face_results_vtk (const unsigned int cycle, const double current_time=0.0, const bool output_time_averaged_solution=false, const bool output_fluctuating_quantities=false)
 Output Euler face solution.
 
void assemble_residual (const bool compute_dRdW=false, const bool compute_dRdX=false, const bool compute_d2R=false, const double CFL_mass=0.0)
 Main loop of the DG class. More...
 
template<typename adtype >
void assemble_cell_residual_and_ad_derivatives (const dealii::TriaActiveIterator< dealii::DoFCellAccessor< dim, dim, false >> &current_cell, const dealii::TriaActiveIterator< dealii::DoFCellAccessor< dim, dim, false >> &current_metric_cell, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, const bool compute_auxiliary_right_hand_side, dealii::LinearAlgebra::distributed::Vector< double > &rhs, std::array< dealii::LinearAlgebra::distributed::Vector< double >, dim > &rhs_aux)
 Used in assemble_residual(). More...
 
template<typename adtype >
std::enable_if<!std::is_same< adtype, double >::value, void >::type assemble_volume_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< adtype, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< adtype >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< real > &local_rhs_cell, dealii::Tensor< 1, dim, std::vector< real >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)
 Computes the volume term of the cell and performs automatic differentiation.
 
void assemble_volume_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< real > &local_rhs_cell, dealii::Tensor< 1, dim, std::vector< real >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)
 Computes the volume term of the cell.
 
template<typename adtype >
std::enable_if<!std::is_same< adtype, double >::value, void >::type assemble_boundary_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const unsigned int iface, const unsigned int boundary_id, const real penalty, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< adtype, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< adtype >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, std::vector< real > &local_rhs_cell, dealii::Tensor< 1, dim, std::vector< real >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)
 Computes boundary term of the cell if the cell has a face at the boundary and performs automatic differentiation. More...
 
void assemble_boundary_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const unsigned int iface, const unsigned int boundary_id, const real penalty, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, std::vector< real > &local_rhs_cell, dealii::Tensor< 1, dim, std::vector< real >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)
 Computes boundary term of the cell if the cell has a face at the boundary.
 
template<typename adtype >
std::enable_if<!std::is_same< adtype, double >::value, void >::type assemble_face_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const real penalty, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices_int, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices_ext, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices_int, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< adtype, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< adtype, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< adtype >, dim > &mapping_support_points, std::vector< real > &local_rhs_int_cell, std::vector< real > &local_rhs_ext_cell, dealii::Tensor< 1, dim, std::vector< real >> &current_cell_rhs_aux, dealii::LinearAlgebra::distributed::Vector< double > &rhs, std::array< dealii::LinearAlgebra::distributed::Vector< double >, dim > &rhs_aux, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface=false, const unsigned int neighbor_i_subface=0)
 Computes face term of the cell and performs automatic differentiation.
 
void assemble_face_codi_taped_derivatives_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const real penalty, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices_int, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices_ext, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices_int, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, std::vector< real > &local_rhs_int_cell, std::vector< real > &local_rhs_ext_cell, dealii::Tensor< 1, dim, std::vector< real >> &current_cell_rhs_aux, dealii::LinearAlgebra::distributed::Vector< double > &rhs, std::array< dealii::LinearAlgebra::distributed::Vector< double >, dim > &rhs_aux, const bool compute_auxiliary_right_hand_side, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface=false, const unsigned int neighbor_i_subface=0)
 Computes face term of the cell.
 
virtual void assemble_volume_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< double > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeffs, const std::vector< double > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< double > &rhs, dealii::Tensor< 1, dim, std::vector< double >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles volume residual. For double type.
 
virtual void assemble_volume_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_JacobianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeffs, const std::vector< codi_JacobianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< codi_JacobianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles volume residual. For codi_JacobianComputationType.
 
virtual void assemble_volume_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_HessianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeffs, const std::vector< codi_HessianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const std::vector< dealii::types::global_dof_index > &soln_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dofs_indices, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume, dealii::hp::FEValues< dim, dim > &fe_values_collection_volume_lagrange, const dealii::FESystem< dim, dim > &fe_soln, std::vector< codi_HessianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles volume residual. For codi_HessianComputationType.
 
virtual void assemble_boundary_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< double > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeffs, const std::vector< double > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< double > &rhs, dealii::Tensor< 1, dim, std::vector< double >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles boundary residual. For double type.
 
virtual void assemble_boundary_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_JacobianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeffs, const std::vector< codi_JacobianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< codi_JacobianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles boundary residual. For codi_JacobianComputationType.
 
virtual void assemble_boundary_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const std::vector< codi_HessianComputationType > &soln_coeffs, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeffs, const std::vector< codi_HessianComputationType > &metric_coeffs, const std::vector< real > &local_dual, const unsigned int face_number, const unsigned int boundary_id, const unsigned int poly_degree, const unsigned int grid_degree, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, const dealii::FESystem< dim, dim > &fe_soln, const real penalty, std::vector< codi_HessianComputationType > &rhs, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &local_auxiliary_RHS, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual)=0
 Builds the necessary operators/fe values and assembles boundary residual. For codi_HessianComputationType.
 
virtual void assemble_face_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< double > &soln_coeff_int, const std::vector< double > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< double >> &aux_soln_coeff_ext, const std::vector< double > &metric_coefF_int, const std::vector< double > &metric_coefF_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< double > &rhs_int, std::vector< double > &rhs_ext, dealii::Tensor< 1, dim, std::vector< double >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< double >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, double &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface)=0
 Builds the necessary operators/fe values and assembles face residual. For double type.
 
virtual void assemble_face_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< codi_JacobianComputationType > &soln_coeff_int, const std::vector< codi_JacobianComputationType > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_soln_coeff_ext, const std::vector< codi_JacobianComputationType > &metric_coefF_int, const std::vector< codi_JacobianComputationType > &metric_coefF_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< codi_JacobianComputationType > &rhs_int, std::vector< codi_JacobianComputationType > &rhs_ext, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< codi_JacobianComputationType >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, codi_JacobianComputationType &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface)=0
 Builds the necessary operators/fe values and assembles face residual. For codi_JacobianComputationType.
 
virtual void assemble_face_term_and_build_operators_ad (typename dealii::DoFHandler< dim >::active_cell_iterator cell, typename dealii::DoFHandler< dim >::active_cell_iterator neighbor_cell, const dealii::types::global_dof_index current_cell_index, const dealii::types::global_dof_index neighbor_cell_index, const unsigned int iface, const unsigned int neighbor_iface, const std::vector< codi_HessianComputationType > &soln_coeff_int, const std::vector< codi_HessianComputationType > &soln_coeff_ext, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeff_int, const dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_soln_coeff_ext, const std::vector< codi_HessianComputationType > &metric_coefF_int, const std::vector< codi_HessianComputationType > &metric_coefF_ext, const std::vector< double > &dual_int, const std::vector< double > &dual_ext, const unsigned int poly_degree_int, const unsigned int poly_degree_ext, const unsigned int grid_degree_int, const unsigned int grid_degree_ext, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &soln_basis_ext, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_int, OPERATOR::basis_functions< dim, 2 *dim > &flux_basis_ext, OPERATOR::local_basis_stiffness< dim, 2 *dim > &flux_basis_stiffness, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_int, OPERATOR::vol_projection_operator< dim, 2 *dim > &soln_basis_projection_oper_ext, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper_int, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper_ext, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_int, dealii::hp::FEFaceValues< dim, dim > &fe_values_collection_face_ext, dealii::hp::FESubfaceValues< dim, dim > &fe_values_collection_subface, const dealii::FESystem< dim, dim > &fe_int, const dealii::FESystem< dim, dim > &fe_ext, const real penalty, std::vector< codi_HessianComputationType > &rhs_int, std::vector< codi_HessianComputationType > &rhs_ext, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_rhs_int, dealii::Tensor< 1, dim, std::vector< codi_HessianComputationType >> &aux_rhs_ext, const bool compute_auxiliary_right_hand_side, codi_HessianComputationType &dual_dot_residual, const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const bool is_a_subface, const unsigned int neighbor_i_subface)=0
 Builds the necessary operators/fe values and assembles face residual. For codi_HessianComputationType.
 
template<typename real2 >
double getValue (const real2 &x)
 Returns the value from a CoDiPack variable. More...
 
void automatic_differentiation_indexing_1 (const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const unsigned int n_soln_dofs, const unsigned int n_metric_dofs, unsigned int &w_start, unsigned int &w_end, unsigned int &x_start, unsigned int &x_end)
 
void automatic_differentiation_indexing_2 (const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R, const unsigned int n_soln_dofs_int, const unsigned int n_soln_dofs_ext, const unsigned int n_metric_dofs, unsigned int &w_int_start, unsigned int &w_int_end, unsigned int &w_ext_start, unsigned int &w_ext_end, unsigned int &x_int_start, unsigned int &x_int_end, unsigned int &x_ext_start, unsigned int &x_ext_end)
 
void set_current_time (const real current_time_input)
 Sets the current time within DG to be used for unsteady source terms.
 
void allocate_auxiliary_equation ()
 Allocates the auxiliary equations' variables and right hand side (primarily for Strong form diffusive)
 
virtual void assemble_auxiliary_residual (const bool compute_dRdW, const bool compute_dRdX, const bool compute_d2R)=0
 Asembles the auxiliary equations' residuals and solves. Note: This function cannot be automatically differentiated.
 
virtual void allocate_dual_vector (const bool compute_d2R)=0
 Allocate the dual vector for optimization.
 
virtual void build_volume_metric_operators (const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< double > &metric_coeffs, OPERATOR::metric_operators< double, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< double >, dim > &mapping_support_points)=0
 Builds volume metric operators (metric cofactor and determinant of metric Jacobian). For double type.
 
virtual void build_volume_metric_operators (const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< codi_JacobianComputationType > &metric_coeffs, OPERATOR::metric_operators< codi_JacobianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_JacobianComputationType >, dim > &mapping_support_points)=0
 Builds volume metric operators (metric cofactor and determinant of metric Jacobian). For codi_JacobianComputationType.
 
virtual void build_volume_metric_operators (const unsigned int poly_degree, const unsigned int grid_degree, const std::vector< codi_HessianComputationType > &metric_coeffs, OPERATOR::metric_operators< codi_HessianComputationType, dim, 2 *dim > &metric_oper, OPERATOR::mapping_shape_functions< dim, 2 *dim > &mapping_basis, std::array< std::vector< codi_HessianComputationType >, dim > &mapping_support_points)=0
 Builds volume metric operators (metric cofactor and determinant of metric Jacobian). For codi_HessianComputationType.
 
void update_artificial_dissipation_discontinuity_sensor ()
 Update discontinuity sensor. More...
 

Public Attributes

std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real > > pde_physics_double
 Contains the physics of the PDE with real type.
 
std::shared_ptr< Physics::ModelBase< dim, nspecies, nstate, real > > pde_model_double
 Contains the model terms of the PDEType == PhysicsModel with real type.
 
std::unique_ptr< NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, real > > conv_num_flux_double
 Convective numerical flux with real type.
 
std::unique_ptr< NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, real > > diss_num_flux_double
 Dissipative numerical flux with real type.
 
std::shared_ptr< ArtificialDissipationBase< dim, nspecies, nstate > > artificial_dissip
 Link to Artificial dissipation class (with three dissipation types, depending on the input).
 
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadType > > pde_physics_fad
 Contains the physics of the PDE with FadType.
 
std::shared_ptr< Physics::ModelBase< dim, nspecies, nstate, FadType > > pde_model_fad
 Contains the model terms of the PDEType == PhysicsModel with FadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, FadType > > conv_num_flux_fad
 Convective numerical flux with FadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, FadType > > diss_num_flux_fad
 Dissipative numerical flux with FadType.
 
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadType > > pde_physics_rad
 Contains the physics of the PDE with RadType.
 
std::shared_ptr< Physics::ModelBase< dim, nspecies, nstate, RadType > > pde_model_rad
 Contains the model terms of the PDEType == PhysicsModel with RadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, RadType > > conv_num_flux_rad
 Convective numerical flux with RadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, RadType > > diss_num_flux_rad
 Dissipative numerical flux with RadType.
 
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadFadType > > pde_physics_fad_fad
 Contains the physics of the PDE with FadFadType.
 
std::shared_ptr< Physics::ModelBase< dim, nspecies, nstate, FadFadType > > pde_model_fad_fad
 Contains the model terms of the PDEType == PhysicsModel with FadFadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, FadFadType > > conv_num_flux_fad_fad
 Convective numerical flux with FadFadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, FadFadType > > diss_num_flux_fad_fad
 Dissipative numerical flux with FadFadType.
 
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadFadType > > pde_physics_rad_fad
 Contains the physics of the PDE with RadFadDtype.
 
std::shared_ptr< Physics::ModelBase< dim, nspecies, nstate, RadFadType > > pde_model_rad_fad
 Contains the model terms of the PDEType == PhysicsModel with RadFadType.
 
std::unique_ptr< NumericalFlux::NumericalFluxConvective< dim, nspecies, nstate, RadFadType > > conv_num_flux_rad_fad
 Convective numerical flux with RadFadDtype.
 
std::unique_ptr< NumericalFlux::NumericalFluxDissipative< dim, nspecies, nstate, RadFadType > > diss_num_flux_rad_fad
 Dissipative numerical flux with RadFadDtype.
 
- Public Attributes inherited from PHiLiP::DGBase< dim, nspecies, real, MeshType >
const Parameters::AllParameters *const all_parameters
 Pointer to all parameters.
 
const int nstate
 Number of state variables. More...
 
const unsigned int initial_degree
 Initial polynomial degree assigned during constructor.
 
const unsigned int max_degree
 Maximum degree used for p-refi1nement. More...
 
const unsigned int max_grid_degree
 Maximum grid degree used for hp-refi1nement. More...
 
std::shared_ptr< Triangulation > triangulation
 Mesh.
 
dealii::SparsityPattern sparsity_pattern
 Sparsity pattern used on the system_matrix. More...
 
dealii::SparsityPattern mass_sparsity_pattern
 Sparsity pattern used on the system_matrix. More...
 
dealii::TrilinosWrappers::SparseMatrix time_scaled_global_mass_matrix
 Global mass matrix divided by the time scales. More...
 
dealii::TrilinosWrappers::SparseMatrix global_mass_matrix
 Global mass matrix. More...
 
dealii::TrilinosWrappers::SparseMatrix global_inverse_mass_matrix
 Global inverser mass matrix. More...
 
dealii::TrilinosWrappers::SparseMatrix global_mass_matrix_auxiliary
 Global auxiliary mass matrix. More...
 
dealii::TrilinosWrappers::SparseMatrix global_inverse_mass_matrix_auxiliary
 Global inverse of the auxiliary mass matrix.
 
dealii::TrilinosWrappers::SparseMatrix system_matrix
 
dealii::TrilinosWrappers::SparseMatrix system_matrix_transpose
 
std::unique_ptr< Epetra_RowMatrixTransposer > epetra_rowmatrixtransposer_dRdW
 Epetra_RowMatrixTransposer used to transpose the system_matrix.
 
dealii::TrilinosWrappers::SparseMatrix dRdXv
 
dealii::TrilinosWrappers::SparseMatrix d2RdWdW
 
dealii::TrilinosWrappers::SparseMatrix d2RdXdX
 
dealii::TrilinosWrappers::SparseMatrix d2RdWdX
 
dealii::LinearAlgebra::distributed::Vector< double > right_hand_side
 Residual of the current solution. More...
 
dealii::IndexSet locally_owned_dofs
 Locally own degrees of freedom.
 
dealii::IndexSet ghost_dofs
 Locally relevant ghost degrees of freedom.
 
dealii::IndexSet locally_relevant_dofs
 Union of locally owned degrees of freedom and relevant ghost degrees of freedom.
 
dealii::IndexSet locally_owned_dofs_grid
 Locally own degrees of freedom for the grid.
 
dealii::IndexSet ghost_dofs_grid
 Locally relevant ghost degrees of freedom for the grid.
 
dealii::IndexSet locally_relevant_dofs_grid
 
dealii::LinearAlgebra::distributed::Vector< double > solution
 Current modal coefficients of the solution. More...
 
dealii::LinearAlgebra::distributed::Vector< double > time_averaged_solution
 
dealii::LinearAlgebra::distributed::Vector< double > fluctuating_quantities
 
std::array< dealii::LinearAlgebra::distributed::Vector< double >, dim > auxiliary_right_hand_side
 The auxiliary equations' right hand sides.
 
std::array< dealii::LinearAlgebra::distributed::Vector< double >, dim > auxiliary_solution
 The auxiliary equations' solution.
 
dealii::Vector< double > cell_volume
 Time it takes for the maximum wavespeed to cross the cell domain. More...
 
dealii::Vector< double > max_dt_cell
 Time it takes for the maximum wavespeed to cross the cell domain. More...
 
dealii::Vector< double > reduced_mesh_weights
 
dealii::Vector< double > artificial_dissipation_coeffs
 Artificial dissipation in each cell.
 
dealii::Vector< double > artificial_dissipation_se
 Artificial dissipation error ratio sensor in each cell.
 
dealii::LinearAlgebra::distributed::Vector< real > dual
 Current optimization dual variables corresponding to the residual constraints also known as the adjoint. More...
 
bool update_artificial_diss
 
const dealii::hp::FECollection< dim > fe_collection
 Finite Element Collection for p-finite-element to represent the solution. More...
 
dealii::hp::QCollection< dim > volume_quadrature_collection
 Finite Element Collection to represent the high-order grid. More...
 
dealii::hp::QCollection< dim-1 > face_quadrature_collection
 Quadrature used to evaluate face integrals.
 
const dealii::hp::FECollection< dim > fe_collection_lagrange
 Lagrange basis used in strong form. More...
 
const dealii::hp::FECollection< 1 > oneD_fe_collection
 1D Finite Element Collection for p-finite-element to represent the solution More...
 
const dealii::hp::FECollection< 1 > oneD_fe_collection_1state
 1D Finite Element Collection for p-finite-element to represent the solution for a single state. More...
 
const dealii::hp::FECollection< 1 > oneD_fe_collection_flux
 1D collocated flux basis used in strong form More...
 
dealii::hp::QCollection< 1 > oneD_quadrature_collection
 1D quadrature to generate Lagrange polynomials for the sake of flux interpolation.
 
dealii::QGauss< 0 > oneD_face_quadrature
 1D surface quadrature is always one single point for all poly degrees.
 
dealii::DoFHandler< dim > dof_handler
 Finite Element Collection to represent the high-order grid. More...
 
std::shared_ptr< HighOrderGrid< dim, real, MeshType > > high_order_grid
 High order grid that will provide the MappingFEField.
 
double assemble_residual_time
 Computational time for assembling residual.
 
bool freeze_artificial_dissipation
 Flag to freeze artificial dissipation.
 
double max_artificial_dissipation_coeff
 Stores maximum artificial dissipation while assembling the residual.
 
bool use_auxiliary_eq
 Flag for using the auxiliary equation.
 
bool store_vol_flux_nodes
 Flag for storing volume flux nodes.
 
bool store_surf_flux_nodes
 Flag for storing surface flux nodes.
 

Protected Types

using Triangulation = typename DGBase< dim, nspecies, real, MeshType >::Triangulation
 Alias to base class Triangulation.
 

Protected Member Functions

real evaluate_CFL (std::vector< std::array< real, nstate > > soln_at_q, const real artificial_dissipation, const real cell_diameter, const unsigned int cell_degree)
 Evaluate the time it takes for the maximum wavespeed to cross the cell domain. More...
 
void reset_numerical_fluxes ()
 Reinitializes the numerical fluxes based on the current physics. More...
 
- Protected Member Functions inherited from PHiLiP::DGBase< dim, nspecies, real, MeshType >
virtual void assemble_volume_term_explicit (typename dealii::DoFHandler< dim >::active_cell_iterator cell, const dealii::types::global_dof_index current_cell_index, const dealii::FEValues< dim, dim > &fe_values_volume, const std::vector< dealii::types::global_dof_index > &current_dofs_indices, const std::vector< dealii::types::global_dof_index > &metric_dof_indices, const unsigned int poly_degree, const unsigned int grid_degree, dealii::Vector< real > &current_cell_rhs, const dealii::FEValues< dim, dim > &fe_values_lagrange)=0
 Evaluate the integral over the cell volume.
 

Additional Inherited Members

- Public Types inherited from PHiLiP::DGBase< dim, nspecies, real, MeshType >
using Triangulation = MeshType
 
using MassiveCollectionTuple = std::tuple< dealii::hp::FECollection< dim >, dealii::hp::QCollection< dim >, dealii::hp::QCollection< dim-1 >, dealii::hp::FECollection< dim >, dealii::hp::FECollection< 1 >, dealii::hp::FECollection< 1 >, dealii::hp::FECollection< 1 >, dealii::hp::QCollection< 1 > >
 Makes for cleaner doxygen documentation.
 
- Protected Attributes inherited from PHiLiP::DGBase< dim, nspecies, real, MeshType >
real current_time
 The current time set in set_current_time()
 
const dealii::FE_Q< dim > fe_q_artificial_dissipation
 Continuous distribution of artificial dissipation.
 
dealii::DoFHandler< dim > dof_handler_artificial_dissipation
 Degrees of freedom handler for C0 artificial dissipation.
 
dealii::LinearAlgebra::distributed::Vector< double > artificial_dissipation_c0
 Artificial dissipation coefficients.
 
const dealii::UpdateFlags volume_update_flags
 Update flags needed at volume points. More...
 
const dealii::UpdateFlags face_update_flags
 Update flags needed at face points. More...
 
const dealii::UpdateFlags neighbor_face_update_flags = dealii::update_values | dealii::update_gradients | dealii::update_quadrature_points | dealii::update_JxW_values
 Update flags needed at neighbor' face points. More...
 
MPI_Comm mpi_communicator
 MPI communicator.
 
dealii::ConditionalOStream pcout
 Parallel std::cout that only outputs on mpi_rank==0.
 

Detailed Description

template<int dim, int nspecies, int nstate, typename real, typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
class PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >

Abstract class templated on the number of state variables.

Definition at line 18 of file dg_base_state.hpp.

Constructor & Destructor Documentation

◆ DGBaseState()

template<int dim, int nspecies, int nstate, typename real , typename MeshType >
PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >::DGBaseState ( const Parameters::AllParameters *const  parameters_input,
const unsigned int  degree,
const unsigned int  max_degree_input,
const unsigned int  grid_degree_input,
const std::shared_ptr< Triangulation >  triangulation_input 
)

< Input parameters.

Constructor.

Definition at line 11 of file dg_base_state.cpp.

Member Function Documentation

◆ evaluate_CFL()

template<int dim, int nspecies, int nstate, typename real , typename MeshType >
real PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >::evaluate_CFL ( std::vector< std::array< real, nstate > >  soln_at_q,
const real  artificial_dissipation,
const real  cell_diameter,
const unsigned int  cell_degree 
)
protected

Evaluate the time it takes for the maximum wavespeed to cross the cell domain.

Currently only uses the convective eigenvalues. Future changes would take in account the maximum diffusivity and take the minimum time between dx/conv_eig and dx*dx/max_visc to determine the minimum travel time of information.

Furthermore, a more robust implementation would convert the values to a Bezier basis where the maximum and minimum values would be bounded by the Bernstein modal coefficients.

Definition at line 217 of file dg_base_state.cpp.

◆ reset_numerical_fluxes()

template<int dim, int nspecies, int nstate, typename real , typename MeshType >
void PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >::reset_numerical_fluxes ( )
protected

Reinitializes the numerical fluxes based on the current physics.

Usually called after setting physics.

Definition at line 41 of file dg_base_state.cpp.

◆ set_physics()

template<int dim, int nspecies, int nstate, typename real , typename MeshType >
void PHiLiP::DGBaseState< dim, nspecies, nstate, real, MeshType >::set_physics ( std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, real > >  pde_physics_double_input,
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadType > >  pde_physics_fad_input,
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadType > >  pde_physics_rad_input,
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, FadFadType > >  pde_physics_fad_fad_input,
std::shared_ptr< Physics::PhysicsBase< dim, nspecies, nstate, RadFadType > >  pde_physics_rad_fad_input 
)

Change the physics object. Must provide all the AD types to ensure that the derivatives are consistent.

Definition at line 75 of file dg_base_state.cpp.


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