45 template <
typename Number>
75 template <
typename Number>
108 ExcMessage(
"Incoming hp::FECollection can not be empty."));
111 ExcMessage(
"Size of hp::MappingCollection must be "
112 "the same as hp::FECollection or 1."));
114 q_collection.
size() == 1,
115 ExcMessage(
"Size of hp::QCollection<dim> must be the "
116 "same as hp::FECollection or 1."));
119 ExcMessage(
"Size of hp::QCollection<1> must be the "
120 "same as hp::FECollection or 1."));
126 for (
unsigned int fe_index = 0; fe_index <
fe_collection->size();
129 const unsigned int mapping_index =
131 const unsigned int q_index = q_collection.
size() > 1 ? fe_index : 0;
136 q_collection[q_index],
141 q_collection[q_index],
149 template <
bool level_dof_access>
153 const unsigned int q_index,
154 const unsigned int mapping_index)
159 cell->active_fe_index());
167 const unsigned int q_index,
168 const unsigned int mapping_index,
169 const unsigned int fe_index)
177 template <
typename CellIteratorType>
180 const unsigned int q_index_in,
181 const unsigned int mapping_index_in,
182 const unsigned int fe_index_in)
191 unsigned int mapping_index = mapping_index_in;
192 unsigned int q_index = q_index_in;
193 unsigned int q_index_1D = q_index_in;
231 (mapping_index == 0)),
242 (mapping_index == 0)),
264 if (inside_quadrature.
size() > 0)
274 if (outside_quadrature.
size() > 0)
284 if (surface_quadrature.size() > 0)
306 const std::optional<::FEValues<dim>> &
318 const std::optional<::FEValues<dim>> &
330 const std::optional<FEImmersedSurfaceValues<dim>> &
339 template <
typename Number>
370 template <
typename Number>
404 ExcMessage(
"Incoming hp::FECollection can not be empty."));
409 "Size of hp::MappingCollection must be the same as hp::FECollection or 1."));
413 "Size of hp::QCollection<dim> must be the same as hp::FECollection or 1."));
418 "Size of hp::QCollection<1> must be the same as hp::FECollection or 1."));
433 template <
typename CellAccessorType>
437 const unsigned int face_no,
438 const unsigned int q_index_in,
439 const unsigned int active_fe_index_in,
441 const unsigned int)> &call_reinit)
465 unsigned int q_index = q_index_in;
469 unsigned int active_fe_index = active_fe_index_in;
473 if constexpr (std::is_same_v<
479 active_fe_index = cell->active_fe_index();
485 q_index = active_fe_index;
495 const Quadrature<dim - 1> &inside_quadrature =
497 const Quadrature<dim - 1> &outside_quadrature =
503 if (inside_quadrature.size() > 0)
514 if (outside_quadrature.size() > 0)
537 const std::optional<::FEInterfaceValues<dim>> &
549 const std::optional<::FEInterfaceValues<dim>> &
559#include "non_matching/fe_values.inst"
const std::optional<::FEInterfaceValues< dim > > & get_outside_fe_values() const
void initialize(const hp::QCollection< dim - 1 > &q_collection)
const ObserverPointer< const hp::MappingCollection< dim > > mapping_collection
const hp::QCollection< 1 > q_collection_1D
const RegionUpdateFlags region_update_flags
void do_reinit(const TriaIterator< CellAccessorType > &cell, const unsigned int face_no, const unsigned int q_index, const unsigned int active_fe_index, const std::function< void(::FEInterfaceValues< dim > &, const unsigned int)> &call_reinit)
LocationToLevelSet current_face_location
const ObserverPointer< const MeshClassifier< dim > > mesh_classifier
std::optional<::FEInterfaceValues< dim > > fe_values_inside_full_quadrature
const std::optional<::FEInterfaceValues< dim > > & get_inside_fe_values() const
const ObserverPointer< const hp::FECollection< dim > > fe_collection
std::optional<::FEInterfaceValues< dim > > fe_values_outside_full_quadrature
std::optional<::FEInterfaceValues< dim > > fe_values_inside
DiscreteFaceQuadratureGenerator< dim > face_quadrature_generator
FEInterfaceValues(const hp::FECollection< dim > &fe_collection, const Quadrature< 1 > &quadrature, const RegionUpdateFlags region_update_flags, const MeshClassifier< dim > &mesh_classifier, const DoFHandler< dim > &dof_handler, const ReadVector< Number > &level_set, const AdditionalData &additional_data=AdditionalData())
typename FaceQuadratureGenerator< dim >::AdditionalData AdditionalData
std::optional<::FEInterfaceValues< dim > > fe_values_outside
std::optional< NonMatching::FEImmersedSurfaceValues< dim > > fe_values_surface
std::deque< std::optional<::FEValues< dim > > > fe_values_inside_full_quadrature
std::optional<::FEValues< dim > > fe_values_outside
LocationToLevelSet current_cell_location
const ObserverPointer< const hp::FECollection< dim > > fe_collection
const std::optional<::FEValues< dim > > & get_outside_fe_values() const
const ObserverPointer< const MeshClassifier< dim > > mesh_classifier
void initialize(const hp::QCollection< dim > &q_collection)
const std::optional< FEImmersedSurfaceValues< dim > > & get_surface_fe_values() const
void reinit_internal(const CellIteratorType &cell, const unsigned int q_index, const unsigned int mapping_index, const unsigned int fe_index)
const hp::QCollection< 1 > q_collection_1D
const ObserverPointer< const hp::MappingCollection< dim > > mapping_collection
const RegionUpdateFlags region_update_flags
void reinit(const TriaIterator< DoFCellAccessor< dim, dim, level_dof_access > > &cell, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int)
std::optional<::FEValues< dim > > fe_values_inside
FEValues(const hp::FECollection< dim > &fe_collection, const Quadrature< 1 > &quadrature, const RegionUpdateFlags region_update_flags, const MeshClassifier< dim > &mesh_classifier, const DoFHandler< dim > &dof_handler, const ReadVector< Number > &level_set, const AdditionalData &additional_data=AdditionalData())
typename QuadratureGenerator< dim >::AdditionalData AdditionalData
DiscreteQuadratureGenerator< dim > quadrature_generator
std::deque< std::optional<::FEValues< dim > > > fe_values_outside_full_quadrature
unsigned int active_fe_index
const std::optional<::FEValues< dim > > & get_inside_fe_values() const
unsigned int size() const
unsigned int size() const
void push_back(const Quadrature< dim_in > &new_quadrature)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_ASSERT_UNREACHABLE()
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcMessage(std::string arg1)
@ update_default
No update.
constexpr unsigned int invalid_unsigned_int