21 template <
int dim,
int spacedim>
26 const UpdateFlags &update_flags,
44 template <
int dim,
int spacedim>
49 const UpdateFlags &update_flags,
50 const UpdateFlags &neighbor_update_flags,
69 template <
int dim,
int spacedim>
73 const UpdateFlags &update_flags,
87 template <
int dim,
int spacedim>
91 const UpdateFlags &update_flags,
92 const UpdateFlags &neighbor_update_flags,
101 neighbor_update_flags,
109 template <
int dim,
int spacedim>
133 template <
int dim,
int spacedim>
159 template <
int dim,
int spacedim>
176 template <
int dim,
int spacedim>
197 template <
int dim,
int spacedim>
221 template <
int dim,
int spacedim>
229 fe_values = std::make_unique<FEValues<dim, spacedim>>(
241 hp_fe_values = std::make_unique<hp::FEValues<dim, spacedim>>(
263 template <
int dim,
int spacedim>
267 const unsigned int face_no)
283 return reinit(cell, cell, face_no);
289 template <
int dim,
int spacedim>
295 const unsigned int face_no)
306 if (neighbor_cell == cell)
317 unsigned int dominated_fe_index =
fe_collection->find_dominated_fe(
318 {cell->active_fe_index(), neighbor_cell->active_fe_index()});
334 const auto &
fe = (*fe_collection)[cell->active_fe_index()];
345 template <
int dim,
int spacedim>
349 const unsigned int face_no,
350 const unsigned int subface_no)
358 std::make_unique<FESubfaceValues<dim, spacedim>>(
369 return reinit(cell, cell, face_no, subface_no);
373 return reinit(cell, face_no);
378 template <
int dim,
int spacedim>
384 const unsigned int face_no,
385 const unsigned int subface_no)
393 std::make_unique<hp::FESubfaceValues<dim, spacedim>>(
399 if (neighbor_cell == cell)
410 unsigned int dominated_fe_index =
fe_collection->find_dominated_fe(
411 {cell->active_fe_index(), neighbor_cell->active_fe_index()});
429 const auto &
fe = (*fe_collection)[cell->active_fe_index()];
439 return reinit(cell, neighbor_cell, face_no);
445 template <
int dim,
int spacedim>
449 const unsigned int face_no,
452 const unsigned int face_no_neighbor)
464 template <
int dim,
int spacedim>
468 const unsigned int face_no,
469 const unsigned int sub_face_no,
472 const unsigned int face_no_neighbor,
473 const unsigned int sub_face_no_neighbor)
479 std::make_unique<FEInterfaceValues<dim, spacedim>>(
487 sub_face_no_neighbor);
493 std::make_unique<FEInterfaceValues<dim, spacedim>>(
504 unsigned int dominated_fe_index =
fe_collection->find_dominated_fe(
505 {cell->active_fe_index(), cell_neighbor->active_fe_index()});
519 sub_face_no_neighbor,
533 template <
int dim,
int spacedim>
575 template <
int dim,
int spacedim>
579 const unsigned int face_no)
585 std::make_unique<FEFaceValues<dim, spacedim>>(
600 template <
int dim,
int spacedim>
606 const unsigned int face_no)
612 std::make_unique<hp::FEFaceValues<dim, spacedim>>(
618 if (neighbor_cell == cell)
629 unsigned int dominated_fe_index =
fe_collection->find_dominated_fe(
630 {cell->active_fe_index(), neighbor_cell->active_fe_index()});
647 const auto &neighbor_fe =
648 (*fe_collection)[neighbor_cell->active_fe_index()];
659 template <
int dim,
int spacedim>
663 const unsigned int face_no,
664 const unsigned int subface_no)
672 std::make_unique<FESubfaceValues<dim, spacedim>>(
690 template <
int dim,
int spacedim>
696 const unsigned int face_no,
697 const unsigned int subface_no)
705 std::make_unique<hp::FESubfaceValues<dim, spacedim>>(
711 if (neighbor_cell == cell)
724 unsigned int dominated_fe_index =
fe_collection->find_dominated_fe(
725 {cell->active_fe_index(), neighbor_cell->active_fe_index()});
743 const auto &neighbor_fe =
744 (*fe_collection)[neighbor_cell->active_fe_index()];
760 template <
int dim,
int spacedim>
765 ExcMessage(
"You have to initialize the cache using one of the "
766 "reinit functions first!"));
772 template <
int dim,
int spacedim>
777 ExcMessage(
"You have to initialize the cache using one of the "
778 "reinit functions first!"));
784 template <
int dim,
int spacedim>
789 ExcMessage(
"You have to initialize the cache using one of the "
790 "reinit functions first!"));
796 template <
int dim,
int spacedim>
797 const std::vector<Point<spacedim>> &
805 template <
int dim,
int spacedim>
806 const std::vector<double> &
814 template <
int dim,
int spacedim>
815 const std::vector<double> &
823 template <
int dim,
int spacedim>
824 const std::vector<Tensor<1, spacedim>> &
832 template <
int dim,
int spacedim>
833 const std::vector<Tensor<1, spacedim>> &
841 template <
int dim,
int spacedim>
842 const std::vector<types::global_dof_index> &
850 template <
int dim,
int spacedim>
859 template <
int dim,
int spacedim>
860 const std::vector<types::global_dof_index> &
868 template <
int dim,
int spacedim>
877 template <
int dim,
int spacedim>
886 template <
int dim,
int spacedim>
895 template <
int dim,
int spacedim>
906 template <
int dim,
int spacedim>
917 template <
int dim,
int spacedim>
927 template <
int dim,
int spacedim>
937 template <
int dim,
int spacedim>
948 template <
int dim,
int spacedim>
959 template <
int dim,
int spacedim>
969 template <
int dim,
int spacedim>
979 template <
int dim,
int spacedim>
988 template <
int dim,
int spacedim>
997 template <
int dim,
int spacedim>
1006 template <
int dim,
int spacedim>
1015 template <
int dim,
int spacedim>
1027#include "meshworker/scratch_data.inst"
Abstract base class for mapping classes.
GeneralDataStorage user_data_storage
hp::QCollection< dim - 1 > face_quadrature_collection
bool has_hp_capabilities() const
const hp::MappingCollection< dim, spacedim > & get_mapping_collection() const
const FEValuesBase< dim, spacedim > & get_current_fe_values() const
GeneralDataStorage & get_general_data_storage()
const Quadrature< dim - 1 > & get_face_quadrature() const
const std::vector< Tensor< 1, spacedim > > & get_neighbor_normal_vectors()
unsigned int n_dofs_per_cell() const
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > hp_fe_subface_values
unsigned int n_neighbor_dofs_per_cell() const
std::unique_ptr< FEValues< dim, spacedim > > neighbor_fe_values
std::unique_ptr< FEFaceValues< dim, spacedim > > fe_face_values
std::unique_ptr< FEValues< dim, spacedim > > fe_values
UpdateFlags cell_update_flags
const std::vector< double > & get_JxW_values() const
const Mapping< dim, spacedim > & get_mapping() const
ObserverPointer< const Mapping< dim, spacedim > > mapping
std::unique_ptr< FEInterfaceValues< dim, spacedim > > interface_fe_values
const std::vector< double > & get_neighbor_JxW_values() const
Quadrature< dim > cell_quadrature
ObserverPointer< const hp::FECollection< dim, spacedim > > fe_collection
const FiniteElement< dim, spacedim > & get_fe() const
std::unique_ptr< FEFaceValues< dim, spacedim > > neighbor_fe_face_values
const hp::QCollection< dim > & get_cell_quadrature_collection() const
std::vector< types::global_dof_index > neighbor_dof_indices
UpdateFlags face_update_flags
const std::vector< types::global_dof_index > & get_neighbor_dof_indices() const
UpdateFlags get_face_update_flags() const
std::unique_ptr< hp::FEValues< dim, spacedim > > hp_fe_values
ObserverPointer< const FEValuesBase< dim, spacedim > > current_fe_values
UpdateFlags neighbor_cell_update_flags
bool hp_capability_enabled
UpdateFlags get_neighbor_cell_update_flags() const
const hp::FECollection< dim, spacedim > & get_fe_collection() const
const std::vector< Tensor< 1, spacedim > > & get_normal_vectors() const
const FEValues< dim, spacedim > & reinit_neighbor(const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell)
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > neighbor_hp_fe_face_values
ObserverPointer< const FiniteElement< dim, spacedim > > fe
std::vector< types::global_dof_index > local_dof_indices
const std::vector< Point< spacedim > > & get_quadrature_points() const
std::unique_ptr< hp::FEValues< dim, spacedim > > neighbor_hp_fe_values
ObserverPointer< const FEValuesBase< dim, spacedim > > current_neighbor_fe_values
const FEValuesBase< dim, spacedim > & get_current_neighbor_fe_values() const
const std::vector< types::global_dof_index > & get_local_dof_indices() const
Quadrature< dim - 1 > face_quadrature
const FEInterfaceValues< dim, spacedim > & get_current_interface_fe_values() const
hp::QCollection< dim > cell_quadrature_collection
UpdateFlags get_cell_update_flags() const
UpdateFlags neighbor_face_update_flags
const Quadrature< dim > & get_cell_quadrature() const
const hp::QCollection< dim - 1 > & get_face_quadrature_collection() const
ScratchData(const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags &update_flags, const Quadrature< dim - 1 > &face_quadrature=Quadrature< dim - 1 >(), const UpdateFlags &face_update_flags=update_default)
std::unique_ptr< FESubfaceValues< dim, spacedim > > neighbor_fe_subface_values
ObserverPointer< const hp::MappingCollection< dim, spacedim > > mapping_collection
const FEValues< dim, spacedim > & reinit(const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell)
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > neighbor_hp_fe_subface_values
std::unique_ptr< FESubfaceValues< dim, spacedim > > fe_subface_values
GeneralDataStorage internal_data_storage
UpdateFlags get_neighbor_face_update_flags() const
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > hp_fe_face_values
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
static ::ExceptionBase & ExcOnlyAvailableWithoutHP()
static ::ExceptionBase & ExcNotInitialized()
static ::ExceptionBase & ExcMessage(std::string arg1)
static ::ExceptionBase & ExcOnlyAvailableWithHP()
typename ActiveSelector::active_cell_iterator active_cell_iterator
const Mapping< dim, spacedim > & get_default_linear_mapping(const Triangulation< dim, spacedim > &triangulation)
constexpr unsigned int invalid_unsigned_int
constexpr types::fe_index invalid_fe_index