deal.II version GIT relicensing-2167-g9622207b8f 2024-11-21 12:40:00+00:00
|
#include <deal.II/fe/fe_coupling_values.h>
Public Member Functions | |
RenumberingData (const unsigned int n_inner_dofs=numbers::invalid_unsigned_int, const unsigned int n_inner_quadrature_points=numbers::invalid_unsigned_int, const std::vector< unsigned int > &dof_renumbering={}, const std::vector< unsigned int > &quadrature_renumbering={}) | |
RenumberingData (const RenumberingData &other)=delete | |
Public Attributes | |
const unsigned int | n_inner_dofs |
const unsigned int | n_dofs |
const unsigned int | n_inner_quadrature_points |
const unsigned int | n_quadrature_points |
const std::vector< unsigned int > | dof_renumbering |
const std::vector< unsigned int > | quadrature_renumbering |
Threads::ThreadLocalStorage< GeneralDataStorage > | data_storage |
A class that stores the renumbering of degrees of freedom and quadrature points for the RenumberedView class. This class is common to all possible renumbered views, and therefore it can be shared between all views that use the same set of renumbering vectors.
The renumbering is stored in two vectors, one for the degrees of freedom and one for the quadrature points, and it is used by the FEValuesViews::RenumberedView class.
Definition at line 50 of file fe_coupling_values.h.
FEValuesViews::RenumberingData::RenumberingData | ( | const unsigned int | n_inner_dofs = numbers::invalid_unsigned_int , |
const unsigned int | n_inner_quadrature_points = numbers::invalid_unsigned_int , |
||
const std::vector< unsigned int > & | dof_renumbering = {} , |
||
const std::vector< unsigned int > & | quadrature_renumbering = {} |
||
) |
Construct a new renumbering data object.
The dof_renumbering
vector is used to renumber the degrees of freedom, while the quadrature_renumbering
vector is used to renumber the quadrature points. An empty renumbering vector simply means that no renumbering is performed.
numbers::invalid_unsigned_int
values, which are ignored, and produce zero values, gradients, hessians, etc. for the corresponding shape function.An example of the renumbering ordering is the following. Assume that you have an FE_Q(1) finite element in dimension two (i.e., four degrees of freedom), and that you are manually taking care of an additional degree of freedom (say, a custom shape function in the middle of the cell), which, for your own convenience, should be numbered locally in the middle of the others. You would like your loops on degrees of freedom to run over all degrees of freedom, and to have the same structure as if the additional degree of freedom was not there. Then the renumbering data object should look like this:
Using this RenumberingData object, the RenumberedView will return zero when we ask for values, gradients, etc., of the shape function with index two.
|
delete |
Make sure we never copy this object, for performance reasons.
const unsigned int FEValuesViews::RenumberingData::n_inner_dofs |
The number of dofs in the underlying view (before any renumbering).
Definition at line 105 of file fe_coupling_values.h.
const unsigned int FEValuesViews::RenumberingData::n_dofs |
The number of dofs in the renumbered view.
Definition at line 110 of file fe_coupling_values.h.
const unsigned int FEValuesViews::RenumberingData::n_inner_quadrature_points |
The number of quadrature points in the underlying view (before any renumbering).
Definition at line 116 of file fe_coupling_values.h.
const unsigned int FEValuesViews::RenumberingData::n_quadrature_points |
The number of quadrature points in the renumbered view.
Definition at line 121 of file fe_coupling_values.h.
const std::vector<unsigned int> FEValuesViews::RenumberingData::dof_renumbering |
The renumbering of degrees of freedom.
Definition at line 126 of file fe_coupling_values.h.
const std::vector<unsigned int> FEValuesViews::RenumberingData::quadrature_renumbering |
The renumbering of quadrature points.
Definition at line 131 of file fe_coupling_values.h.
|
mutable |
General data storage to store temporary vectors.
When the renumbering vectors are non empty, the RenumberedView class may need to construct temporary vectors to store the values of the solution and/or of its gradients with the sizes given by the underlying view object. Unfortunately, we don't know beforehand the Number types with which the vectors will be instantiated, so we cannot use a simple cache internally, and we use a GeneralDataStorage object to avoid allocating memory at each call.
Definition at line 144 of file fe_coupling_values.h.