deal.II version GIT relicensing-2941-gbd3c83c843 2025-03-25 23:50:00+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\}}\)
Loading...
Searching...
No Matches
Classes | Public Types | Static Public Member Functions | List of all members
internal::DoFAccessorImplementation::Implementation Struct Reference

Classes

struct  DoFIndexProcessor
 
struct  MGDoFIndexProcessor
 

Public Types

using dof_index_vector_type = boost::container::small_vector<::types::global_dof_index, 27 >
 

Static Public Member Functions

template<int dim, int spacedim, int structdim, typename GlobalIndexType , typename DoFPProcessor >
static void process_dof_index (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, structdim > &, GlobalIndexType &global_index, const DoFPProcessor &process)
 
template<int dim, int spacedim, int structdim>
static std::pair< unsigned int, unsigned intprocess_object_range (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const std::integral_constant< int, structdim > &)
 
template<int dim, int spacedim, int structdim, bool level_dof_access>
static std::pair< unsigned int, unsigned intprocess_object_range (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > accessor, const types::fe_index fe_index)
 
template<int dim, int spacedim, int structdim>
static std::pair< unsigned int, unsigned intprocess_object_range (::DoFInvalidAccessor< structdim, dim, spacedim >, const unsigned int)
 
template<int dim, int spacedim, int structdim, typename DoFProcessor , typename DoFMapping >
static void process_object (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const DoFMapping &mapping, const std::integral_constant< int, structdim > &dd, types::global_dof_index *&dof_indices_ptr, const DoFProcessor &process)
 
template<int dim, int spacedim, int structdim>
static void set_dof_index (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, structdim > &dd, const types::global_dof_index global_index)
 
template<int dim, int spacedim, int structdim>
static types::global_dof_index get_dof_index (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, structdim > &dd)
 
template<int dim, int spacedim>
static types::global_dof_indexmg_vertex_dof_index (DoFHandler< dim, spacedim > &dof_handler, const int level, const unsigned int vertex_index, const unsigned int i)
 
template<int dim, int spacedim, int structdim>
static unsigned int n_active_fe_indices (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const std::integral_constant< int, structdim > &)
 
template<int dim, int spacedim, int structdim>
static types::fe_index nth_active_fe_index (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const unsigned int local_index, const std::integral_constant< int, structdim > &)
 
template<int dim, int spacedim, int structdim>
static std::set< types::fe_indexget_active_fe_indices (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const std::integral_constant< int, structdim > &t)
 
template<int dim, int spacedim, int structdim>
static bool fe_index_is_active (const DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const types::fe_index fe_index, const std::integral_constant< int, structdim > &)
 
template<typename InputVector , typename ForwardIterator >
static void extract_subvector_to (const InputVector &values, const types::global_dof_index *cache, const types::global_dof_index *cache_end, ForwardIterator local_values_begin)
 
static std::vector< unsigned intsort_indices (const types::global_dof_index *v_begin, const types::global_dof_index *v_end)
 
template<typename ForwardIterator , typename Number , typename MemorySpace >
static void extract_subvector_to (const LinearAlgebra::TpetraWrappers::Vector< Number, MemorySpace > &values, const types::global_dof_index *cache_begin, const types::global_dof_index *cache_end, ForwardIterator local_values_begin)
 
template<typename ForwardIterator >
static void extract_subvector_to (const LinearAlgebra::EpetraWrappers::Vector &values, const types::global_dof_index *cache_begin, const types::global_dof_index *cache_end, ForwardIterator local_values_begin)
 
template<int dim, int spacedim, bool level_dof_access, int structdim>
static unsigned int n_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, const types::fe_index fe_index_, const bool count_level_dofs)
 
template<typename ArrayType >
static unsigned int get_array_length (const ArrayType &array)
 
static unsigned int get_array_length (const std::tuple<> &)
 
template<typename ArrayType >
static types::global_dof_indexget_array_ptr (const ArrayType &array)
 
static types::global_dof_indexget_array_ptr (const std::tuple<> &)
 
template<int dim, int spacedim, bool level_dof_access, int structdim, typename DoFIndicesType , typename DoFOperation , typename DoFProcessor >
static void process_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, const DoFIndicesType &const_dof_indices, const types::fe_index fe_index_, const DoFOperation &dof_operation, const DoFProcessor &dof_processor, const bool count_level_dofs)
 
