16 #ifndef dealii_hp_dof_level_h 17 #define dealii_hp_dof_level_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 27 DEAL_II_NAMESPACE_OPEN
42 namespace DoFHandlerImplementation
44 struct Implementation;
47 namespace DoFCellAccessorImplementation
49 struct Implementation;
222 const unsigned int fe_index,
223 const unsigned int local_index,
239 const unsigned int fe_index,
240 const unsigned int local_index)
const;
254 const unsigned int fe_index)
const;
261 const unsigned int fe_index);
275 const unsigned int fe_index);
302 const unsigned int dofs_per_cell)
const;
315 template <
class Archive>
317 serialize(Archive &ar,
const unsigned int version);
328 template <
int dim,
int spacedim>
331 const ::hp::FECollection<dim, spacedim> &fe_collection);
341 template <
int dim,
int spacedim>
344 const ::hp::FECollection<dim, spacedim> &fe_collection);
373 friend class ::hp::DoFHandler;
374 friend struct ::internal::hp::DoFHandlerImplementation::
376 friend struct ::internal::DoFCellAccessorImplementation::
387 return (static_cast<signed_active_fe_index_type>(
active_fe_index) < 0);
406 const unsigned int fe_index,
407 const unsigned int local_index)
const 416 ExcMessage(
"You are trying to access degree of freedom " 417 "information for an object on which no such " 418 "information is available"));
424 ExcMessage(
"FE index does not match that of the present cell"));
438 const unsigned int fe_index,
439 const unsigned int local_index,
450 ExcMessage(
"You are trying to access degree of freedom " 451 "information for an object on which no such " 452 "information is available"));
456 "This function can no longer be called after compressing the dof_indices array"));
458 ExcMessage(
"FE index does not match that of the present cell"));
480 const unsigned int fe_index)
const 489 const unsigned int fe_index)
501 "You are using an active_fe_index that is larger than an " 502 "internal limitation for these objects. Try to work with " 503 "hp::FECollection objects that have a more modest size."));
506 "You are using an active_fe_index that is reserved for " 507 "internal purposes for these objects. Try to work with " 508 "hp::FECollection objects that have a more modest size."));
531 const unsigned int fe_index)
543 "You are using a future_fe_index that is larger than an " 544 "internal limitation for these objects. Try to work with " 545 "hp::FECollection objects that have a more modest size."));
548 "You are using a future_fe_index that is reserved for " 549 "internal purposes for these objects. Try to work with " 550 "hp::FECollection objects that have a more modest size."));
581 const unsigned int dofs_per_cell)
const 589 "You are trying to access an element of the cache that stores " 590 "the indices of all degrees of freedom that live on one cell. " 591 "However, this element does not exist. Did you forget to call " 592 "DoFHandler::distribute_dofs(), or did you forget to call it " 593 "again after changing the active_fe_index of one of the cells?"));
600 template <
class Archive>
615 DEAL_II_NAMESPACE_CLOSE
void uncompress_data(const ::hp::FECollection< dim, spacedim > &fe_collection)
std::size_t memory_consumption() const
static active_fe_index_type get_toggled_compression_state(const active_fe_index_type active_fe_index)
std::vector< offset_type > cell_cache_offsets
void compress_data(const ::hp::FECollection< dim, spacedim > &fe_collection)
void set_active_fe_index(const unsigned int obj_index, const unsigned int fe_index)
static ::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
const types::global_dof_index * get_cell_cache_start(const unsigned int obj_index, const unsigned int dofs_per_cell) const
unsigned short int active_fe_index_type
bool future_fe_index_set(const unsigned int obj_index) const
unsigned int future_fe_index(const unsigned int obj_index) const
void clear_future_fe_index(const unsigned int obj_index)
static ::ExceptionBase & ExcMessage(std::string arg1)
void set_dof_index(const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index, const types::global_dof_index global_index)
#define Assert(cond, exc)
std::vector< offset_type > dof_offsets
void serialize(Archive &ar, const unsigned int version)
static bool is_compressed_entry(const active_fe_index_type active_fe_index)
void normalize_active_fe_indices()
unsigned int global_dof_index
void set_future_fe_index(const unsigned int obj_index, const unsigned int fe_index)
types::global_dof_index get_dof_index(const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index) const
std::vector< types::global_dof_index > dof_indices
signed short int signed_active_fe_index_type
std::vector< types::global_dof_index > cell_dof_indices_cache
bool fe_index_is_active(const unsigned int obj_index, const unsigned int fe_index) const
unsigned int active_fe_index(const unsigned int obj_index) const
static const active_fe_index_type invalid_active_fe_index
std::vector< active_fe_index_type > future_fe_indices
std::vector< active_fe_index_type > active_fe_indices