/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/common/linear_algebra.hh File Reference#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/common/linear_algebra.hh File Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
linear_algebra.hh File Reference

All compile-time knowledge about which linear algebra types DiFfRG uses. More...

#include <deal.II/base/config.h>
#include <deal.II/lac/block_sparse_matrix.h>
#include <deal.II/lac/block_sparsity_pattern.h>
#include <deal.II/lac/block_vector.h>
#include <deal.II/lac/dynamic_sparsity_pattern.h>
#include <deal.II/lac/sparse_direct.h>
#include <deal.II/lac/sparse_matrix.h>
#include <deal.II/lac/vector.h>
#include <deal.II/grid/tria.h>
#include <type_traits>

Go to the source code of this file.

Classes

struct  DiFfRG::get_type::internal::_NumberType< dealii::Vector< NT > >
 
struct  DiFfRG::get_type::internal::_SparsityPattern< dealii::SparseMatrix< NT > >
 
struct  DiFfRG::get_type::internal::_InverseSparseMatrixType< dealii::SparseMatrix< NT > >
 
struct  DiFfRG::get_type::internal::_NumberType< dealii::BlockVector< NT > >
 
struct  DiFfRG::get_type::internal::_SparsityPattern< dealii::BlockSparseMatrix< NT > >
 
struct  DiFfRG::get_type::internal::_InverseSparseMatrixType< dealii::BlockSparseMatrix< NT > >
 
struct  DiFfRG::get_type::internal::_BlockVectorType< dealii::Vector< NT > >
 
struct  DiFfRG::get_type::internal::_BlockVectorType< dealii::BlockVector< NT > >
 

Namespaces

namespace  DiFfRG
 
namespace  DiFfRG::get_type
 
namespace  DiFfRG::get_type::internal
 

Concepts

concept  DiFfRG::SupportedVectorType
 A vector type DiFfRG's timesteppers and assemblers can work with.
 

Typedefs

template<typename VectorType >
using DiFfRG::get_type::NumberType = typename internal::_NumberType<VectorType>::value
 
template<typename SparseMatrixType >
using DiFfRG::get_type::SparsityPattern = typename internal::_SparsityPattern<SparseMatrixType>::value
 
template<typename SparseMatrixType >
using DiFfRG::get_type::InverseSparseMatrixType = typename internal::_InverseSparseMatrixType<SparseMatrixType>::value
 
template<typename VectorType >
using DiFfRG::get_type::BlockVectorType = typename internal::_BlockVectorType<VectorType>::value
 The block-vector type belonging to a given vector type.
 
template<int dim>
using DiFfRG::DefaultTriangulation = dealii::Triangulation<dim>
 
template<typename Mesh , typename NumberType >
using DiFfRG::LAVectorFor = dealii::Vector<NumberType>
 
template<typename Mesh , typename NumberType >
using DiFfRG::LASparseMatrixFor = dealii::SparseMatrix<NumberType>
 

Variables

template<typename T >
constexpr bool DiFfRG::is_distributed_la = false
 Whether a linear algebra type distributes its rows across MPI ranks.
 

Detailed Description

All compile-time knowledge about which linear algebra types DiFfRG uses.

This is the single place that knows the types: which vector belongs to which matrix, which of them are distributed, and what an unqualified build gets by default. It deliberately holds no runtime code – the MPI-collective helpers that branch on this knowledge live in discretization/common/la_policy.hh, and the linear-solver selection lives in timestepping/default_linear_solver.hh (solvers sit above this layer, so naming them here would invert the include order).

Split out of common/types.hh, which now keeps only the generic C++ concepts. That matters beyond tidiness: everything under physics/ needs get_type::ctype and nothing else, yet used to pull sparse_direct.h, block_sparse_matrix.h and four PETSc headers into every Kokkos/CUDA translation unit through this include.