template<int dim, int spacedim, bool level_dof_access, int structdim>
static void get_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, std::vector< types::global_dof_index > &dof_indices, const types::fe_index fe_index)
 
template<int dim, int spacedim, bool level_dof_access, int structdim>
static void set_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, const std::vector< types::global_dof_index > &dof_indices, const types::fe_index fe_index)
 
template<int dim, int spacedim, bool level_dof_access, int structdim>
static void get_mg_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, const int level, std::vector< types::global_dof_index > &dof_indices, const types::fe_index fe_index)
 
template<int dim, int spacedim, bool level_dof_access, int structdim>
static void set_mg_dof_indices (const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &accessor, const int level, const std::vector< types::global_dof_index > &dof_indices, const types::fe_index fe_index)
 
template<int dim, int spacedim>
static types::global_dof_indexget_mg_dof_index (const DoFHandler< dim, spacedim > &dof_handler, const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< dim > > &mg_level, const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< dim > > &, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, dim >)
 
template<int dim, int spacedim, std::enable_if_t<(dim > 1), int > = 0>
static types::global_dof_indexget_mg_dof_index (const DoFHandler< dim, spacedim > &dof_handler, const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< dim > > &, const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< dim > > &mg_faces, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, 1 >)
 
template<int spacedim>
static types::global_dof_indexget_mg_dof_index (const DoFHandler< 3, spacedim > &dof_handler, const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< 3 > > &, const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< 3 > > &mg_faces, const unsigned int obj_index, const types::fe_index fe_index, const unsigned int local_index, const std::integral_constant< int, 2 >)
 

Detailed Description

A class like the one with same name in tria.cc. See there for more information.

Definition at line 2352 of file dof_accessor.h.

Member Typedef Documentation

◆ dof_index_vector_type

In several applications of DoFAccessor::get_dof_values(), we want to extract some indices without having to allocate memory. We do this by setting a boost small_vector with 27 elements on the stack, and only allocate when we exceed 27. The number 27 is heuristic and allows up to quadratic shape functions on scalar problems in 3d, or linear shape functions on systems (elasticity).

Definition at line 2362 of file dof_accessor.h.

Member Function Documentation

◆ process_dof_index()

template<int dim, int spacedim, int structdim, typename GlobalIndexType , typename DoFPProcessor >
static void internal::DoFAccessorImplementation::Implementation::process_dof_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, structdim > &  ,
GlobalIndexType &  global_index,
const DoFPProcessor &  process 
)
inlinestatic

Process the local_index-th degree of freedom corresponding to the finite element specified by fe_index on the vertex with global number vertex_index to global_index.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2381 of file dof_accessor.h.

◆ process_object_range() [1/3]

template<int dim, int spacedim, int structdim>
static std::pair< unsigned int, unsigned int > internal::DoFAccessorImplementation::Implementation::process_object_range ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const std::integral_constant< int, structdim > &   
)
inlinestatic

Determine start index and number of dofs of object in global data structure.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2488 of file dof_accessor.h.

◆ process_object_range() [2/3]

template<int dim, int spacedim, int structdim, bool level_dof_access>
static std::pair< unsigned int, unsigned int > internal::DoFAccessorImplementation::Implementation::process_object_range ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access >  accessor,
const types::fe_index  fe_index 
)
inlinestatic

Definition at line 2576 of file dof_accessor.h.

◆ process_object_range() [3/3]

template<int dim, int spacedim, int structdim>
static std::pair< unsigned int, unsigned int > internal::DoFAccessorImplementation::Implementation::process_object_range ( ::DoFInvalidAccessor< structdim, dim, spacedim >  ,
const unsigned int   
)
inlinestatic

Definition at line 2590 of file dof_accessor.h.

◆ process_object()

template<int dim, int spacedim, int structdim, typename DoFProcessor , typename DoFMapping >
static void internal::DoFAccessorImplementation::Implementation::process_object ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const DoFMapping &  mapping,
const std::integral_constant< int, structdim > &  dd,
types::global_dof_index *&  dof_indices_ptr,
const DoFProcessor &  process 
)
inlinestatic

Process all dofs of an object.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2614 of file dof_accessor.h.

◆ set_dof_index()

template<int dim, int spacedim, int structdim>
static void internal::DoFAccessorImplementation::Implementation::set_dof_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, structdim > &  dd,
const types::global_dof_index  global_index 
)
inlinestatic

