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)
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>