Reference documentation for deal.II version Git 191d06ed00 2021-05-11 21:15:49 -0400
\(\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\}}\)
Static Public Member Functions | List of all members
internal::DoFHandlerImplementation::Policy::Implementation Struct Reference

Static Public Member Functions

template<int dim, int spacedim>
static std::map< types::global_dof_index, types::global_dof_indexcompute_vertex_dof_identities (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int spacedim>
static std::map< types::global_dof_index, types::global_dof_indexcompute_line_dof_identities (const DoFHandler< 1, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static std::map< types::global_dof_index, types::global_dof_indexcompute_line_dof_identities (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static std::map< types::global_dof_index, types::global_dof_indexcompute_quad_dof_identities (const DoFHandler< dim, spacedim > &dof_handler)
 
template<int spacedim>
static std::map< types::global_dof_index, types::global_dof_indexcompute_quad_dof_identities (const DoFHandler< 3, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void compute_dof_identities (std::vector< std::map< types::global_dof_index, types::global_dof_index >> &all_constrained_indices, const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static types::global_dof_index enumerate_dof_indices_for_renumbering (std::vector< types::global_dof_index > &new_dof_indices, const std::vector< std::map< types::global_dof_index, types::global_dof_index >> &all_constrained_indices, const DoFHandler< dim, spacedim > &)
 
template<int dim, int spacedim>
static types::global_dof_index unify_dof_indices (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int n_dofs_before_identification, const bool check_validity)
 
template<int dim, int spacedim>
static void merge_invalid_vertex_dofs_on_ghost_interfaces (DoFHandler< dim, spacedim > &dof_handler)
 
template<int spacedim>
static void merge_invalid_line_dofs_on_ghost_interfaces (DoFHandler< 1, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void merge_invalid_line_dofs_on_ghost_interfaces (DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void merge_invalid_quad_dofs_on_ghost_interfaces (DoFHandler< dim, spacedim > &dof_handler)
 
template<int spacedim>
static void merge_invalid_quad_dofs_on_ghost_interfaces (DoFHandler< 3, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void merge_invalid_dof_indices_on_ghost_interfaces (DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static types::global_dof_index distribute_dofs (const types::subdomain_id subdomain_id, DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void invalidate_dof_indices_on_weaker_ghost_cells_for_renumbering (std::vector< types::global_dof_index > &renumbering, const types::subdomain_id subdomain_id, const DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static types::global_dof_index distribute_dofs_on_level (const types::subdomain_id level_subdomain_id, DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
 
template<int dim, int spacedim>
static void renumber_face_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler)
 
template<int dim, int spacedim>
static void renumber_vertex_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler, const bool check_validity)
 
template<int dim, int spacedim>
static void renumber_cell_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler)
 
template<int spacedim>
static void renumber_face_dofs (const std::vector< types::global_dof_index > &, const IndexSet &, DoFHandler< 1, spacedim > &)
 
template<int spacedim>
static void renumber_face_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< 2, spacedim > &dof_handler)
 
template<int spacedim>
static void renumber_face_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< 3, spacedim > &dof_handler)
 
template<int dim, int space_dim>
static void renumber_dofs (const std::vector< types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, const DoFHandler< dim, space_dim > &dof_handler, const bool check_validity)
 
template<int dim, int spacedim>
static void renumber_vertex_mg_dofs (const std::vector<::types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool check_validity)
 
template<int dim, int spacedim>
static void renumber_cell_mg_dofs (const std::vector<::types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler, const unsigned int level)
 
template<int spacedim>
static void renumber_face_mg_dofs (const std::vector< types::global_dof_index > &, const IndexSet &, DoFHandler< 1, spacedim > &, const unsigned int, const bool)
 
template<int spacedim>
static void renumber_face_mg_dofs (const std::vector<::types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< 2, spacedim > &dof_handler, const unsigned int level, const bool check_validity)
 
template<int spacedim>
static void renumber_face_mg_dofs (const std::vector<::types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< 3, spacedim > &dof_handler, const unsigned int level, const bool check_validity)
 
template<int dim, int spacedim>
static void renumber_mg_dofs (const std::vector<::types::global_dof_index > &new_numbers, const IndexSet &indices_we_care_about, DoFHandler< dim, spacedim > &dof_handler, const unsigned int level, const bool check_validity)
 

Detailed Description

Definition at line 204 of file dof_handler_policy.cc.

Member Function Documentation

◆ compute_vertex_dof_identities()

template<int dim, int spacedim>
static std::map<types::global_dof_index, types::global_dof_index> internal::DoFHandlerImplementation::Policy::Implementation::compute_vertex_dof_identities ( const DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Compute identities between DoFs located on vertices. Called from distribute_dofs().

Definition at line 214 of file dof_handler_policy.cc.

◆ compute_line_dof_identities() [1/2]

template<int spacedim>
static std::map<types::global_dof_index, types::global_dof_index> internal::DoFHandlerImplementation::Policy::Implementation::compute_line_dof_identities ( const DoFHandler< 1, spacedim > &  dof_handler)
inlinestatic

Compute identities between DoFs located on lines. Called from distribute_dofs().

Definition at line 374 of file dof_handler_policy.cc.

◆ compute_line_dof_identities() [2/2]

template<int dim, int spacedim>
static std::map<types::global_dof_index, types::global_dof_index> internal::DoFHandlerImplementation::Policy::Implementation::compute_line_dof_identities ( const DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Definition at line 386 of file dof_handler_policy.cc.

◆ compute_quad_dof_identities() [1/2]

template<int dim, int spacedim>
static std::map<types::global_dof_index, types::global_dof_index> internal::DoFHandlerImplementation::Policy::Implementation::compute_quad_dof_identities ( const DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Compute identities between DoFs located on quads. Called from distribute_dofs().

Definition at line 739 of file dof_handler_policy.cc.

◆ compute_quad_dof_identities() [2/2]

template<int spacedim>
static std::map<types::global_dof_index, types::global_dof_index> internal::DoFHandlerImplementation::Policy::Implementation::compute_quad_dof_identities ( const DoFHandler< 3, spacedim > &  dof_handler)
inlinestatic

Definition at line 758 of file dof_handler_policy.cc.

◆ compute_dof_identities()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::compute_dof_identities ( std::vector< std::map< types::global_dof_index, types::global_dof_index >> &  all_constrained_indices,
const DoFHandler< dim, spacedim > &  dof_handler 
)
inlinestatic

Compute the constraints that correspond to unifying DoF indices on vertices, lines, and quads. Do so in parallel.

Definition at line 902 of file dof_handler_policy.cc.

◆ enumerate_dof_indices_for_renumbering()

template<int dim, int spacedim>
static types::global_dof_index internal::DoFHandlerImplementation::Policy::Implementation::enumerate_dof_indices_for_renumbering ( std::vector< types::global_dof_index > &  new_dof_indices,
const std::vector< std::map< types::global_dof_index, types::global_dof_index >> &  all_constrained_indices,
const DoFHandler< dim, spacedim > &   
)
inlinestatic

Once degrees of freedom have been distributed on all cells, we may want to eliminate duplicates, and enumerate the remaining ones consecutively. This particular function is responsible for the latter part.

This function stores the new indices of all DoFs in ascending order in new_dof_indices, which can be used to renumber all DoFs with the renumber_dofs() function later.

This vector will contain enumerated indices, skipping invalid indices previously stored in it. Additionally, if a all_constrained_indices parameter is provided, DoF identity relations will be considered as well during the enumeration process by identifying similar DoFs on vertices, lines and quads.

Returns the final number of degrees of freedom, which is the number of all valid DoF indices in new_dof_indices.

Definition at line 964 of file dof_handler_policy.cc.

◆ unify_dof_indices()

template<int dim, int spacedim>
static types::global_dof_index internal::DoFHandlerImplementation::Policy::Implementation::unify_dof_indices ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  n_dofs_before_identification,
const bool  check_validity 
)
inlinestatic

Once degrees of freedom have been distributed on all cells, see if we can identify DoFs on neighboring cells. This function does nothing unless the DoFHandler has hp-capabilities.

Return the final number of degrees of freedom, which is the old one minus however many were identified.

Definition at line 1028 of file dof_handler_policy.cc.

◆ merge_invalid_vertex_dofs_on_ghost_interfaces()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_vertex_dofs_on_ghost_interfaces ( DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Merge invalid DoF indices on vertices located on ghost interfaces by a dominating valid one.

Definition at line 1062 of file dof_handler_policy.cc.

◆ merge_invalid_line_dofs_on_ghost_interfaces() [1/2]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_line_dofs_on_ghost_interfaces ( DoFHandler< 1, spacedim > &  dof_handler)
inlinestatic

Merge invalid DoF indices on lines located on ghost interfaces by a dominating valid one.

Definition at line 1220 of file dof_handler_policy.cc.

◆ merge_invalid_line_dofs_on_ghost_interfaces() [2/2]

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_line_dofs_on_ghost_interfaces ( DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Definition at line 1231 of file dof_handler_policy.cc.

◆ merge_invalid_quad_dofs_on_ghost_interfaces() [1/2]

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_quad_dofs_on_ghost_interfaces ( DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

Merge invalid DoF indices on quads located on ghost interfaces by a dominating valid one.

Definition at line 1493 of file dof_handler_policy.cc.

◆ merge_invalid_quad_dofs_on_ghost_interfaces() [2/2]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_quad_dofs_on_ghost_interfaces ( DoFHandler< 3, spacedim > &  dof_handler)
inlinestatic

Definition at line 1509 of file dof_handler_policy.cc.

◆ merge_invalid_dof_indices_on_ghost_interfaces()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::merge_invalid_dof_indices_on_ghost_interfaces ( DoFHandler< dim, spacedim > &  dof_handler)
inlinestatic

After DoF unification in Phase 2, we may still have invalid DoF indices left on ghost interfaces that are dominated by a FiniteElement object of an adjacent cell, which could be either a ghost cell or locally owned, whose DoF indices we did not know at the moment of unification. After the first ghost exchange in Phase 5, we know the indices of all dominating DoFs, and we have to assign those invalid entries to their corresponding global value.

This function does nothing unless the DoFHandler has hp- capabilities.

Definition at line 1653 of file dof_handler_policy.cc.

◆ distribute_dofs()

template<int dim, int spacedim>
static types::global_dof_index internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs ( const types::subdomain_id  subdomain_id,
DoFHandler< dim, spacedim > &  dof_handler 
)
inlinestatic

Distribute degrees of freedom on all cells, or on cells with the correct subdomain_id if the corresponding argument is not equal to numbers::invalid_subdomain_id. Return the total number of dofs distributed.

Definition at line 1696 of file dof_handler_policy.cc.

◆ invalidate_dof_indices_on_weaker_ghost_cells_for_renumbering()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::invalidate_dof_indices_on_weaker_ghost_cells_for_renumbering ( std::vector< types::global_dof_index > &  renumbering,
const types::subdomain_id  subdomain_id,
const DoFHandler< dim, spacedim > &  dof_handler 
)
inlinestatic

During DoF distribution, DoFs on ghost interfaces get different indices assigned by each adjacent subdomain. We need to clarify ownership of those DoFs by imposing a criterion, which is that the adjacent subdomain belonging to the processor of lowest rank prescribes its index.

Thus, we have to invalidate all those DoFs on ghost cells that belong to processors of lower rank than the current one, which is the subdomain_id parameter. Later during ghost exchange in Phase 5, these values will be overwritten by the correct one. The invalidated indices will be stored in the renumbering parameter.

Definition at line 1750 of file dof_handler_policy.cc.

◆ distribute_dofs_on_level()

template<int dim, int spacedim>
static types::global_dof_index internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs_on_level ( const types::subdomain_id  level_subdomain_id,
DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  level 
)
inlinestatic

Definition at line 1782 of file dof_handler_policy.cc.

◆ renumber_face_dofs() [1/4]

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler 
)
inlinestatic

The part of the renumber_dofs() functionality that operates on faces. This part is dimension dependent and so needs to be implemented in three separate specializations of the function.

See renumber_dofs() for the meaning of the arguments.

Definition at line 1831 of file dof_handler_policy.cc.

◆ renumber_vertex_dofs()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_vertex_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler,
const bool  check_validity 
)
inlinestatic

Definition at line 1848 of file dof_handler_policy.cc.

◆ renumber_cell_dofs()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_cell_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler 
)
inlinestatic

Definition at line 2005 of file dof_handler_policy.cc.

◆ renumber_face_dofs() [2/4]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_dofs ( const std::vector< types::global_dof_index > &  ,
const IndexSet ,
DoFHandler< 1, spacedim > &   
)
inlinestatic

Definition at line 2078 of file dof_handler_policy.cc.

◆ renumber_face_dofs() [3/4]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< 2, spacedim > &  dof_handler 
)
inlinestatic

Definition at line 2091 of file dof_handler_policy.cc.

◆ renumber_face_dofs() [4/4]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< 3, spacedim > &  dof_handler 
)
inlinestatic

Definition at line 2200 of file dof_handler_policy.cc.

◆ renumber_dofs()

template<int dim, int space_dim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_dofs ( const std::vector< types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
const DoFHandler< dim, space_dim > &  dof_handler,
const bool  check_validity 
)
inlinestatic

Implementation of DoFHandler::renumber_dofs()

If the second argument has any elements set, elements of the then the vector of new numbers do not relate to the old DoF number but instead to the index of the old DoF number within the set of locally owned DoFs.

(The IndexSet argument is not used in 1d because we only need it for parallel meshes and 1d doesn't support that right now.)

Definition at line 2397 of file dof_handler_policy.cc.

◆ renumber_vertex_mg_dofs()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_vertex_mg_dofs ( const std::vector<::types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  level,
const bool  check_validity 
)
inlinestatic

The part of the renumber_mg_dofs() functionality that is dimension independent because it renumbers the DoF indices on vertex interiors (which exist for all dimensions).

See renumber_mg_dofs() for the meaning of the arguments.

Definition at line 2449 of file dof_handler_policy.cc.

◆ renumber_cell_mg_dofs()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_cell_mg_dofs ( const std::vector<::types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  level 
)
inlinestatic

The part of the renumber_dofs() functionality that is dimension independent because it renumbers the DoF indices on cell interiors (which exist for all dimensions).

See renumber_mg_dofs() for the meaning of the arguments.

Definition at line 2506 of file dof_handler_policy.cc.

◆ renumber_face_mg_dofs() [1/3]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_mg_dofs ( const std::vector< types::global_dof_index > &  ,
const IndexSet ,
DoFHandler< 1, spacedim > &  ,
const unsigned  int,
const bool   
)
inlinestatic

The part of the renumber_mg_dofs() functionality that operates on faces. This part is dimension dependent and so needs to be implemented in three separate specializations of the function.

See renumber_mg_dofs() for the meaning of the arguments.

Definition at line 2542 of file dof_handler_policy.cc.

◆ renumber_face_mg_dofs() [2/3]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_mg_dofs ( const std::vector<::types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< 2, spacedim > &  dof_handler,
const unsigned int  level,
const bool  check_validity 
)
inlinestatic

Definition at line 2556 of file dof_handler_policy.cc.

◆ renumber_face_mg_dofs() [3/3]

template<int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_face_mg_dofs ( const std::vector<::types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< 3, spacedim > &  dof_handler,
const unsigned int  level,
const bool  check_validity 
)
inlinestatic

Definition at line 2620 of file dof_handler_policy.cc.

◆ renumber_mg_dofs()

template<int dim, int spacedim>
static void internal::DoFHandlerImplementation::Policy::Implementation::renumber_mg_dofs ( const std::vector<::types::global_dof_index > &  new_numbers,
const IndexSet indices_we_care_about,
DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  level,
const bool  check_validity 
)
inlinestatic

Definition at line 2721 of file dof_handler_policy.cc.


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