Set the local_index-th degree of freedom corresponding to the finite element specified by fe_index on the vertex with global number vertex_index to global_index.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2664 of file dof_accessor.h.

◆ get_dof_index()

template<int dim, int spacedim, int structdim>
static types::global_dof_index internal::DoFAccessorImplementation::Implementation::get_dof_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, structdim > &  dd 
)
inlinestatic

Get the local_index-th degree of freedom corresponding to the finite element specified by fe_index on the vertex with global number vertex_index to global_index.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2695 of file dof_accessor.h.

◆ mg_vertex_dof_index()

template<int dim, int spacedim>
static types::global_dof_index & internal::DoFAccessorImplementation::Implementation::mg_vertex_dof_index ( DoFHandler< dim, spacedim > &  dof_handler,
const int  level,
const unsigned int  vertex_index,
const unsigned int  i 
)
inlinestatic

Definition at line 2717 of file dof_accessor.h.

◆ n_active_fe_indices()

template<int dim, int spacedim, int structdim>
static unsigned int internal::DoFAccessorImplementation::Implementation::n_active_fe_indices ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const std::integral_constant< int, structdim > &   
)
inlinestatic

Return the number of different finite elements that are active on a given object such as a vertex, line, or cell.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2743 of file dof_accessor.h.

◆ nth_active_fe_index()

template<int dim, int spacedim, int structdim>
static types::fe_index internal::DoFAccessorImplementation::Implementation::nth_active_fe_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const unsigned int  local_index,
const std::integral_constant< int, structdim > &   
)
inlinestatic

Return the FE index of the n-th finite element active on a given object such as a vertex, line, or cell.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2782 of file dof_accessor.h.

◆ get_active_fe_indices()

template<int dim, int spacedim, int structdim>
static std::set< types::fe_index > internal::DoFAccessorImplementation::Implementation::get_active_fe_indices ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const std::integral_constant< int, structdim > &  t 
)
inlinestatic

Returns all active FE indices on a given object such as a vertex, line, or cell.

The size of the returned set equals the number of finite elements that are active on this vertex.

The template argument structdim indicates the dimensionality of the object on which we seek to know the DoF index. For example, if structdim==0, then we are looking to get a DoF index on a vertex of the indicated cell.

Definition at line 2834 of file dof_accessor.h.

◆ fe_index_is_active()

template<int dim, int spacedim, int structdim>
static bool internal::DoFAccessorImplementation::Implementation::fe_index_is_active ( const DoFHandler< dim, spacedim > &  dof_handler,
const unsigned int  obj_level,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const std::integral_constant< int, structdim > &   
)
inlinestatic

Definition at line 2863 of file dof_accessor.h.

◆ extract_subvector_to() [1/3]

template<typename InputVector , typename ForwardIterator >
static void internal::DoFAccessorImplementation::Implementation::extract_subvector_to ( const InputVector &  values,
const types::global_dof_index cache,
const types::global_dof_index cache_end,
ForwardIterator  local_values_begin 
)
inlinestatic

Definition at line 2895 of file dof_accessor.h.

◆ sort_indices()

static std::vector< unsigned int > internal::DoFAccessorImplementation::Implementation::sort_indices ( const types::global_dof_index v_begin,
const types::global_dof_index v_end 
)
inlinestatic

Definition at line 2907 of file dof_accessor.h.

◆ extract_subvector_to() [2/3]

template<typename ForwardIterator , typename Number , typename MemorySpace >
static void internal::DoFAccessorImplementation::Implementation::extract_subvector_to ( const LinearAlgebra::TpetraWrappers::Vector< Number, MemorySpace > &  values,
const types::global_dof_index cache_begin,
const types::global_dof_index cache_end,
ForwardIterator  local_values_begin 
)
inlinestatic

Definition at line 2929 of file dof_accessor.h.

◆ extract_subvector_to() [3/3]

template<typename ForwardIterator >
static void internal::DoFAccessorImplementation::Implementation::extract_subvector_to ( const LinearAlgebra::EpetraWrappers::Vector values,
const types::global_dof_index cache_begin,
const types::global_dof_index cache_end,
ForwardIterator  local_values_begin 
)
inlinestatic

Definition at line 2959 of file dof_accessor.h.

◆ n_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim>
static unsigned int internal::DoFAccessorImplementation::Implementation::n_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
const types::fe_index  fe_index_,
const bool  count_level_dofs 
)
inlinestatic

