DoFTools Namespace Reference

Developer Documentation: MeltPoolDG::DoFTools Namespace Reference
Developer Documentation
MeltPoolDG::DoFTools Namespace Reference

Functions

template<int dim, typename number >
dealii::FullMatrix< number > create_dof_interpolation_matrix (const dealii::DoFHandler< dim > &dof_handler_1, const dealii::DoFHandler< dim > &dof_handler_2, const bool do_sort_lexicographically)
 
template<int dim, typename number >
void interpolate_dof_values (FECellIntegrator< dim, 1, number > &source, FECellIntegrator< dim, 1, number > &target, const dealii::FullMatrix< number > &interpolation_matrix)
 
template dealii::FullMatrix< double > create_dof_interpolation_matrix (const dealii::DoFHandler< 1 > &, const dealii::DoFHandler< 1 > &, const bool)
 
template dealii::FullMatrix< double > create_dof_interpolation_matrix (const dealii::DoFHandler< 2 > &, const dealii::DoFHandler< 2 > &, const bool)
 
template dealii::FullMatrix< double > create_dof_interpolation_matrix (const dealii::DoFHandler< 3 > &, const dealii::DoFHandler< 3 > &, const bool)
 
template void interpolate_dof_values (FECellIntegrator< 1, 1, double > &, FECellIntegrator< 1, 1, double > &, const dealii::FullMatrix< double > &)
 
template void interpolate_dof_values (FECellIntegrator< 2, 1, double > &, FECellIntegrator< 2, 1, double > &, const dealii::FullMatrix< double > &)
 
template void interpolate_dof_values (FECellIntegrator< 3, 1, double > &, FECellIntegrator< 3, 1, double > &, const dealii::FullMatrix< double > &)
 

Function Documentation

◆ create_dof_interpolation_matrix() [1/4]

template dealii::FullMatrix< double > MeltPoolDG::DoFTools::create_dof_interpolation_matrix ( const dealii::DoFHandler< 1 > &  ,
const dealii::DoFHandler< 1 > &  ,
const bool   
)

◆ create_dof_interpolation_matrix() [2/4]

template dealii::FullMatrix< double > MeltPoolDG::DoFTools::create_dof_interpolation_matrix ( const dealii::DoFHandler< 2 > &  ,
const dealii::DoFHandler< 2 > &  ,
const bool   
)

◆ create_dof_interpolation_matrix() [3/4]

template dealii::FullMatrix< double > MeltPoolDG::DoFTools::create_dof_interpolation_matrix ( const dealii::DoFHandler< 3 > &  ,
const dealii::DoFHandler< 3 > &  ,
const bool   
)

◆ create_dof_interpolation_matrix() [4/4]

template<int dim, typename number >
dealii::FullMatrix< number > MeltPoolDG::DoFTools::create_dof_interpolation_matrix ( const dealii::DoFHandler< dim > &  dof_handler_1,
const dealii::DoFHandler< dim > &  dof_handler_2,
const bool  do_sort_lexicographically 
)

This function creates a n x m interpolation matrix P, to interpolate DoF values per cell from one space (n) given by

Parameters
dof_handler_1to another space (m) given py
dof_handler_2.

The interpolation of cell-wise DoF values x, using the matrix P can be done as follows _ x = P x i ij j

with i=0...n-1 and j=0...m-1.

Note
The row/column indices are sorted in lexicographic order.
Enable do_sort_lexicographically if the interpolation matrix should be used in matrix-free loops.

Copied from adaflo:

https://github.com/kronbichler/adaflo/blob/f873472c43798304bbdb7f0cbeb556061c489020/source/level_set_base.cc#L68-L137

@note semantics slightly modified

◆ interpolate_dof_values() [1/4]

template void MeltPoolDG::DoFTools::interpolate_dof_values ( FECellIntegrator< 1, 1, double > &  ,
FECellIntegrator< 1, 1, double > &  ,
const dealii::FullMatrix< double > &   
)

◆ interpolate_dof_values() [2/4]

template void MeltPoolDG::DoFTools::interpolate_dof_values ( FECellIntegrator< 2, 1, double > &  ,
FECellIntegrator< 2, 1, double > &  ,
const dealii::FullMatrix< double > &   
)

◆ interpolate_dof_values() [3/4]

template void MeltPoolDG::DoFTools::interpolate_dof_values ( FECellIntegrator< 3, 1, double > &  ,
FECellIntegrator< 3, 1, double > &  ,
const dealii::FullMatrix< double > &   
)

◆ interpolate_dof_values() [4/4]

template<int dim, typename number >
void MeltPoolDG::DoFTools::interpolate_dof_values ( FECellIntegrator< dim, 1, number > &  source,
FECellIntegrator< dim, 1, number > &  target,
const dealii::FullMatrix< number > &  interpolation_matrix 
)

Interpolate DoF values from one finite element space to another.

The function evaluates the values stored in source at the support points of its finite element space and interpolates them to the support points of the finite element space represented by target. The interpolation is performed by applying interpolation_matrix to the DoF values of source.

After the interpolation, the resulting values are submitted as DoF values to target using FECellIntegrator::submit_dof_value(). The function does not call FECellIntegrator::evaluate() on target afterwards; this must be done by the caller if values or gradients at quadrature points are required.

Parameters
sourceFECellIntegrator containing the DoF values in the source finite element space. The function calls FECellIntegrator::evaluate() with EvaluationFlags::values on this object before accessing its DoF values.
targetFECellIntegrator into which the interpolated DoF values are submitted. This object must already be reinitialized for the same cell as source.
interpolation_matrixMatrix mapping DoF values from the source finite element space to the target finite element space. Its number of rows must match target.dofs_per_cell and its number of columns must match source.dofs_per_cell. The interpolation_matrix can be computed using create_dof_interpolation_matrix().