Reference documentation for deal.II version GIT 2896a7e638 2023-05-31 13:10:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Friends | List of all members
MeshWorker::DoFInfo< dim, spacedim, number > Class Template Reference

#include <deal.II/meshworker/dof_info.h>

Inheritance diagram for MeshWorker::DoFInfo< dim, spacedim, number >:
[legend]

Public Member Functions

 DoFInfo (const BlockInfo &block_info)
 
 DoFInfo (const DoFHandler< dim, spacedim > &dof_handler)
 
template<class DHCellIterator >
void reinit (const DHCellIterator &c)
 
template<class DHCellIterator , class DHFaceIterator >
void reinit (const DHCellIterator &c, const DHFaceIterator &f, const unsigned int face_no)
 
template<class DHCellIterator , class DHFaceIterator >
void reinit (const DHCellIterator &c, const DHFaceIterator &f, const unsigned int face_no, const unsigned int subface_no)
 
template<class DHFaceIterator >
void set_face (const DHFaceIterator &f, const unsigned int face_no)
 
template<class DHFaceIterator >
void set_subface (const DHFaceIterator &f, const unsigned int face_no, const unsigned int subface_no)
 
const BlockIndiceslocal_indices () const
 
unsigned int n_values () const
 
unsigned int n_vectors () const
 
unsigned int n_matrices () const
 
unsigned int n_quadrature_points () const
 
unsigned int n_quadrature_values () const
 
doublevalue (const unsigned int i)
 
double value (const unsigned int i) const
 
BlockVector< double > & vector (const unsigned int i)
 
const BlockVector< double > & vector (const unsigned int i) const
 
MatrixBlock< FullMatrix< double > > & matrix (const unsigned int i, const bool external=false)
 
const MatrixBlock< FullMatrix< double > > & matrix (const unsigned int i, const bool external=false) const
 
Table< 2, double > & quadrature_values ()
 
doublequadrature_value (const unsigned int k, const unsigned int i)
 
double quadrature_value (const unsigned int k, const unsigned int i) const
 
void initialize_numbers (const unsigned int n)
 
void initialize_vectors (const unsigned int n)
 
void initialize_matrices (const unsigned int n, bool both)
 
void initialize_matrices (const MatrixBlockVector< MatrixType > &matrices, bool both)
 
void initialize_matrices (const MGMatrixBlockVector< MatrixType > &matrices, bool both)
 
void initialize_quadrature (const unsigned int np, const unsigned int nv)
 
void reinit (const BlockIndices &local_sizes)
 
void print_debug (StreamType &os) const
 
std::size_t memory_consumption () const
 

Public Attributes

Triangulation< dim, spacedim >::cell_iterator cell
 The current cell. More...
 
Triangulation< dim, spacedim >::face_iterator face
 The current face. More...
 
unsigned int face_number
 
unsigned int sub_number
 
std::vector< types::global_dof_indexindices
 
std::vector< std::vector< types::global_dof_index > > indices_by_block
 
SmartPointer< const BlockInfo, DoFInfo< dim, spacedim > > block_info
 The block structure of the system. More...
 
bool level_cell
 

Private Member Functions

 DoFInfo ()
 
void set_block_indices ()
 Set up local block indices. More...
 
template<class DHCellIterator >
void get_indices (const DHCellIterator &c)
 Fill index vector with active indices. More...
 

Private Attributes

std::vector< types::global_dof_indexindices_org
 Auxiliary vector. More...
 
BlockIndices aux_local_indices
 
std::vector< doubleJ
 
std::vector< BlockVector< double > > R
 
std::vector< MatrixBlock< FullMatrix< double > > > M1
 
std::vector< MatrixBlock< FullMatrix< double > > > M2
 
Table< 2, doublequadrature_data
 

Friends

class DoFInfoBox< dim, DoFInfo< dim, spacedim, number > >
 

Detailed Description

template<int dim, int spacedim = dim, typename number = double>
class MeshWorker::DoFInfo< dim, spacedim, number >

A class containing information on geometry and degrees of freedom of a mesh object.

The information in these objects is usually used by one of the Assembler classes. It is also the kind of information which is needed in mesh based matrices (often referred to as matrix free methods).

In addition to the information on degrees of freedom stored in this class, it also provides the local computation space for the worker object operating on it in LocalResults. This base class will automatically be reinitialized on each cell, but initial setup is up to the user and should be done when initialize() for this class is called.

This class operates in two different modes, corresponding to the data models discussed in the Assembler namespace documentation.

The choice of the local data model is triggered by the vector BlockInfo::local_renumbering, which in turn is usually filled by BlockInfo::initialize_local(). If this function has been used, or the vector has been changed from zero-length, then local dof indices stored in this object will automatically be renumbered to reflect local block structure. This means, the first entries in indices will refer to the first block of the system, then comes the second block and so on.