Loop over all degrees of freedom of the object described by the provided accessor and fe_index and count them.

Definition at line 2989 of file dof_accessor.h.

◆ get_array_length() [1/2]

template<typename ArrayType >
static unsigned int internal::DoFAccessorImplementation::Implementation::get_array_length ( const ArrayType &  array)
inlinestatic

Definition at line 3074 of file dof_accessor.h.

◆ get_array_length() [2/2]

static unsigned int internal::DoFAccessorImplementation::Implementation::get_array_length ( const std::tuple<> &  )
inlinestatic

Definition at line 3080 of file dof_accessor.h.

◆ get_array_ptr() [1/2]

template<typename ArrayType >
static types::global_dof_index * internal::DoFAccessorImplementation::Implementation::get_array_ptr ( const ArrayType &  array)
inlinestatic

Definition at line 3087 of file dof_accessor.h.

◆ get_array_ptr() [2/2]

static types::global_dof_index * internal::DoFAccessorImplementation::Implementation::get_array_ptr ( const std::tuple<> &  )
inlinestatic

Definition at line 3093 of file dof_accessor.h.

◆ process_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim, typename DoFIndicesType , typename DoFOperation , typename DoFProcessor >
static void internal::DoFAccessorImplementation::Implementation::process_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
const DoFIndicesType &  const_dof_indices,
const types::fe_index  fe_index_,
const DoFOperation &  dof_operation,
const DoFProcessor &  dof_processor,
const bool  count_level_dofs 
)
inlinestatic

Loop over all degrees of freedom of the object described by the provided accessor and fe_index and perform the static functions provided by DoFOperation (set/get) on these.

Definition at line 3113 of file dof_accessor.h.

◆ get_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim>
static void internal::DoFAccessorImplementation::Implementation::get_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
std::vector< types::global_dof_index > &  dof_indices,
const types::fe_index  fe_index 
)
inlinestatic

Definition at line 3405 of file dof_accessor.h.

◆ set_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim>
static void internal::DoFAccessorImplementation::Implementation::set_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
const std::vector< types::global_dof_index > &  dof_indices,
const types::fe_index  fe_index 
)
inlinestatic

Definition at line 3424 of file dof_accessor.h.

◆ get_mg_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim>
static void internal::DoFAccessorImplementation::Implementation::get_mg_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
const int  level,
std::vector< types::global_dof_index > &  dof_indices,
const types::fe_index  fe_index 
)
inlinestatic

Definition at line 3454 of file dof_accessor.h.

◆ set_mg_dof_indices()

template<int dim, int spacedim, bool level_dof_access, int structdim>
static void internal::DoFAccessorImplementation::Implementation::set_mg_dof_indices ( const ::DoFAccessor< structdim, dim, spacedim, level_dof_access > &  accessor,
const int  level,
const std::vector< types::global_dof_index > &  dof_indices,
const types::fe_index  fe_index 
)
inlinestatic

Definition at line 3476 of file dof_accessor.h.

◆ get_mg_dof_index() [1/3]

template<int dim, int spacedim>
static types::global_dof_index & internal::DoFAccessorImplementation::Implementation::get_mg_dof_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< dim > > &  mg_level,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< dim > > &  ,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, dim >   
)
inlinestatic

Definition at line 3508 of file dof_accessor.h.

◆ get_mg_dof_index() [2/3]

template<int dim, int spacedim, std::enable_if_t<(dim > 1), int > = 0>
static types::global_dof_index & internal::DoFAccessorImplementation::Implementation::get_mg_dof_index ( const DoFHandler< dim, spacedim > &  dof_handler,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< dim > > &  ,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< dim > > &  mg_faces,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, 1 >   
)
inlinestatic

Definition at line 3533 of file dof_accessor.h.

◆ get_mg_dof_index() [3/3]

template<int spacedim>
static types::global_dof_index & internal::DoFAccessorImplementation::Implementation::get_mg_dof_index ( const DoFHandler< 3, spacedim > &  dof_handler,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFLevel< 3 > > &  ,
const std::unique_ptr< internal::DoFHandlerImplementation::DoFFaces< 3 > > &  mg_faces,
const unsigned int  obj_index,
const types::fe_index  fe_index,
const unsigned int  local_index,
const std::integral_constant< int, 2 >   
)
inlinestatic

Definition at line 3555 of file dof_accessor.h.


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