17#ifndef dealii_matrix_free_mapping_data_on_the_fly_h
18#define dealii_matrix_free_mapping_data_on_the_fly_h
41 namespace MatrixFreeFunctions
59 template <
int dim,
typename Number,
typename VectorizedArrayType>
63 std::is_same<Number, typename VectorizedArrayType::value_type>::value,
64 "Type of Number and of VectorizedArrayType do not match.");
89 reinit(typename ::Triangulation<dim>::cell_iterator cell);
101 typename ::Triangulation<dim>::cell_iterator
110 const ::FEValues<dim> &
162 template <
int dim,
typename Number,
typename VectorizedArrayType>
171 MappingInfo<dim, Number, VectorizedArrayType>::compute_update_flags(
173 , quadrature_1d(quadrature)
199 template <
int dim,
typename Number,
typename VectorizedArrayType>
210 template <
int dim,
typename Number,
typename VectorizedArrayType>
213 typename ::Triangulation<dim>::cell_iterator cell)
215 if (present_cell == cell)
218 fe_values.reinit(present_cell);
219 for (
unsigned int q = 0; q < fe_values.get_quadrature().size(); ++q)
222 mapping_info_storage.JxW_values[q] = fe_values.JxW(q);
227 for (
unsigned int d = 0;
d < dim; ++
d)
228 for (
unsigned int e = 0;
e < dim; ++
e)
229 mapping_info_storage.jacobians[0][q][
d][
e] = jac[
d][
e];
232 for (
unsigned int d = 0;
d < dim; ++
d)
233 mapping_info_storage.quadrature_points[q][
d] =
234 fe_values.quadrature_point(q)[
d];
237 for (
unsigned int d = 0;
d < dim; ++
d)
238 mapping_info_storage.normal_vectors[q][
d] =
239 fe_values.normal_vector(q)[
d];
240 mapping_info_storage.normals_times_jacobians[0][q] =
241 mapping_info_storage.normal_vectors[q] *
242 mapping_info_storage.jacobians[0][q];
249 template <
int dim,
typename Number,
typename VectorizedArrayType>
254 return present_cell !=
255 typename ::Triangulation<dim>::cell_iterator();
260 template <
int dim,
typename Number,
typename VectorizedArrayType>
261 inline typename ::Triangulation<dim>::cell_iterator
264 return fe_values.get_cell();
269 template <
int dim,
typename Number,
typename VectorizedArrayType>
270 inline const ::FEValues<dim> &
278 template <
int dim,
typename Number,
typename VectorizedArrayType>
283 return mapping_info_storage;
288 template <
int dim,
typename Number,
typename VectorizedArrayType>
293 return quadrature_1d;
void resize(const size_type new_size)
Abstract base class for mapping classes.
const Quadrature< 1 > quadrature_1d
const MappingInfoStorage< dim, dim, Number, VectorizedArrayType > & get_data_storage() const
typename::Triangulation< dim >::cell_iterator present_cell
bool is_initialized() const
MappingInfoStorage< dim, dim, Number, VectorizedArrayType > mapping_info_storage
void reinit(typename ::Triangulation< dim >::cell_iterator cell)
typename::Triangulation< dim >::cell_iterator get_cell() const
const ::FEValues< dim > & get_fe_values() const
MappingDataOnTheFly(const Quadrature< 1 > &quadrature, const UpdateFlags update_flags)
FE_Nothing< dim > fe_dummy
MappingDataOnTheFly(const Mapping< dim > &mapping, const Quadrature< 1 > &quadrature, const UpdateFlags update_flags)
const Quadrature< 1 > & get_quadrature() const
::FEValues< dim > fe_values
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
@ update_jacobian_grads
Gradient of volume element.
@ update_normal_vectors
Normal vectors.
@ update_JxW_values
Transformed quadrature weights.
@ update_jacobians
Volume element.
@ update_quadrature_points
Transformed quadrature points.
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
AlignedVector< Point< spacedim, VectorizedArrayType > > quadrature_points
AlignedVector< unsigned int > quadrature_point_offsets
AlignedVector< Tensor< 1, spacedim, VectorizedArrayType > > normal_vectors
AlignedVector< VectorizedArrayType > JxW_values
AlignedVector< unsigned int > data_index_offsets
std::array< AlignedVector< Tensor< 1, spacedim, VectorizedArrayType > >, 2 > normals_times_jacobians
std::array< AlignedVector< Tensor< 2, spacedim, VectorizedArrayType > >, 2 > jacobians
std::vector< QuadratureDescriptor > descriptor
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)