16 #ifndef dealii_hp_dof_faces_h 17 #define dealii_hp_dof_faces_h 94 template <
int structdim>
111 std::vector<types::global_dof_index>
dofs;
125 template <
int dim,
int spacedim>
127 set_dof_index(const ::hp::DoFHandler<dim, spacedim> &dof_handler,
128 const unsigned int obj_index,
129 const unsigned int fe_index,
130 const unsigned int local_index,
132 const unsigned int obj_level);
145 template <
int dim,
int spacedim>
147 get_dof_index(const ::hp::DoFHandler<dim, spacedim> &dof_handler,
148 const unsigned int obj_index,
149 const unsigned int fe_index,
150 const unsigned int local_index,
151 const unsigned int obj_level)
const;
164 template <
int dim,
int spacedim>
167 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
168 const unsigned int obj_index)
const;
173 template <
int dim,
int spacedim>
176 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
177 const unsigned int obj_level,
178 const unsigned int obj_index,
179 const unsigned int n)
const;
185 template <
int dim,
int spacedim>
188 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
189 const unsigned int obj_index,
190 const unsigned int fe_index,
191 const unsigned int obj_level)
const;
204 template <
class Archive>
206 serialize(Archive &ar,
const unsigned int version);
264 template <
class Archive>
266 serialize(Archive &ar,
const unsigned int version);
296 template <
class Archive>
298 serialize(Archive &ar,
const unsigned int version);
333 template <
class Archive>
335 serialize(Archive &ar,
const unsigned int version);
340 template <
class Archive>
355 template <
class Archive>
372 template <
class Archive>
388 template <
int structdim>
389 template <
int dim,
int spacedim>
392 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
393 const unsigned int obj_index,
394 const unsigned int fe_index,
395 const unsigned int local_index,
396 const unsigned int )
const 400 ExcMessage(
"You need to specify a FE index when working " 401 "with hp DoFHandlers"));
405 dof_handler.get_fe(fe_index).template n_dofs_per_object<structdim>());
412 ExcMessage(
"You are trying to access degree of freedom " 413 "information for an object on which no such " 414 "information is available"));
417 ExcMessage(
"This object can not be used for cells."));
429 if (*pointer == fe_index)
430 return *(pointer + 1 + local_index);
433 dof_handler.get_fe(*pointer)
434 .template n_dofs_per_object<structdim>() +
441 template <
int structdim>
442 template <
int dim,
int spacedim>
445 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
446 const unsigned int obj_index,
447 const unsigned int fe_index,
448 const unsigned int local_index,
454 ExcMessage(
"You need to specify a FE index when working " 455 "with hp DoFHandlers"));
459 dof_handler.get_fe(fe_index).template n_dofs_per_object<structdim>());
466 ExcMessage(
"You are trying to access degree of freedom " 467 "information for an object on which no such " 468 "information is available"));
471 ExcMessage(
"This object can not be used for cells."));
483 if (*pointer == fe_index)
485 *(pointer + 1 + local_index) = global_index;
489 pointer += dof_handler.get_fe(*pointer)
490 .template n_dofs_per_object<structdim>() +
497 template <
int structdim>
498 template <
int dim,
int spacedim>
501 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
502 const unsigned int obj_index)
const 513 ExcMessage(
"This object can not be used for cells."));
520 const unsigned int starting_offset =
dof_offsets[obj_index];
522 unsigned int counter = 0;
531 pointer += dof_handler.get_fe(*pointer)
532 .template n_dofs_per_object<structdim>() +
540 template <
int structdim>
541 template <
int dim,
int spacedim>
544 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
546 const unsigned int obj_index,
547 const unsigned int n)
const 555 ExcMessage(
"You are trying to access degree of freedom " 556 "information for an object on which no such " 557 "information is available"));
560 ExcMessage(
"This object can not be used for cells."));
569 const unsigned int starting_offset =
dof_offsets[obj_index];
571 unsigned int counter = 0;
576 const unsigned int fe_index = *pointer;
578 Assert(fe_index < dof_handler.get_fe_collection().size(),
585 pointer += dof_handler.get_fe(fe_index)
586 .template n_dofs_per_object<structdim>() +
593 template <
int structdim>
594 template <
int dim,
int spacedim>
597 const ::hp::DoFHandler<dim, spacedim> &dof_handler,
598 const unsigned int obj_index,
599 const unsigned int fe_index,
600 const unsigned int )
const 605 ExcMessage(
"You need to specify a FE index when working " 606 "with hp DoFHandlers"));
613 ExcMessage(
"You are trying to access degree of freedom " 614 "information for an object on which no such " 615 "information is available"));
618 ExcMessage(
"This object can not be used for cells."));
632 else if (*pointer == fe_index)
636 dof_handler.get_fe(*pointer)
637 .template n_dofs_per_object<structdim>() +
642 template <
int structdim>
643 template <
class Archive>
static const unsigned int invalid_unsigned_int
void set_dof_index(const ::hp::DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index, const types::global_dof_index global_index, const unsigned int obj_level)
types::global_dof_index get_dof_index(const ::hp::DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_index, const unsigned int fe_index, const unsigned int local_index, const unsigned int obj_level) const
unsigned int n_active_fe_indices(const ::hp::DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_index) const
#define AssertIndexRange(index, range)
internal::hp::DoFIndicesOnFacesOrEdges< 1 > lines
static ::ExceptionBase & ExcMessage(std::string arg1)
#define Assert(cond, exc)
void serialize(Archive &ar, const unsigned int version)
std::size_t memory_consumption() const
std::vector< types::global_dof_index > dofs
#define DEAL_II_NAMESPACE_CLOSE
std::vector< unsigned int > dof_offsets
internal::hp::DoFIndicesOnFacesOrEdges< 2 > quads
bool fe_index_is_active(const ::hp::DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_index, const unsigned int fe_index, const unsigned int obj_level) const
#define DEAL_II_NAMESPACE_OPEN
types::global_dof_index nth_active_fe_index(const ::hp::DoFHandler< dim, spacedim > &dof_handler, const unsigned int obj_level, const unsigned int obj_index, const unsigned int n) const
TrilinosWrappers::types::int_type global_index(const Epetra_BlockMap &map, const ::types::global_dof_index i)
const types::global_dof_index invalid_dof_index
internal::hp::DoFIndicesOnFacesOrEdges< 1 > lines
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
static ::ExceptionBase & ExcInternalError()