The BlockInfo object is stored as a pointer. Therefore, if the block structure changes, for instance because of mesh refinement, the DoFInfo class will automatically use the new structures.

Definition at line 75 of file dof_info.h.

Constructor & Destructor Documentation

◆ DoFInfo() [1/3]

template<int dim, int spacedim = dim, typename number = double>
MeshWorker::DoFInfo< dim, spacedim, number >::DoFInfo ( const BlockInfo block_info)

Constructor setting the block_info pointer.

◆ DoFInfo() [2/3]

template<int dim, int spacedim, typename number >
MeshWorker::DoFInfo< dim, spacedim, number >::DoFInfo ( const DoFHandler< dim, spacedim > &  dof_handler)

Constructor leaving the block_info pointer empty, but setting the aux_local_indices.

Definition at line 300 of file dof_info.h.

◆ DoFInfo() [3/3]

template<int dim, int spacedim, typename number >
MeshWorker::DoFInfo< dim, spacedim, number >::DoFInfo
private

Standard constructor, not setting any block indices. Use of this constructor is not recommended, but it is needed for the arrays in DoFInfoBox.

Definition at line 291 of file dof_info.h.

Member Function Documentation

◆ reinit() [1/4]

template<int dim, int spacedim, typename number >
template<class DHCellIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::reinit ( const DHCellIterator &  c)
inline

Set the current cell and fill indices.

Definition at line 332 of file dof_info.h.

◆ reinit() [2/4]

template<int dim, int spacedim, typename number >
template<class DHCellIterator , class DHFaceIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::reinit ( const DHCellIterator &  c,
const DHFaceIterator &  f,
const unsigned int  face_no 
)
inline

Set the current face and fill indices if the cell changed.

Definition at line 362 of file dof_info.h.

◆ reinit() [3/4]

template<int dim, int spacedim, typename number >
template<class DHCellIterator , class DHFaceIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::reinit ( const DHCellIterator &  c,
const DHFaceIterator &  f,
const unsigned int  face_no,
const unsigned int  subface_no 
)
inline

Set the current subface and fill indices if the cell changed.

Definition at line 397 of file dof_info.h.

◆ set_face()

template<int dim, int spacedim, typename number >
template<class DHFaceIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::set_face ( const DHFaceIterator &  f,
const unsigned int  face_no 
)
inline

Switch to a new face of the same cell. Does not change indices and does not reset data in LocalResults.

Definition at line 350 of file dof_info.h.

◆ set_subface()

template<int dim, int spacedim, typename number >
template<class DHFaceIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::set_subface ( const DHFaceIterator &  f,
const unsigned int  face_no,
const unsigned int  subface_no 
)
inline

Switch to a new subface of the same cell. Does not change indices and does not reset data in LocalResults.

Definition at line 384 of file dof_info.h.

◆ local_indices()

template<int dim, int spacedim, typename number >
const BlockIndices & MeshWorker::DoFInfo< dim, spacedim, number >::local_indices
inline

Definition at line 420 of file dof_info.h.

◆ set_block_indices()

template<int dim, int spacedim = dim, typename number = double>
void MeshWorker::DoFInfo< dim, spacedim, number >::set_block_indices ( )
private

Set up local block indices.

◆ get_indices()

template<int dim, int spacedim, typename number >
template<class DHCellIterator >
void MeshWorker::DoFInfo< dim, spacedim, number >::get_indices ( const DHCellIterator &  c)
inlineprivate

Fill index vector with active indices.

Definition at line 315 of file dof_info.h.

◆ n_values()

unsigned int MeshWorker::LocalResults< double >::n_values
inlineinherited

The number of scalar values stored by the current object.

This number is set to a nonzero value by Assembler::CellsAndFaces

Definition at line 232 of file local_results.h.

◆ n_vectors()

unsigned int MeshWorker::LocalResults< double >::n_vectors
inlineinherited

The number of vectors stored by the current object.

This number is set to a nonzero value by Assembler::ResidualSimple and Assembler::ResidualLocalBlocksToGlobalBlocks.

Definition at line 241 of file local_results.h.

◆ n_matrices()

unsigned int MeshWorker::LocalResults< double >::n_matrices
inlineinherited

The number of matrices stored by the current object.

Definition at line 247 of file local_results.h.

◆ n_quadrature_points()

unsigned int MeshWorker::LocalResults< double >::n_quadrature_points
inlineinherited

The number of quadrature points in quadrature_values().

Definition at line 253 of file local_results.h.

◆ n_quadrature_values()

unsigned int MeshWorker::LocalResults< double >::n_quadrature_values
inlineinherited

The number of values in each quadrature point in quadrature_values().

