16 #ifndef dealii_hp_dof_level_h 17 #define dealii_hp_dof_level_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/exceptions.h> 26 DEAL_II_NAMESPACE_OPEN
31 template <
int,
int>
class FECollection;
39 namespace DoFHandlerImplementation
41 struct Implementation;
44 namespace DoFCellAccessorImplementation
46 struct Implementation;
202 const unsigned int fe_index,
203 const unsigned int local_index,
219 const unsigned int fe_index,
220 const unsigned int local_index)
const;
234 const unsigned int fe_index)
const;
241 const unsigned int fe_index);
256 const unsigned int dofs_per_cell)
const;
268 template <
class Archive>
270 const unsigned int version);
281 template <
int dim,
int spacedim>
282 void compress_data (const ::hp::FECollection<dim,spacedim> &fe_collection);
292 template <
int dim,
int spacedim>
293 void uncompress_data (const ::hp::FECollection<dim,spacedim> &fe_collection);
320 template <
int,
int>
friend class ::hp::DoFHandler;
321 friend struct ::internal::hp::DoFHandlerImplementation::Implementation;
322 friend struct ::internal::DoFCellAccessorImplementation::Implementation;
352 const unsigned int fe_index,
353 const unsigned int local_index)
const 362 ExcMessage (
"You are trying to access degree of freedom " 363 "information for an object on which no such " 364 "information is available"));
369 ExcMessage (
"FE index does not match that of the present cell"));
385 const unsigned int fe_index,
386 const unsigned int local_index,
397 ExcMessage (
"You are trying to access degree of freedom " 398 "information for an object on which no such " 399 "information is available"));
401 ExcMessage (
"This function can no longer be called after compressing the dof_indices array"));
403 ExcMessage (
"FE index does not match that of the present cell"));
429 const unsigned int fe_index)
const 440 const unsigned int fe_index)
451 ExcMessage (
"You are using an active_fe_index that is larger than an " 452 "internal limitation for these objects. Try to work with " 453 "hp::FECollection objects that have a more modest size."));
463 const unsigned int dofs_per_cell)
const 471 ExcMessage(
"You are trying to access an element of the cache that stores " 472 "the indices of all degrees of freedom that live on one cell. " 473 "However, this element does not exist. Did you forget to call " 474 "DoFHandler::distribute_dofs(), or did you forget to call it " 475 "again after changing the active_fe_index of one of the cells?"));
482 template <
class Archive>
498 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
static ::ExceptionBase & ExcMessage(std::string arg1)
unsigned short int active_fe_index_type
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)
unsigned int global_dof_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()
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
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
signed short int signed_active_fe_index_type
std::vector< active_fe_index_type > active_fe_indices