/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/FV/assembler/KurganovTadmor.hh File Reference#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/FV/assembler/KurganovTadmor.hh File Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
KurganovTadmor.hh File Reference
#include "DiFfRG/common/math.hh"
#include <array>
#include <autodiff/forward/real/real.hpp>
#include <cstddef>
#include <deal.II/base/multithread_info.h>
#include <deal.II/base/point.h>
#include <deal.II/base/quadrature_lib.h>
#include <deal.II/base/timer.h>
#include <deal.II/base/types.h>
#include <deal.II/dofs/dof_handler.h>
#include <deal.II/dofs/dof_tools.h>
#include <deal.II/fe/fe_values.h>
#include <deal.II/grid/grid_tools.h>
#include <deal.II/grid/tria_iterator_base.h>
#include <deal.II/lac/full_matrix.h>
#include <deal.II/lac/sparse_matrix.h>
#include <deal.II/lac/vector.h>
#include <deal.II/meshworker/assemble_flags.h>
#include <deal.II/meshworker/mesh_loop.h>
#include <deal.II/numerics/matrix_tools.h>
#include <deal.II/numerics/vector_tools.h>
#include <iomanip>
#include <iostream>
#include <limits>
#include <optional>
#include <spdlog/spdlog.h>
#include <sstream>
#include <tbb/tbb.h>
#include <DiFfRG/common/utils.hh>
#include <DiFfRG/discretization/FV/reconstructor/advection/first_order_reconstructor.hh>
#include <DiFfRG/discretization/FV/reconstructor/advection/tvd_reconstructor.hh>
#include <DiFfRG/discretization/common/abstract_assembler.hh>
#include <DiFfRG/discretization/common/affine_constraint_metadata.hh>
#include <DiFfRG/discretization/common/assembly_schedule.hh>
#include <DiFfRG/discretization/common/eom.hh>
#include <DiFfRG/discretization/common/la_policy.hh>
#include <DiFfRG/discretization/common/solution_sample.hh>
#include <DiFfRG/physics/integration/map_scheduler.hh>
#include <DiFfRG/common/linear_algebra.hh>
#include <DiFfRG/discretization/FV/assembler/assembly_context.hh>
#include <DiFfRG/discretization/FV/assembler/flux_jacobian_hessian.hh>
#include <DiFfRG/discretization/FV/assembler/flux_ties.hh>
#include <DiFfRG/discretization/FV/assembler/reconstruction_cache.hh>
#include <DiFfRG/discretization/FV/wave_speed/abstract_wave_speed.hh>
#include <DiFfRG/discretization/FV/wave_speed/max_eigenvalue_wave_speed.hh>
#include <DiFfRG/discretization/common/types.hh>
#include <tuple>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  DiFfRG::FV::KurganovTadmor::internal::ScratchData< dim, NumberType, n_components >
 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  DiFfRG::FV::KurganovTadmor::internal::CopyData_R< NumberType >
 
struct  DiFfRG::FV::KurganovTadmor::internal::CopyData_R< NumberType >::CopyDataFace_R
 
struct  DiFfRG::FV::KurganovTadmor::internal::CopyData_J< NumberType, dim >
 
struct  DiFfRG::FV::KurganovTadmor::internal::CopyData_J< NumberType, dim >::CopyDataFace_J
 
struct  DiFfRG::FV::KurganovTadmor::internal::CopyData_I< NumberType >
 
struct  DiFfRG::FV::KurganovTadmor::internal::CopyData_I< NumberType >::CopyFaceData_I
 
struct  DiFfRG::FV::KurganovTadmor::internal::KTFluxData< dim, NumberType, n_components >
 Result struct for compute_kt_flux_and_speeds. More...
 
struct  DiFfRG::FV::KurganovTadmor::internal::KTNumFluxJacobianData< dim, NumberType, n_components >
 
struct  DiFfRG::FV::KurganovTadmor::internal::DiffusionFluxJacobianData< dim, NumberType, n_components >
 
class  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >
 
struct  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >::FaceJacobianDependencyCacheEntry
 
struct  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >::FaceReconstructionDescriptor
 
struct  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >::CellTopologyCacheEntry
 
struct  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >::ReadoutSolution
 
struct  DiFfRG::FV::KurganovTadmor::Assembler< Discretization_, Model_, Reconstructor_, WaveSpeedStrategy_, JacobianReconstructor_ >::AssemblyFaceGeometryProvider
 

Namespaces

namespace  DiFfRG
 
namespace  DiFfRG::FV
 
namespace  DiFfRG::FV::KurganovTadmor
 
namespace  DiFfRG::FV::KurganovTadmor::internal
 

Functions

template<typename T >
int DiFfRG::FV::KurganovTadmor::internal::sgn (T val)
 
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.
 
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.
 
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.
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)