Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ > Class Template Reference#

DiFfRG: DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ > Class Template Reference

Class to manage the system on which we solve, i.e. fe spaces, grids, etc. This class is a System for DG systems, i.e. without LDG. More...

#include <dg.hh>

Public Types

using Model = typename DiFfRG::internal::model_of_descriptor<ModelOrComponents_>::type
 The model this discretization belongs to, or void if it was built from a bare descriptor.
 
using Components = typename DiFfRG::internal::components_of<ModelOrComponents_>::type
 
using NumberType = NumberType_
 
using VectorType = VectorType_
 
using SparseMatrixType = SparseMatrixType_
 
using Mesh = Mesh_
 

Public Member Functions

 Discretization (Mesh &mesh, const ConfigTree &config, ReportPort report_port={})
 
const auto & get_constraints (const uint i=0) const
 
auto & get_constraints (const uint i=0)
 
const auto & get_dof_handler (const uint i=0) const
 
auto & get_dof_handler (const uint i=0)
 
const auto & get_fe (uint i=0) const
 
const auto & get_mapping () const
 
const auto & get_triangulation () const
 
auto & get_triangulation ()
 
const Point< dim > & get_support_point (const uint dof) const
 Get the support point for a given dof.
 
const auto & get_support_points () const
 Get the support points for all dofs.
 
const auto & get_config () const
 
ReportPort report_port () const
 
const dealii::IndexSet & get_locally_owned_dofs () const
 The dof rows this rank owns. Complete on a serial mesh.
 
const dealii::IndexSet & get_locally_relevant_dofs () const
 The dof rows this rank can read. See ParallelDoFs::make_ghost_set for why this is everything at the replicated-mesh rung rather than the one-ring relevant set.
 
MPI_Comm get_communicator () const
 MPI_COMM_SELF on a serial mesh, so callers never have to branch on the build type.
 
void reinit ()
 
uint get_closest_dof (const Point< dim > &p) const
 
std::vector< uint > get_block_structure () const
 

Static Public Attributes

static constexpr uint dim = Mesh::dim
 
static constexpr bool is_distributed = is_distributed_la<VectorType>
 Whether the linear algebra is distributed over MPI ranks.
 

Protected Member Functions

void setup_dofs ()
 

Protected Attributes

Mesh & mesh
 
ConfigTree config
 
ReportPort log
 
std::shared_ptr< FESystem< dim > > fe
 
DoFHandler< dim > dof_handler
 
AffineConstraints< NumberType > constraints
 
MappingQ1< dim > mapping
 
std::vector< Point< dim > > support_points
 
dealii::IndexSet locally_owned_dofs
 
dealii::IndexSet locally_relevant_dofs
 

Detailed Description

template<typename ModelOrComponents_, typename Mesh_, typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
class DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >

Class to manage the system on which we solve, i.e. fe spaces, grids, etc. This class is a System for DG systems, i.e. without LDG.

Template Parameters
Model_The Model class used for the Simulation

Member Typedef Documentation

◆ Components

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::Components = typename DiFfRG::internal::components_of<ModelOrComponents_>::type

◆ Mesh

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::Mesh = Mesh_

◆ Model

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::Model = typename DiFfRG::internal::model_of_descriptor<ModelOrComponents_>::type

The model this discretization belongs to, or void if it was built from a bare descriptor.

◆ NumberType

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::NumberType = NumberType_

◆ SparseMatrixType

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::SparseMatrixType = SparseMatrixType_

◆ VectorType

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
using DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::VectorType = VectorType_

Constructor & Destructor Documentation

◆ Discretization()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::Discretization ( Mesh & mesh,
const ConfigTree & config,
ReportPort report_port = {} )
inline

Member Function Documentation

◆ get_block_structure()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
std::vector< uint > DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_block_structure ( ) const
inline

◆ get_closest_dof()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
uint DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_closest_dof ( const Point< dim > & p) const
inline

◆ get_communicator()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
MPI_Comm DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_communicator ( ) const
inline

MPI_COMM_SELF on a serial mesh, so callers never have to branch on the build type.

◆ get_config()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_config ( ) const
inline

◆ get_constraints() [1/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_constraints ( const uint i = 0)
inline

◆ get_constraints() [2/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_constraints ( const uint i = 0) const
inline

◆ get_dof_handler() [1/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_dof_handler ( const uint i = 0)
inline

◆ get_dof_handler() [2/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_dof_handler ( const uint i = 0) const
inline

◆ get_fe()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_fe ( uint i = 0) const
inline

◆ get_locally_owned_dofs()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const dealii::IndexSet & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_locally_owned_dofs ( ) const
inline

The dof rows this rank owns. Complete on a serial mesh.

◆ get_locally_relevant_dofs()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const dealii::IndexSet & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_locally_relevant_dofs ( ) const
inline

The dof rows this rank can read. See ParallelDoFs::make_ghost_set for why this is everything at the replicated-mesh rung rather than the one-ring relevant set.

◆ get_mapping()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_mapping ( ) const
inline

◆ get_support_point()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const Point< dim > & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_support_point ( const uint dof) const
inline

Get the support point for a given dof.

Parameters
dofThe dof index.
Returns
const dealii::Point<dim>& The support point for the given dof.

◆ get_support_points()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_support_points ( ) const
inline

Get the support points for all dofs.

Returns
const std::vector<Point<dim>>& The support points for all dofs.

◆ get_triangulation() [1/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_triangulation ( )
inline

◆ get_triangulation() [2/2]

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
const auto & DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::get_triangulation ( ) const
inline

◆ reinit()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
void DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::reinit ( )
inline

◆ report_port()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
ReportPort DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::report_port ( ) const
inline

◆ setup_dofs()

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
void DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::setup_dofs ( )
inlineprotected

Member Data Documentation

◆ config

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
ConfigTree DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::config
protected

◆ constraints

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
AffineConstraints<NumberType> DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::constraints
protected

◆ dim

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
uint DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::dim = Mesh::dim
staticconstexpr

◆ dof_handler

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
DoFHandler<dim> DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::dof_handler
protected

◆ fe

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
std::shared_ptr<FESystem<dim> > DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::fe
protected

◆ is_distributed

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
bool DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::is_distributed = is_distributed_la<VectorType>
staticconstexpr

Whether the linear algebra is distributed over MPI ranks.

◆ locally_owned_dofs

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
dealii::IndexSet DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::locally_owned_dofs
protected

◆ locally_relevant_dofs

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
dealii::IndexSet DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::locally_relevant_dofs
protected

◆ log

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
ReportPort DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::log
protected

◆ mapping

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
MappingQ1<dim> DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::mapping
protected

◆ mesh

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
Mesh& DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::mesh
protected

◆ support_points

template<typename ModelOrComponents_ , typename Mesh_ , typename NumberType_ = double, typename VectorType_ = LAVectorFor<Mesh_, NumberType_>, typename SparseMatrixType_ = LASparseMatrixFor<Mesh_, NumberType_>>
std::vector<Point<dim> > DiFfRG::DG::Discretization< ModelOrComponents_, Mesh_, NumberType_, VectorType_, SparseMatrixType_ >::support_points
protected

The documentation for this class was generated from the following file:
  • /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/FEM/dg.hh