17 #ifndef __deal2__dof_accessor_h
18 #define __deal2__dof_accessor_h
21 #include <deal.II/base/config.h>
22 #include <deal.II/grid/tria_accessor.h>
23 #include <deal.II/dofs/dof_handler.h>
24 #include <deal.II/hp/dof_handler.h>
28 DEAL_II_NAMESPACE_OPEN
32 template <
typename number>
class Vector;
44 struct Implementation;
49 struct Implementation;
52 struct Implementation;
60 struct Implementation;
92 template <
int structdim,
int dim,
int spacedim>
100 typedef ::TriaAccessor<structdim,dim,spacedim>
BaseClass;
109 template <
int dim,
int spacedim>
188 template <
int structdim,
class DH,
bool level_dof_access>
214 typename ::internal::DoFAccessor::Inheritance<structdim, dimension, space_dimension>::BaseClass
242 const DH *local_data);
265 template <
int structdim2,
int dim2,
int spacedim2>
274 template <
int dim2,
class DH2,
bool level_dof_access2>
282 template <
bool level_dof_access2>
300 template <
bool level_dof_access2>
338 child (
const unsigned int c)
const;
349 typename ::internal::DoFHandler::Iterators<DH, level_dof_access>::line_iterator
350 line (
const unsigned int i)
const;
361 typename ::internal::DoFHandler::Iterators<DH, level_dof_access>::quad_iterator
362 quad (
const unsigned int i)
const;
412 void get_dof_indices (std::vector<types::global_dof_index> &dof_indices,
413 const unsigned int fe_index = DH::default_fe_index)
const;
422 std::vector<types::global_dof_index> &dof_indices,
423 const unsigned int fe_index = DH::default_fe_index)
const;
429 const std::vector<types::global_dof_index> &dof_indices,
430 const unsigned int fe_index = DH::default_fe_index);
469 const unsigned int i,
470 const unsigned int fe_index = DH::default_fe_index)
const;
478 const unsigned int vertex,
479 const unsigned int i,
480 const unsigned int fe_index = DH::default_fe_index)
const;
537 const unsigned int fe_index = DH::default_fe_index)
const;
624 get_fe (
const unsigned int fe_index)
const;
701 template <
int dim2,
class DH2,
bool level_dof_access2>
708 template <
int dim2,
class DH2,
bool level_dof_access2>
754 const unsigned int fe_index = DH::default_fe_index)
const;
795 const unsigned int i,
797 const unsigned int fe_index = DH::default_fe_index)
const;
799 void set_mg_vertex_dof_index (
const int level,
const unsigned int vertex,
const unsigned int i,
const types::global_dof_index index,
const unsigned int fe_index = DH::default_fe_index)
const;
807 template <
int,
class,
bool>
friend class DoFAccessor;
838 friend struct ::internal::DoFHandler::Policy::Implementation;
839 friend struct ::internal::DoFHandler::Implementation;
840 friend struct ::internal::hp::DoFHandler::Implementation;
841 friend struct ::internal::DoFCellAccessor::Implementation;
842 friend struct ::internal::DoFAccessor::Implementation;
857 template <
template <
int,
int>
class DH,
int spacedim,
bool level_dof_access>
975 template <
int structdim2,
int dim2,
int spacedim2>
984 template <
int dim2,
class DH2,
bool level_dof_access2>
996 const DH<1,spacedim> &
1009 template <
bool level_dof_access2>
1040 child (
const unsigned int c)
const;
1051 typename ::internal::DoFHandler::Iterators<DH<1,spacedim>, level_dof_access>::line_iterator
1052 line (
const unsigned int i)
const;
1063 typename ::internal::DoFHandler::Iterators<DH<1,spacedim>, level_dof_access>::quad_iterator
1064 quad (
const unsigned int i)
const;
1135 void get_dof_indices (std::vector<types::global_dof_index> &dof_indices,
1136 const unsigned int fe_index = AccessorData::default_fe_index)
const;
1175 const unsigned int i,
1176 const unsigned int fe_index = AccessorData::default_fe_index)
const;
1233 const unsigned int fe_index = AccessorData::default_fe_index)
const;
1315 get_fe (
const unsigned int fe_index)
const;
1371 template <
int dim2,
class DH2,
bool level_dof_access2>
1377 template <
int dim2,
class DH2,
bool level_dof_access2>
1423 const unsigned int fe_index = AccessorData::default_fe_index)
const;
1462 const unsigned int i,
1464 const unsigned int fe_index = AccessorData::default_fe_index)
const;
1482 friend struct ::internal::DoFHandler::Policy::Implementation;
1483 friend struct ::internal::DoFHandler::Implementation;
1484 friend struct ::internal::hp::DoFHandler::Implementation;
1485 friend struct ::internal::DoFCellAccessor::Implementation;
1504 template <
class DH,
bool level_dof_access>
1511 static const unsigned int dim = DH::dimension;
1516 static const unsigned int spacedim = DH::space_dimension;
1574 template <
int structdim2,
int dim2,
int spacedim2>
1583 template <
int dim2,
class DH2,
bool level_dof_access2>
1620 neighbor (
const unsigned int)
const;
1632 child (
const unsigned int)
const;
1643 face (
const unsigned int i)
const;
1658 const unsigned int subface_no)
const;
1699 template <
class InputVector,
typename number>
1731 template <
class InputVector,
typename ForwardIterator>
1733 ForwardIterator local_values_begin,
1734 ForwardIterator local_values_end)
const;
1767 template <
class InputVector,
typename ForwardIterator>
1769 const InputVector &values,
1770 ForwardIterator local_values_begin,
1771 ForwardIterator local_values_end)
const;
1807 template <
class OutputVector,
typename number>
1809 OutputVector &values)
const;
1843 template <
class InputVector,
typename number>
1936 template <
class OutputVector,
typename number>
1938 OutputVector &values)
const;
1956 template <
typename number,
typename OutputVector>
1959 OutputVector &global_destination)
const;
1974 template <
typename ForwardIterator,
typename OutputVector>
1977 ForwardIterator local_source_end,
1978 OutputVector &global_destination)
const;
1998 template <
typename ForwardIterator,
typename OutputVector>
2001 ForwardIterator local_source_begin,
2002 ForwardIterator local_source_end,
2003 OutputVector &global_destination)
const;
2016 template <
typename number,
typename OutputMatrix>
2019 OutputMatrix &global_destination)
const;
2027 template <
typename number,
typename OutputMatrix,
typename OutputVector>
2031 OutputMatrix &global_matrix,
2032 OutputVector &global_vector)
const;
2097 void get_dof_indices (std::vector<types::global_dof_index> &dof_indices)
const;
2155 void set_dof_indices (
const std::vector<types::global_dof_index> &dof_indices);
2198 friend struct ::internal::DoFCellAccessor::Implementation;
2202 template <
int sd,
class DH,
bool lda>
2212 DEAL_II_NAMESPACE_CLOSE
2215 #include "dof_accessor.templates.h"
void set_dof_indices(const std::vector< types::global_dof_index > &dof_indices)
types::global_dof_index mg_dof_index(const int level, const unsigned int i) const
TriaIterator< DoFCellAccessor< DH, level_dof_access > > child(const unsigned int) const
::TriaAccessor< structdim, dim, spacedim > BaseClass
TriaIterator< DoFCellAccessor< DH, level_dof_access > > neighbor(const unsigned int) const
void distribute_local_to_global(const Vector< number > &local_source, OutputVector &global_destination) const
const DH & get_dof_handler() const
void set_active_fe_index(const unsigned int i)
DH< 1, spacedim > * dof_handler
DoFAccessor< structdim, DH, level_dof_access > & operator=(const DoFAccessor< structdim, DH, level_dof_access > &da)
TriaIterator< DoFAccessor< structdim, DH, level_dof_access > > parent() const
unsigned int active_fe_index() const
bool operator==(const DoFAccessor< dim2, DH2, level_dof_access2 > &) const
void set_dof_handler(DH *dh)
void get_active_or_mg_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
typename::internal::DoFAccessor::Inheritance< structdim, dimension, space_dimension >::BaseClass BaseClass
const Triangulation< dim, spacedim > * tria
DH< 1, spacedim > AccessorData
typename::internal::DoFHandler::Iterators< DH, level_dof_access >::line_iterator line(const unsigned int i) const
DeclException0(ExcInvalidObject)
types::global_dof_index mg_vertex_dof_index(const int level, const unsigned int vertex, const unsigned int i, const unsigned int fe_index=DH::default_fe_index) const
TriaIterator< DoFAccessor< structdim, DH, level_dof_access > > child(const unsigned int c) const
void set_mg_dof_indices(const int level, const std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DH::default_fe_index)
types::global_dof_index dof_index(const unsigned int i, const unsigned int fe_index=DH::default_fe_index) const
DoFCellAccessor< DH, level_dof_access > & operator=(const DoFCellAccessor< DH, level_dof_access > &da)
static const unsigned int dimension
void set_dof_values_by_interpolation(const Vector< number > &local_values, OutputVector &values) const
unsigned int global_dof_index
void get_mg_dof_indices(const int level, std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DH::default_fe_index) const
static const unsigned int space_dimension
void get_dof_values(const InputVector &values, Vector< number > &local_values) const
unsigned int vertex_index(const unsigned int i) const
void set_mg_dof_indices(const std::vector< types::global_dof_index > &dof_indices)
void set_dof_values(const Vector< number > &local_values, OutputVector &values) const
DoFAccessor< DH::dimension, DH, level_dof_access > BaseClass
::CellAccessor< dim, spacedim > BaseClass
static const unsigned int dim
bool fe_index_is_active(const unsigned int fe_index) const
types::global_dof_index vertex_dof_index(const unsigned int vertex, const unsigned int i, const unsigned int fe_index=DH::default_fe_index) const
void get_interpolated_dof_values(const InputVector &values, Vector< number > &interpolated_values) const
TriaIterator< DoFCellAccessor< DH, level_dof_access > > neighbor_child_on_subface(const unsigned int face_no, const unsigned int subface_no) const
const FiniteElement< DH::dimension, DH::space_dimension > & get_fe(const unsigned int fe_index) const
unsigned int nth_active_fe_index(const unsigned int n) const
void set_dof_index(const unsigned int i, const types::global_dof_index index, const unsigned int fe_index=DH::default_fe_index) const
void update_cell_dof_indices_cache() const
TriaIterator< DoFCellAccessor< DH, level_dof_access > > parent() const
static const unsigned int spacedim
TriaIterator< DoFAccessor< DH::dimension-1, DH, level_dof_access > > face(const unsigned int i) const
bool operator!=(const DoFAccessor< dim2, DH2, level_dof_access2 > &) const
static bool is_level_cell()
const FiniteElement< DH::dimension, DH::space_dimension > & get_fe() const
void get_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
void get_dof_indices(std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DH::default_fe_index) const
void get_mg_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
DoFCellAccessor(const Triangulation< DH::dimension, DH::space_dimension > *tria, const int level, const int index, const AccessorData *local_data)
TriaAccessor< 0, 1, spacedim > BaseClass
void copy_from(const DoFAccessor< structdim, DH, level_dof_access2 > &a)
void set_vertex_dof_index(const unsigned int vertex, const unsigned int i, const types::global_dof_index index, const unsigned int fe_index=DH::default_fe_index) const
typename::internal::DoFHandler::Iterators< DH, level_dof_access >::quad_iterator quad(const unsigned int i) const
Point< spacedim > & vertex(const unsigned int i) const
unsigned int n_active_fe_indices() const