Definition at line 259 of file local_results.h.

◆ value() [1/2]

double & MeshWorker::LocalResults< double >::value ( const unsigned int  i)
inlineinherited

Read-write access to the ith scalar stored by this class.

Definition at line 265 of file local_results.h.

◆ value() [2/2]

double MeshWorker::LocalResults< double >::value ( const unsigned int  i) const
inlineinherited

Read access to the ith scalar stored by this class.

Definition at line 271 of file local_results.h.

◆ vector() [1/2]

BlockVector< double > & MeshWorker::LocalResults< double >::vector ( const unsigned int  i)
inlineinherited

Read-write access to the ith vector stored by this class

Definition at line 277 of file local_results.h.

◆ vector() [2/2]

const BlockVector< double > & MeshWorker::LocalResults< double >::vector ( const unsigned int  i) const
inlineinherited

Read-write access to the ith vector stored by this class

Definition at line 283 of file local_results.h.

◆ matrix() [1/2]

MatrixBlock< FullMatrix< double > > & MeshWorker::LocalResults< double >::matrix ( const unsigned int  i,
const bool  external = false 
)
inlineinherited

Read-write access to the ith matrix stored by this class.

For an explanation of the second argument, see the documentation of the current class itself.

Definition at line 292 of file local_results.h.

◆ matrix() [2/2]

const MatrixBlock< FullMatrix< double > > & MeshWorker::LocalResults< double >::matrix ( const unsigned int  i,
const bool  external = false 
) const
inlineinherited

Read access to the ith matrix stored by this class.

For an explanation of the second argument, see the documentation of the current class itself.

Definition at line 301 of file local_results.h.

◆ quadrature_values()

Table< 2, double > & MeshWorker::LocalResults< double >::quadrature_values
inlineinherited

Access to the vector quadrature_data of data in quadrature points, organized such that there is a vector for each point, containing one entry for each component.

Definition at line 309 of file local_results.h.

◆ quadrature_value() [1/2]

double & MeshWorker::LocalResults< double >::quadrature_value ( const unsigned int  k,
const unsigned int  i 
)
inlineinherited

Access the ith value at quadrature point k

Definition at line 315 of file local_results.h.

◆ quadrature_value() [2/2]

double MeshWorker::LocalResults< double >::quadrature_value ( const unsigned int  k,
const unsigned int  i 
) const
inlineinherited

Read the ith value at quadrature point k

Definition at line 321 of file local_results.h.

◆ initialize_numbers()

void MeshWorker::LocalResults< double >::initialize_numbers ( const unsigned int  n)
inlineinherited

Initialize the vector with scalar values.

Note
This function is usually only called by the assembler.

Definition at line 329 of file local_results.h.

◆ initialize_vectors()

void MeshWorker::LocalResults< double >::initialize_vectors ( const unsigned int  n)
inlineinherited

Initialize the vector with vector values.

Note
This function is usually only called by the assembler.

Definition at line 337 of file local_results.h.

◆ initialize_matrices() [1/3]

void MeshWorker::LocalResults< double >::initialize_matrices ( const unsigned int  n,
bool  both 
)
inlineinherited

Allocate n local matrices. Additionally, set their block row and column coordinates to zero. The matrices themselves are resized by reinit().

Note
This function is usually only called by the assembler.

Definition at line 347 of file local_results.h.

◆ initialize_matrices() [2/3]

void MeshWorker::LocalResults< double >::initialize_matrices ( const MatrixBlockVector< MatrixType > &  matrices,
bool  both 
)
inlineinherited

Allocate a local matrix for each of the global ones in matrices. Additionally, set their block row and column coordinates. The matrices themselves are resized by reinit().

Note
This function is usually only called by the assembler.

Definition at line 358 of file local_results.h.

◆ initialize_matrices() [3/3]

void MeshWorker::LocalResults< double >::initialize_matrices ( const MGMatrixBlockVector< MatrixType > &  matrices,
bool  both 
)
inlineinherited

Allocate a local matrix for each of the global level objects in matrices. Additionally, set their block row and column coordinates. The matrices themselves are resized by reinit().

Note
This function is usually only called by the assembler.

Definition at line 370 of file local_results.h.

◆ initialize_quadrature()

void MeshWorker::LocalResults< double >::initialize_quadrature ( const unsigned int  np,
const unsigned int  nv 
)
inlineinherited

Initialize quadrature values to nv values in np quadrature points.

Definition at line 378 of file local_results.h.

◆ reinit() [4/4]

void MeshWorker::LocalResults< double >::reinit ( const BlockIndices local_sizes)
inherited

Reinitialize matrices for new cell. Does not resize any of the data vectors stored in this object, but resizes the vectors in R and the matrices in M1 and M2 for hp and sets them to zero.

