internal Namespace Reference#

DiFfRG: DiFfRG::FV::KurganovTadmor::internal Namespace Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::FV::KurganovTadmor::internal Namespace Reference

Classes

struct  BoundaryReconstructionStencilData
 
struct  BoundaryReconstructionStencilTopologyData
 
struct  BoundaryStencilData
 
struct  BoundaryStencilIndex
 
struct  BoundaryStencilIndex< 1 >
 
struct  BoundaryStencilTopologyData
 
struct  CellData
 
struct  CellGeometryDofs
 
struct  CellStencilData
 
struct  CellStencilTopologyData
 
struct  CopyData_I
 
struct  CopyData_J
 
struct  CopyData_R
 
struct  DiffusionFluxJacobianData
 
struct  FaceReconstructionState
 
struct  FluxDerivativeData
 
struct  FourPointStencil
 
struct  KTFluxData
 Result struct for compute_kt_flux_and_speeds. More...
 
struct  KTNumFluxJacobianData
 
struct  NeighborData
 
struct  NeighborTopologyData
 
struct  ScratchData
 Class to hold data for each assembly thread, i.e. FEValues for cells, interfaces, as well as pre-allocated data structures for the solutions. More...
 
struct  SolutionReconstructionCache
 

Typedefs

template<typename NumberType , size_t n_components>
using JacobianMatrix = std::array<std::array<NumberType, n_components>, n_components>
 
template<typename NumberType , int dim, size_t n_components>
using HessianTensor
 
template<typename NumberType , int dim, size_t n_components>
using FluxGradientJacobian
 Derivative of every flux component/direction with respect to every component/direction of grad(u).
 
template<typename NumberType , int dim, size_t n_components>
using MixedHessianTensor = std::array<HessianTensor<NumberType, dim, n_components>, dim>
 
template<int dim, typename NumberType , size_t n_components>
using GradientType = def::GradientType<dim, NumberType, n_components>
 
template<int dim, typename NumberType , size_t n_components>
using ThirdDerivativeType = def::ThirdDerivativeType<dim, NumberType, n_components>
 
template<int dim, typename NumberType , size_t n_components>
using DiffusionFaceState = def::DiffusionFaceState<dim, NumberType, n_components>
 

Functions

