44 template <
typename VectorType>
50 const VectorType &level_set,
74 template <
typename VectorType>
82 const VectorType &level_set,
107 ExcMessage(
"Incoming hp::FECollection can not be empty."));
110 ExcMessage(
"Size of hp::MappingCollection must be "
111 "the same as hp::FECollection or 1."));
113 q_collection.
size() == 1,
114 ExcMessage(
"Size of hp::QCollection<dim> must be the "
115 "same as hp::FECollection or 1."));
118 ExcMessage(
"Size of hp::QCollection<1> must be the "
119 "same as hp::FECollection or 1."));
125 for (
unsigned int fe_index = 0; fe_index <
fe_collection->size();
128 const unsigned int mapping_index =
130 const unsigned int q_index = q_collection.
size() > 1 ? fe_index : 0;
135 q_collection[q_index],
140 q_collection[q_index],
148 template <
bool level_dof_access>
152 const unsigned int q_index,
153 const unsigned int mapping_index)
158 cell->active_fe_index());
166 const unsigned int q_index,
167 const unsigned int mapping_index,
168 const unsigned int fe_index)
176 template <
typename CellIteratorType>
179 const unsigned int q_index_in,
180 const unsigned int mapping_index_in,
181 const unsigned int fe_index_in)
190 unsigned int mapping_index = mapping_index_in;
191 unsigned int q_index = q_index_in;
192 unsigned int q_index_1D = q_index_in;
230 (mapping_index == 0)),
241 (mapping_index == 0)),
263 if (inside_quadrature.
size() > 0)
273 if (outside_quadrature.
size() > 0)
283 if (surface_quadrature.size() > 0)
305 const std::optional<::FEValues<dim>> &
317 const std::optional<::FEValues<dim>> &
329 const std::optional<FEImmersedSurfaceValues<dim>> &
338 template <
typename VectorType>
345 const VectorType &level_set,
369 template <
typename VectorType>
378 const VectorType &level_set,
403 ExcMessage(
"Incoming hp::FECollection can not be empty."));
408 "Size of hp::MappingCollection must be the same as hp::FECollection or 1."));
412 "Size of hp::QCollection<dim> must be the same as hp::FECollection or 1."));
417 "Size of hp::QCollection<1> must be the same as hp::FECollection or 1."));
432 template <
typename CellAccessorType>
436 const unsigned int face_no,
437 const unsigned int q_index_in,
438 const unsigned int active_fe_index_in,
440 const unsigned int)> &call_reinit)
464 unsigned int q_index = q_index_in;
468 unsigned int active_fe_index = active_fe_index_in;
472 if constexpr (std::is_same_v<
478 active_fe_index = cell->active_fe_index();
484 q_index = active_fe_index;
494 const Quadrature<dim - 1> &inside_quadrature =
496 const Quadrature<dim - 1> &outside_quadrature =
502 if (inside_quadrature.size() > 0)
513 if (outside_quadrature.size() > 0)
536 const std::optional<::FEInterfaceValues<dim>> &
548 const std::optional<::FEInterfaceValues<dim>> &
558#include "fe_values.inst"
const std::optional<::FEInterfaceValues< dim > > & get_outside_fe_values() const
const SmartPointer< const hp::FECollection< dim > > fe_collection
void initialize(const hp::QCollection< dim - 1 > &q_collection)
const SmartPointer< 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
std::optional<::FEInterfaceValues< dim > > fe_values_inside_full_quadrature
const std::optional<::FEInterfaceValues< dim > > & get_inside_fe_values() const
const SmartPointer< const MeshClassifier< dim > > mesh_classifier
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 VectorType &level_set, const AdditionalData &additional_data=AdditionalData())
std::optional<::FEInterfaceValues< dim > > fe_values_outside_full_quadrature
std::optional<::FEInterfaceValues< dim > > fe_values_inside
DiscreteFaceQuadratureGenerator< dim > face_quadrature_generator
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 SmartPointer< const hp::FECollection< dim > > fe_collection
const std::optional<::FEValues< dim > > & get_outside_fe_values() const
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 SmartPointer< const MeshClassifier< dim > > mesh_classifier
const hp::QCollection< 1 > q_collection_1D
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
const SmartPointer< const hp::MappingCollection< dim > > mapping_collection
typename QuadratureGenerator< dim >::AdditionalData AdditionalData
DiscreteQuadratureGenerator< dim > quadrature_generator
std::deque< std::optional<::FEValues< dim > > > fe_values_outside_full_quadrature
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 VectorType &level_set, const AdditionalData &additional_data=AdditionalData())
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
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
static ::ExceptionBase & ExcMessage(std::string arg1)
@ update_default
No update.
#define DEAL_II_ASSERT_UNREACHABLE()
static const unsigned int invalid_unsigned_int