Definition at line 386 of file mesh_worker.cc.

◆ print_debug()

void MeshWorker::LocalResults< double >::print_debug ( StreamType &  os) const
inherited

Definition at line 390 of file local_results.h.

◆ memory_consumption()

std::size_t MeshWorker::LocalResults< double >::memory_consumption
inherited

The memory used by this object.

Definition at line 396 of file mesh_worker.cc.

Friends And Related Function Documentation

◆ DoFInfoBox< dim, DoFInfo< dim, spacedim, number > >

template<int dim, int spacedim = dim, typename number = double>
friend class DoFInfoBox< dim, DoFInfo< dim, spacedim, number > >
friend

Definition at line 204 of file dof_info.h.

Member Data Documentation

◆ cell

template<int dim, int spacedim = dim, typename number = double>
Triangulation<dim, spacedim>::cell_iterator MeshWorker::DoFInfo< dim, spacedim, number >::cell

The current cell.

Definition at line 79 of file dof_info.h.

◆ face

template<int dim, int spacedim = dim, typename number = double>
Triangulation<dim, spacedim>::face_iterator MeshWorker::DoFInfo< dim, spacedim, number >::face

The current face.

Definition at line 82 of file dof_info.h.

◆ face_number

template<int dim, int spacedim = dim, typename number = double>
unsigned int MeshWorker::DoFInfo< dim, spacedim, number >::face_number

The number of the current face on the current cell.

This number is numbers::invalid_unsigned_int if the info object was initialized with a cell.

Definition at line 90 of file dof_info.h.

◆ sub_number

template<int dim, int spacedim = dim, typename number = double>
unsigned int MeshWorker::DoFInfo< dim, spacedim, number >::sub_number

The number of the current subface on the current face

This number is numbers::invalid_unsigned_int if the info object was not initialized with a subface.

Definition at line 98 of file dof_info.h.

◆ indices

template<int dim, int spacedim = dim, typename number = double>
std::vector<types::global_dof_index> MeshWorker::DoFInfo< dim, spacedim, number >::indices

The DoF indices of the current cell

Definition at line 104 of file dof_info.h.

◆ indices_by_block

template<int dim, int spacedim = dim, typename number = double>
std::vector<std::vector<types::global_dof_index> > MeshWorker::DoFInfo< dim, spacedim, number >::indices_by_block

The DoF indices on the current cell, organized by local blocks. The size of this vector is zero, unless local blocks are used.

Definition at line 110 of file dof_info.h.

◆ block_info

template<int dim, int spacedim = dim, typename number = double>
SmartPointer<const BlockInfo, DoFInfo<dim, spacedim> > MeshWorker::DoFInfo< dim, spacedim, number >::block_info

The block structure of the system.

Definition at line 172 of file dof_info.h.

◆ level_cell

template<int dim, int spacedim = dim, typename number = double>
bool MeshWorker::DoFInfo< dim, spacedim, number >::level_cell

The structure refers to a cell with level data instead of active data.

Definition at line 177 of file dof_info.h.

◆ indices_org

template<int dim, int spacedim = dim, typename number = double>
std::vector<types::global_dof_index> MeshWorker::DoFInfo< dim, spacedim, number >::indices_org
private

Auxiliary vector.

Definition at line 197 of file dof_info.h.

◆ aux_local_indices

template<int dim, int spacedim = dim, typename number = double>
BlockIndices MeshWorker::DoFInfo< dim, spacedim, number >::aux_local_indices
private

An auxiliary local BlockIndices object created if block_info is not set. It contains just a single block of the size of degrees of freedom per cell.

Definition at line 204 of file dof_info.h.

◆ J

std::vector<double > MeshWorker::LocalResults< double >::J
privateinherited

The local numbers, computed on a cell or on a face.

Definition at line 402 of file local_results.h.

◆ R

std::vector<BlockVector<double > > MeshWorker::LocalResults< double >::R
privateinherited

The local vectors. This field is public, so that local integrators can write to it.

Definition at line 408 of file local_results.h.

◆ M1

std::vector<MatrixBlock<FullMatrix<double > > > MeshWorker::LocalResults< double >::M1
privateinherited

The local matrices coupling degrees of freedom in the cell itself or within the first cell on a face.

Definition at line 414 of file local_results.h.

◆ M2

std::vector<MatrixBlock<FullMatrix<double > > > MeshWorker::LocalResults< double >::M2
privateinherited

The local matrices coupling test functions on the cell with trial functions on the other cell.

Only used on interior faces.

Definition at line 422 of file local_results.h.

◆ quadrature_data

Table<2, double > MeshWorker::LocalResults< double >::quadrature_data
privateinherited

Values in quadrature points for writing into patch data.

Definition at line 427 of file local_results.h.


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