template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
FluxDerivativeData< NumberType, dim, n_components > compute_flux_derivatives_ad (const std::array< NumberType, n_components > &u, const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > &grad_u, const dealii::Point< dim > &x_q, const double cell_width, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 Compute F, dF/du, d2F/du2, dF/dgrad(u), and d2F/(du dgrad(u)) with second-order forward AD.
 
template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
auto compute_flux_jacobian_and_hessian (const std::array< NumberType, n_components > &u, const dealii::Point< dim > &x_q, const double cell_width, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 Backward-compatible state-only view of the full AD derivative extraction.
 
template<typename... T>
auto flux_tie (T &&...t)
 The named tuple handed to model.flux().
 
template<typename... T>
auto diffusion_flux_tie (T &&...t)
 The named tuple handed to model.diffusion_flux().
 
template<typename T >
int sgn (T val)
 
template<typename NumberType , int dim, size_t n_components>
std::array< JacobianMatrix< NumberType, n_components >, dim > restrict_jacobian_to_block (const std::array< JacobianMatrix< NumberType, n_components >, dim > &J, const std::array< int, n_components > &blocks, const int block)
 Copy of J with every row and column outside block zeroed.
 
template<typename NumberType , int dim, size_t n_components>
HessianTensor< NumberType, dim, n_components > restrict_hessian_to_block (const HessianTensor< NumberType, dim, n_components > &H, const std::array< int, n_components > &blocks, const int block)
 Copy of H with the two jacobian indices restricted to block.
 
template<size_t n_components, typename Result , typename ComputeFUN >
std::array< Result, n_components > per_block (const std::array< int, n_components > &blocks, const ComputeFUN &compute)
 Run compute once per distinct block and hand each component its block's result.
 
template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTFluxData< dim, NumberType, n_components > compute_kt_flux_and_speeds (const std::array< NumberType, n_components > &u_plus, const std::array< NumberType, n_components > &u_minus, const GradientType< dim, NumberType, n_components > &grad_u_plus, const GradientType< dim, NumberType, n_components > &grad_u_minus, const dealii::Point< dim > &x_q, const double cell_width_plus, const double cell_width_minus, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 
template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTFluxData< dim, NumberType, n_components > compute_kt_flux_and_speeds (const std::array< NumberType, n_components > &u_plus, const std::array< NumberType, n_components > &u_minus, const dealii::Point< dim > &x_q, const double cell_width_plus, const double cell_width_minus, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 
template<int dim, typename NumberType , size_t n_components>
std::array< dealii::Tensor< 1, dim, NumberType >, n_components > compute_numerical_flux (const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > &F_plus, const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > &F_minus, const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > &a_half, const std::array< NumberType, n_components > &u_plus, const std::array< NumberType, n_components > &u_minus)
 
template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTNumFluxJacobianData< dim, NumberType, n_components > compute_kt_numflux_jacobian (const std::array< NumberType, n_components > &u_plus, const std::array< NumberType, n_components > &u_minus, const GradientType< dim, NumberType, n_components > &grad_u_plus, const GradientType< dim, NumberType, n_components > &grad_u_minus, const dealii::Point< dim > &x_q, const double cell_width_plus, const double cell_width_minus, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 
template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
std::array< dealii::Tensor< 1, dim, NumberType >, n_components > compute_diffusion_flux (const std::array< NumberType, n_components > &u_minus, const std::array< NumberType, n_components > &u_plus, const GradientType< dim, NumberType, n_components > &grad_u_minus, const GradientType< dim, NumberType, n_components > &grad_u_plus, const ThirdDerivativeType< dim, NumberType, n_components > &third_derivatives_minus, const ThirdDerivativeType< dim, NumberType, n_components > &third_derivatives_plus, const dealii::Point< dim > &x_q, const double cell_width_minus, const double cell_width_plus, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 
template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
DiffusionFluxJacobianData< dim, NumberType, n_components > compute_diffusion_flux_jacobian (const std::array< NumberType, n_components > &u_minus, const std::array< NumberType, n_components > &u_plus, const GradientType< dim, NumberType, n_components > &grad_u_minus, const GradientType< dim, NumberType, n_components > &grad_u_plus, const ThirdDerivativeType< dim, NumberType, n_components > &third_derivatives_minus, const ThirdDerivativeType< dim, NumberType, n_components > &third_derivatives_plus, const dealii::Point< dim > &x_q, const double cell_width_minus, const double cell_width_plus, const ExtractorArray &extractors, const VariableVector &variables, const Model &model)
 
template<int dim, typename NumberType , size_t n_components>
FaceReconstructionState< dim, NumberType, n_components > reverse_face_reconstruction (const FaceReconstructionState< dim, NumberType, n_components > &state)
 
template<int dim, typename NumberType , size_t n_components>
std::array< NumberType, n_components > reconstruct_u (const std::array< NumberType, n_components > &u_center, const dealii::Point< dim > &center, const dealii::Point< dim > &x, const GradientType< dim, NumberType, n_components > &u_grad)
 
template<int dim, typename NumberType , size_t n_components>
void sort_four_point_stencil (FourPointStencil< dim, NumberType, n_components > &stencil)
 
template<int dim, typename NumberType , size_t n_components>
FourPointStencil< dim, NumberType, n_components > make_interior_third_derivative_stencil (const CellStencilData< dim, NumberType, n_components > &minus_stencil, const CellStencilData< dim, NumberType, n_components > &plus_stencil, const dealii::Point< dim > &x_q)
 
template<int dim, typename NumberType , size_t n_components>
FourPointStencil< dim, NumberType, n_components > make_boundary_third_derivative_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil)
 
template<int dim, typename NumberType , size_t n_components>
DiffusionFaceState< dim, NumberType, n_components > compute_diffusion_face_state (const CellStencilData< dim, NumberType, n_components > &minus_stencil, const CellStencilData< dim, NumberType, n_components > &plus_stencil)
 
template<int dim, typename NumberType , size_t n_components>
std::array< ReconstructionDerivativeData< dim, NumberType, n_components >, 2 > extract_diffusion_face_derivatives (const DiffusionFaceState< dim, autodiff::Real< 1, NumberType >, n_components > &state)
 
template<int dim, typename NumberType , size_t n_components, typename VectorType >
void fill_cell_data_from_topology (const CellGeometryDofs< dim, n_components > &topology, const VectorType &solution_global, CellData< dim, NumberType, n_components > &data)
 
template<def::HasReconstructor Reconstructor, int dim, typename NumberType , size_t n_components, typename DiffusionReconstructor = def::CorrectedWeightedLeastSquaresDiffusionReconstructor<dim, NumberType>>
FaceReconstructionState< dim, NumberType, n_components > compute_interior_face_reconstruction_state (const CellStencilData< dim, NumberType, n_components > &minus_stencil, const CellStencilData< dim, NumberType, n_components > &plus_stencil, const dealii::Point< dim > &x_q)
 
template<def::HasReconstructor Reconstructor, int dim, typename NumberType , size_t n_components>
std::array< NumberType, n_components > reconstruct_u_derivative (const std::array< autodiff::Real< 1, NumberType >, n_components > &u_center, const dealii::Point< dim > &center, const dealii::Point< dim > &x, const std::array< dealii::Point< dim >, 2 *dim > &x_n, const std::array< std::array< autodiff::Real< 1, NumberType >, n_components >, 2 *dim > &u_n)
 
template<int dim, typename NumberType , size_t n_components>
bool is_lower_boundary_stencil (const std::array< dealii::Point< dim >, 2 *dim+3 > &x_stencil, const dealii::Point< dim > &x_face)
 
template<typename BoundaryNumberType , int dim, size_t n_components, typename VectorType >
BoundaryStencilData< dim, BoundaryNumberType, n_components > fill_boundary_stencil_from_topology (const BoundaryStencilTopologyData< dim, n_components > &topology, const VectorType &solution_global)
 
template<typename BoundaryNumberType , int dim, size_t n_components, typename VectorType >
BoundaryReconstructionStencilData< dim, BoundaryNumberType, n_components > fill_boundary_reconstruction_stencil_from_topology (const BoundaryReconstructionStencilTopologyData< dim, n_components > &topology, const VectorType &solution_global)
 
template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > make_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const size_t center_index, const size_t left_index, const size_t right_index)
 
template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > make_physical_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil)
 
template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > make_ghost_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
void prepare_boundary_reconstruction_stencil (BoundaryStencilData< dim, NumberType, n_components > &, const CellStencilData< dim, NumberType, n_components > &, const dealii::Point< dim > &)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
void prepare_boundary_reconstruction_stencil (BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &physical_stencil, const dealii::Point< dim > &x_q)
 
template<typename Model , int dim, typename NumberType , size_t n_components>
void apply_boundary_reconstruction_stencil (BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &cell_stencil, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
BoundaryStencilData< 2, NumberType, n_components > make_composed_corner_boundary_stencil (const BoundaryReconstructionStencilData< 2, NumberType, n_components > &boundary_reconstruction_stencil, const unsigned int result_face, const CellStencilData< 2, NumberType, n_components > &physical_stencil, const Model &model)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
CellStencilData< dim, NumberType, n_components > make_physical_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
CellStencilData< dim, NumberType, n_components > make_physical_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &physical_stencil)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
CellStencilData< dim, NumberType, n_components > make_ghost_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &)
 
template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
CellStencilData< dim, NumberType, n_components > make_ghost_boundary_side_stencil (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, const CellStencilData< dim, NumberType, n_components > &physical_stencil)
 
template<typename Model , typename NumberType , size_t n_components>
CellStencilData< 2, NumberType, n_components > make_ghost_boundary_side_stencil (const BoundaryReconstructionStencilData< 2, NumberType, n_components > &boundary_reconstruction_stencil, const CellStencilData< 2, NumberType, n_components > &physical_stencil, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
void populate_boundary_neighbor_from_model_stencil (BoundaryStencilData< 1, NumberType, n_components > &boundary_stencil, CellStencilData< 1, NumberType, n_components > &cell_stencil, const unsigned int face_index, const dealii::Point< 1 > &x_q, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
void populate_boundary_neighbor_from_model_stencil (BoundaryStencilData< 2, NumberType, n_components > &boundary_stencil, CellStencilData< 2, NumberType, n_components > &cell_stencil, const unsigned int face_index, const dealii::Point< 2 > &x_q, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 1, NumberType, n_components >, CellStencilData< 1, NumberType, n_components > > make_model_boundary_reconstruction_side_stencils (BoundaryStencilData< 1, NumberType, n_components > boundary_stencil, const CellStencilData< 1, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 1 > &x_q, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 1, NumberType, n_components >, CellStencilData< 1, NumberType, n_components > > make_model_boundary_reconstruction_side_stencils (BoundaryReconstructionStencilData< 1, NumberType, n_components > boundary_reconstruction_stencil, const CellStencilData< 1, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 1 > &x_q, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 2, NumberType, n_components >, CellStencilData< 2, NumberType, n_components > > make_model_boundary_reconstruction_side_stencils (BoundaryStencilData< 2, NumberType, n_components > boundary_stencil, const CellStencilData< 2, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 2 > &x_q, const Model &model)
 
template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 2, NumberType, n_components >, CellStencilData< 2, NumberType, n_components > > make_model_boundary_reconstruction_side_stencils (BoundaryReconstructionStencilData< 2, NumberType, n_components > boundary_reconstruction_stencil, const CellStencilData< 2, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 2 > &x_q, const Model &model)
 
template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 1, NumberType, n_components > compute_boundary_face_reconstruction_state (BoundaryStencilData< 1, NumberType, n_components > boundary_stencil, const CellStencilData< 1, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 1 > &x_q, const Model &model)
 
template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 1, NumberType, n_components > compute_boundary_face_reconstruction_state (BoundaryReconstructionStencilData< 1, NumberType, n_components > boundary_reconstruction_stencil, const CellStencilData< 1, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 1 > &x_q, const Model &model)
 
template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 2, NumberType, n_components > compute_boundary_face_reconstruction_state (BoundaryStencilData< 2, NumberType, n_components > boundary_stencil, const CellStencilData< 2, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 2 > &x_q, const Model &model)
 
template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 2, NumberType, n_components > compute_boundary_face_reconstruction_state (BoundaryReconstructionStencilData< 2, NumberType, n_components > boundary_reconstruction_stencil, const CellStencilData< 2, NumberType, n_components > &physical_cell_stencil, const dealii::Point< 2 > &x_q, const Model &model)
 
template<int dim, typename NumberType , size_t n_components>
CellData< dim, autodiff::Real< 1, NumberType >, n_components > tag_cell_dofs (const CellData< dim, NumberType, n_components > &cell_data, dealii::types::global_dof_index dof_j)
 
template<int dim, typename NumberType , size_t n_components>
NeighborData< dim, autodiff::Real< 1, NumberType >, n_components > make_tagged_neighbors (const NeighborData< dim, NumberType, n_components > &neighbor_data, dealii::types::global_dof_index dof_j)
 
template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, autodiff::Real< 1, NumberType >, n_components > tag_cell_stencil_dofs (const CellStencilData< dim, NumberType, n_components > &cell_stencil, dealii::types::global_dof_index dof_j)
 
template<int dim, typename NumberType , size_t n_components>
BoundaryStencilData< dim, autodiff::Real< 1, NumberType >, n_components > tag_boundary_stencil_dofs (const BoundaryStencilData< dim, NumberType, n_components > &boundary_stencil, dealii::types::global_dof_index dof_j)
 
template<int dim, typename NumberType , size_t n_components>
BoundaryReconstructionStencilData< dim, autodiff::Real< 1, NumberType >, n_components > tag_boundary_reconstruction_stencil_dofs (const BoundaryReconstructionStencilData< dim, NumberType, n_components > &boundary_reconstruction_stencil, dealii::types::global_dof_index dof_j)
 

Typedef Documentation

◆ DiffusionFaceState

template<int dim, typename NumberType , size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::DiffusionFaceState = def::DiffusionFaceState<dim, NumberType, n_components>

◆ FluxGradientJacobian

template<typename NumberType , int dim, size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::FluxGradientJacobian
Initial value:
std::array<std::array<dealii::Tensor<2, dim, NumberType>, n_components>, n_components>

Derivative of every flux component/direction with respect to every component/direction of grad(u).

Indexed as [flux_component][gradient_component][flux_direction][gradient_direction].

◆ GradientType

template<int dim, typename NumberType , size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::GradientType = def::GradientType<dim, NumberType, n_components>

◆ HessianTensor

template<typename NumberType , int dim, size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::HessianTensor
Initial value:
std::array<std::array<std::array<std::array<NumberType, n_components>, n_components>, n_components>, dim>

◆ JacobianMatrix

template<typename NumberType , size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::JacobianMatrix = std::array<std::array<NumberType, n_components>, n_components>

◆ MixedHessianTensor

template<typename NumberType , int dim, size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::MixedHessianTensor = std::array<HessianTensor<NumberType, dim, n_components>, dim>

◆ ThirdDerivativeType

template<int dim, typename NumberType , size_t n_components>
using DiFfRG::FV::KurganovTadmor::internal::ThirdDerivativeType = def::ThirdDerivativeType<dim, NumberType, n_components>

Function Documentation

◆ apply_boundary_reconstruction_stencil()

template<typename Model , int dim, typename NumberType , size_t n_components>
void DiFfRG::FV::KurganovTadmor::internal::apply_boundary_reconstruction_stencil ( BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > & cell_stencil,
const Model & model )

◆ compute_boundary_face_reconstruction_state() [1/4]

template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 1, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_boundary_face_reconstruction_state ( BoundaryReconstructionStencilData< 1, NumberType, n_components > boundary_reconstruction_stencil,
const CellStencilData< 1, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 1 > & x_q,
const Model & model )

◆ compute_boundary_face_reconstruction_state() [2/4]

template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 2, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_boundary_face_reconstruction_state ( BoundaryReconstructionStencilData< 2, NumberType, n_components > boundary_reconstruction_stencil,
const CellStencilData< 2, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 2 > & x_q,
const Model & model )

◆ compute_boundary_face_reconstruction_state() [3/4]

template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 1, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_boundary_face_reconstruction_state ( BoundaryStencilData< 1, NumberType, n_components > boundary_stencil,
const CellStencilData< 1, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 1 > & x_q,
const Model & model )

◆ compute_boundary_face_reconstruction_state() [4/4]

template<def::HasReconstructor Reconstructor, typename Model , typename NumberType , size_t n_components>
FaceReconstructionState< 2, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_boundary_face_reconstruction_state ( BoundaryStencilData< 2, NumberType, n_components > boundary_stencil,
const CellStencilData< 2, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 2 > & x_q,
const Model & model )

◆ compute_diffusion_face_state()

template<int dim, typename NumberType , size_t n_components>
DiffusionFaceState< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_diffusion_face_state ( const CellStencilData< dim, NumberType, n_components > & minus_stencil,
const CellStencilData< dim, NumberType, n_components > & plus_stencil )

◆ compute_diffusion_flux()

template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
std::array< dealii::Tensor< 1, dim, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_diffusion_flux ( const std::array< NumberType, n_components > & u_minus,
const std::array< NumberType, n_components > & u_plus,
const GradientType< dim, NumberType, n_components > & grad_u_minus,
const GradientType< dim, NumberType, n_components > & grad_u_plus,
const ThirdDerivativeType< dim, NumberType, n_components > & third_derivatives_minus,
const ThirdDerivativeType< dim, NumberType, n_components > & third_derivatives_plus,
const dealii::Point< dim > & x_q,
const double cell_width_minus,
const double cell_width_plus,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

◆ compute_diffusion_flux_jacobian()

template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
DiffusionFluxJacobianData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_diffusion_flux_jacobian ( const std::array< NumberType, n_components > & u_minus,
const std::array< NumberType, n_components > & u_plus,
const GradientType< dim, NumberType, n_components > & grad_u_minus,
const GradientType< dim, NumberType, n_components > & grad_u_plus,
const ThirdDerivativeType< dim, NumberType, n_components > & third_derivatives_minus,
const ThirdDerivativeType< dim, NumberType, n_components > & third_derivatives_plus,
const dealii::Point< dim > & x_q,
const double cell_width_minus,
const double cell_width_plus,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

◆ compute_flux_derivatives_ad()

template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
FluxDerivativeData< NumberType, dim, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_flux_derivatives_ad ( const std::array< NumberType, n_components > & u,
const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > & grad_u,
const dealii::Point< dim > & x_q,
const double cell_width,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

Compute F, dF/du, d2F/du2, dF/dgrad(u), and d2F/(du dgrad(u)) with second-order forward AD.

The gradient is held fixed while extracting dF/du. The Hessian and mixed derivatives are used by the wave-speed strategy to differentiate the physical KT speed.

◆ compute_flux_jacobian_and_hessian()

template<typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
auto DiFfRG::FV::KurganovTadmor::internal::compute_flux_jacobian_and_hessian ( const std::array< NumberType, n_components > & u,
const dealii::Point< dim > & x_q,
const double cell_width,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

Backward-compatible state-only view of the full AD derivative extraction.

This is intentionally not a second derivative strategy: it calls compute_flux_derivatives_ad with a zero gradient and returns its F/J/H subset.

◆ compute_interior_face_reconstruction_state()

template<def::HasReconstructor Reconstructor, int dim, typename NumberType , size_t n_components, typename DiffusionReconstructor = def::CorrectedWeightedLeastSquaresDiffusionReconstructor<dim, NumberType>>
FaceReconstructionState< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_interior_face_reconstruction_state ( const CellStencilData< dim, NumberType, n_components > & minus_stencil,
const CellStencilData< dim, NumberType, n_components > & plus_stencil,
const dealii::Point< dim > & x_q )

◆ compute_kt_flux_and_speeds() [1/2]

template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTFluxData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_kt_flux_and_speeds ( const std::array< NumberType, n_components > & u_plus,
const std::array< NumberType, n_components > & u_minus,
const dealii::Point< dim > & x_q,
const double cell_width_plus,
const double cell_width_minus,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

◆ compute_kt_flux_and_speeds() [2/2]

template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTFluxData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_kt_flux_and_speeds ( const std::array< NumberType, n_components > & u_plus,
const std::array< NumberType, n_components > & u_minus,
const GradientType< dim, NumberType, n_components > & grad_u_plus,
const GradientType< dim, NumberType, n_components > & grad_u_minus,
const dealii::Point< dim > & x_q,
const double cell_width_plus,
const double cell_width_minus,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

◆ compute_kt_numflux_jacobian()

template<typename WaveSpeedStrategy , typename Model , typename NumberType , int dim, size_t n_components, typename ExtractorArray , typename VariableVector >
KTNumFluxJacobianData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_kt_numflux_jacobian ( const std::array< NumberType, n_components > & u_plus,
const std::array< NumberType, n_components > & u_minus,
const GradientType< dim, NumberType, n_components > & grad_u_plus,
const GradientType< dim, NumberType, n_components > & grad_u_minus,
const dealii::Point< dim > & x_q,
const double cell_width_plus,
const double cell_width_minus,
const ExtractorArray & extractors,
const VariableVector & variables,
const Model & model )

◆ compute_numerical_flux()

template<int dim, typename NumberType , size_t n_components>
std::array< dealii::Tensor< 1, dim, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::compute_numerical_flux ( const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > & F_plus,
const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > & F_minus,
const std::array< dealii::Tensor< 1, dim, NumberType >, n_components > & a_half,
const std::array< NumberType, n_components > & u_plus,
const std::array< NumberType, n_components > & u_minus )

◆ diffusion_flux_tie()

template<typename... T>
auto DiFfRG::FV::KurganovTadmor::internal::diffusion_flux_tie ( T &&... t)

The named tuple handed to model.diffusion_flux().

See also
flux_tie for the entries.

◆ extract_diffusion_face_derivatives()

template<int dim, typename NumberType , size_t n_components>
std::array< ReconstructionDerivativeData< dim, NumberType, n_components >, 2 > DiFfRG::FV::KurganovTadmor::internal::extract_diffusion_face_derivatives ( const DiffusionFaceState< dim, autodiff::Real< 1, NumberType >, n_components > & state)

◆ fill_boundary_reconstruction_stencil_from_topology()

template<typename BoundaryNumberType , int dim, size_t n_components, typename VectorType >
BoundaryReconstructionStencilData< dim, BoundaryNumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::fill_boundary_reconstruction_stencil_from_topology ( const BoundaryReconstructionStencilTopologyData< dim, n_components > & topology,
const VectorType & solution_global )

◆ fill_boundary_stencil_from_topology()

template<typename BoundaryNumberType , int dim, size_t n_components, typename VectorType >
BoundaryStencilData< dim, BoundaryNumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::fill_boundary_stencil_from_topology ( const BoundaryStencilTopologyData< dim, n_components > & topology,
const VectorType & solution_global )

◆ fill_cell_data_from_topology()

template<int dim, typename NumberType , size_t n_components, typename VectorType >
void DiFfRG::FV::KurganovTadmor::internal::fill_cell_data_from_topology ( const CellGeometryDofs< dim, n_components > & topology,
const VectorType & solution_global,
CellData< dim, NumberType, n_components > & data )

◆ flux_tie()

template<typename... T>
auto DiFfRG::FV::KurganovTadmor::internal::flux_tie ( T &&... t)

The named tuple handed to model.flux().

"extractors" and "variables" carry the same data the source() tuple does, filled once per residual and once per jacobian by the assembler's extract() before any flux is evaluated. They are plain NumberType even inside the AD-seeded flux loops, i.e. the flux jacobian does not contain the dependence of an extractor on the FE solution – the extractors are frozen within a Newton step, exactly as they are for source(). A model that solves for something at the EoM in extract() and reads it here therefore gets an approximate jacobian, which costs Newton iterations rather than accuracy: the extraction is redone for every residual.

"cell_width" is the local grid spacing: the width of the cell this trace was reconstructed from, measured along the normal of the face being assembled. See DiFfRG::internal::cell_width. It lets a model build a term whose size is set by the mesh rather than by a parameter – an upwind viscosity being the usual reason. Anything built from it has to vanish as the mesh is refined, or the scheme it belongs to does not converge.

The slot order matches the FEM assemblers' fe_tie and this scheme's own fv_tie: the discretization-specific solution entries first, then "extractors", "variables", "cell_width".

◆ is_lower_boundary_stencil()

template<int dim, typename NumberType , size_t n_components>
bool DiFfRG::FV::KurganovTadmor::internal::is_lower_boundary_stencil ( const std::array< dealii::Point< dim >, 2 *dim+3 > & x_stencil,
const dealii::Point< dim > & x_face )

◆ make_boundary_side_stencil()

template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const size_t center_index,
const size_t left_index,
const size_t right_index )

◆ make_boundary_third_derivative_stencil()

template<int dim, typename NumberType , size_t n_components>
FourPointStencil< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_boundary_third_derivative_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil)

◆ make_composed_corner_boundary_stencil()

template<typename Model , typename NumberType , size_t n_components>
BoundaryStencilData< 2, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_composed_corner_boundary_stencil ( const BoundaryReconstructionStencilData< 2, NumberType, n_components > & boundary_reconstruction_stencil,
const unsigned int result_face,
const CellStencilData< 2, NumberType, n_components > & physical_stencil,
const Model & model )

◆ make_ghost_boundary_side_stencil() [1/4]

template<typename Model , typename NumberType , size_t n_components>
CellStencilData< 2, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_ghost_boundary_side_stencil ( const BoundaryReconstructionStencilData< 2, NumberType, n_components > & boundary_reconstruction_stencil,
const CellStencilData< 2, NumberType, n_components > & physical_stencil,
const Model & model )

◆ make_ghost_boundary_side_stencil() [2/4]

template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_ghost_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil)

◆ make_ghost_boundary_side_stencil() [3/4]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_ghost_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > &  )

◆ make_ghost_boundary_side_stencil() [4/4]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_ghost_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > & physical_stencil )

◆ make_interior_third_derivative_stencil()

template<int dim, typename NumberType , size_t n_components>
FourPointStencil< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_interior_third_derivative_stencil ( const CellStencilData< dim, NumberType, n_components > & minus_stencil,
const CellStencilData< dim, NumberType, n_components > & plus_stencil,
const dealii::Point< dim > & x_q )

◆ make_model_boundary_reconstruction_side_stencils() [1/4]

template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 1, NumberType, n_components >, CellStencilData< 1, NumberType, n_components > > DiFfRG::FV::KurganovTadmor::internal::make_model_boundary_reconstruction_side_stencils ( BoundaryReconstructionStencilData< 1, NumberType, n_components > boundary_reconstruction_stencil,
const CellStencilData< 1, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 1 > & x_q,
const Model & model )

◆ make_model_boundary_reconstruction_side_stencils() [2/4]

template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 2, NumberType, n_components >, CellStencilData< 2, NumberType, n_components > > DiFfRG::FV::KurganovTadmor::internal::make_model_boundary_reconstruction_side_stencils ( BoundaryReconstructionStencilData< 2, NumberType, n_components > boundary_reconstruction_stencil,
const CellStencilData< 2, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 2 > & x_q,
const Model & model )

◆ make_model_boundary_reconstruction_side_stencils() [3/4]

template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 1, NumberType, n_components >, CellStencilData< 1, NumberType, n_components > > DiFfRG::FV::KurganovTadmor::internal::make_model_boundary_reconstruction_side_stencils ( BoundaryStencilData< 1, NumberType, n_components > boundary_stencil,
const CellStencilData< 1, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 1 > & x_q,
const Model & model )

◆ make_model_boundary_reconstruction_side_stencils() [4/4]

template<typename Model , typename NumberType , size_t n_components>
std::pair< CellStencilData< 2, NumberType, n_components >, CellStencilData< 2, NumberType, n_components > > DiFfRG::FV::KurganovTadmor::internal::make_model_boundary_reconstruction_side_stencils ( BoundaryStencilData< 2, NumberType, n_components > boundary_stencil,
const CellStencilData< 2, NumberType, n_components > & physical_cell_stencil,
const dealii::Point< 2 > & x_q,
const Model & model )

◆ make_physical_boundary_side_stencil() [1/3]

template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_physical_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil)

◆ make_physical_boundary_side_stencil() [2/3]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_physical_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > &  )

◆ make_physical_boundary_side_stencil() [3/3]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
CellStencilData< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::make_physical_boundary_side_stencil ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > & physical_stencil )

◆ make_tagged_neighbors()

template<int dim, typename NumberType , size_t n_components>
NeighborData< dim, autodiff::Real< 1, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::make_tagged_neighbors ( const NeighborData< dim, NumberType, n_components > & neighbor_data,
dealii::types::global_dof_index dof_j )

◆ per_block()

template<size_t n_components, typename Result , typename ComputeFUN >
std::array< Result, n_components > DiFfRG::FV::KurganovTadmor::internal::per_block ( const std::array< int, n_components > & blocks,
const ComputeFUN & compute )

Run compute once per distinct block and hand each component its block's result.

Components carrying no_wave_speed are skipped and keep the value-initialised entry. compute(block) is called at most once per distinct id, so a model that declares one block pays exactly what it paid before blocks existed.

◆ populate_boundary_neighbor_from_model_stencil() [1/2]

template<typename Model , typename NumberType , size_t n_components>
void DiFfRG::FV::KurganovTadmor::internal::populate_boundary_neighbor_from_model_stencil ( BoundaryStencilData< 1, NumberType, n_components > & boundary_stencil,
CellStencilData< 1, NumberType, n_components > & cell_stencil,
const unsigned int face_index,
const dealii::Point< 1 > & x_q,
const Model & model )

◆ populate_boundary_neighbor_from_model_stencil() [2/2]

template<typename Model , typename NumberType , size_t n_components>
void DiFfRG::FV::KurganovTadmor::internal::populate_boundary_neighbor_from_model_stencil ( BoundaryStencilData< 2, NumberType, n_components > & boundary_stencil,
CellStencilData< 2, NumberType, n_components > & cell_stencil,
const unsigned int face_index,
const dealii::Point< 2 > & x_q,
const Model & model )

◆ prepare_boundary_reconstruction_stencil() [1/2]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 1)
void DiFfRG::FV::KurganovTadmor::internal::prepare_boundary_reconstruction_stencil ( BoundaryStencilData< dim, NumberType, n_components > & ,
const CellStencilData< dim, NumberType, n_components > & ,
const dealii::Point< dim > &  )

◆ prepare_boundary_reconstruction_stencil() [2/2]

template<int dim, typename NumberType , size_t n_components>
requires (dim == 2)
void DiFfRG::FV::KurganovTadmor::internal::prepare_boundary_reconstruction_stencil ( BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
const CellStencilData< dim, NumberType, n_components > & physical_stencil,
const dealii::Point< dim > & x_q )

◆ reconstruct_u()

template<int dim, typename NumberType , size_t n_components>
std::array< NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::reconstruct_u ( const std::array< NumberType, n_components > & u_center,
const dealii::Point< dim > & center,
const dealii::Point< dim > & x,
const GradientType< dim, NumberType, n_components > & u_grad )

◆ reconstruct_u_derivative()

template<def::HasReconstructor Reconstructor, int dim, typename NumberType , size_t n_components>
std::array< NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::reconstruct_u_derivative ( const std::array< autodiff::Real< 1, NumberType >, n_components > & u_center,
const dealii::Point< dim > & center,
const dealii::Point< dim > & x,
const std::array< dealii::Point< dim >, 2 *dim > & x_n,
const std::array< std::array< autodiff::Real< 1, NumberType >, n_components >, 2 *dim > & u_n )

◆ restrict_hessian_to_block()

template<typename NumberType , int dim, size_t n_components>
HessianTensor< NumberType, dim, n_components > DiFfRG::FV::KurganovTadmor::internal::restrict_hessian_to_block ( const HessianTensor< NumberType, dim, n_components > & H,
const std::array< int, n_components > & blocks,
const int block )

Copy of H with the two jacobian indices restricted to block.

The differentiation index is left alone: the block's speed depends on the whole solution through the entries of its own sub-matrix.

See also
restrict_jacobian_to_block.

◆ restrict_jacobian_to_block()

template<typename NumberType , int dim, size_t n_components>
std::array< JacobianMatrix< NumberType, n_components >, dim > DiFfRG::FV::KurganovTadmor::internal::restrict_jacobian_to_block ( const std::array< JacobianMatrix< NumberType, n_components >, dim > & J,
const std::array< int, n_components > & blocks,
const int block )

Copy of J with every row and column outside block zeroed.

The spectral radius of the result is that of the block's own diagonal sub-matrix, padded with zero eigenvalues, so a wave-speed strategy can be handed this and needs to know nothing about blocks.

See also
AbstractModel::wave_speed_blocks.

◆ reverse_face_reconstruction()

template<int dim, typename NumberType , size_t n_components>
FaceReconstructionState< dim, NumberType, n_components > DiFfRG::FV::KurganovTadmor::internal::reverse_face_reconstruction ( const FaceReconstructionState< dim, NumberType, n_components > & state)

◆ sgn()

template<typename T >
int DiFfRG::FV::KurganovTadmor::internal::sgn ( T val)

◆ sort_four_point_stencil()

template<int dim, typename NumberType , size_t n_components>
void DiFfRG::FV::KurganovTadmor::internal::sort_four_point_stencil ( FourPointStencil< dim, NumberType, n_components > & stencil)

◆ tag_boundary_reconstruction_stencil_dofs()

template<int dim, typename NumberType , size_t n_components>
BoundaryReconstructionStencilData< dim, autodiff::Real< 1, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::tag_boundary_reconstruction_stencil_dofs ( const BoundaryReconstructionStencilData< dim, NumberType, n_components > & boundary_reconstruction_stencil,
dealii::types::global_dof_index dof_j )

◆ tag_boundary_stencil_dofs()

template<int dim, typename NumberType , size_t n_components>
BoundaryStencilData< dim, autodiff::Real< 1, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::tag_boundary_stencil_dofs ( const BoundaryStencilData< dim, NumberType, n_components > & boundary_stencil,
dealii::types::global_dof_index dof_j )

◆ tag_cell_dofs()

template<int dim, typename NumberType , size_t n_components>
CellData< dim, autodiff::Real< 1, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::tag_cell_dofs ( const CellData< dim, NumberType, n_components > & cell_data,
dealii::types::global_dof_index dof_j )

◆ tag_cell_stencil_dofs()

template<int dim, typename NumberType , size_t n_components>
CellStencilData< dim, autodiff::Real< 1, NumberType >, n_components > DiFfRG::FV::KurganovTadmor::internal::tag_cell_stencil_dofs ( const CellStencilData< dim, NumberType, n_components > & cell_stencil,
dealii::types::global_dof_index dof_j )