Reference documentation for deal.II version Git 191d06ed00 2021-05-11 21:15:49 -0400
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Classes | Functions
internal::MappingQGenericImplementation Namespace Reference

Classes

class  InverseQuadraticApproximation
 

Functions

template<int dim>
std::vector< Point< dim > > unit_support_points (const std::vector< Point< 1 >> &line_support_points, const std::vector< unsigned int > &renumbering)
 
inline ::Table< 2, doublecompute_support_point_weights_on_quad (const unsigned int polynomial_degree)
 
inline ::Table< 2, doublecompute_support_point_weights_on_hex (const unsigned int polynomial_degree)
 
std::vector<::Table< 2, double > > compute_support_point_weights_perimeter_to_interior (const unsigned int polynomial_degree, const unsigned int dim)
 
template<int dim>
inline ::Table< 2, doublecompute_support_point_weights_cell (const unsigned int polynomial_degree)
 
template<int dim, int spacedim>
Point< spacedim > compute_mapped_location_of_point (const typename ::MappingQGeneric< dim, spacedim >::InternalData &data)
 
template<int dim, int spacedim, typename Number >
Point< dim, Number > do_transform_real_to_unit_cell_internal (const Point< spacedim, Number > &p, const Point< dim, Number > &initial_p_unit, const std::vector< Point< spacedim >> &points, const std::vector< Polynomials::Polynomial< double >> &polynomials_1d, const std::vector< unsigned int > &renumber, const bool print_iterations_to_deallog=false)
 
template<int dim>
Point< dim > do_transform_real_to_unit_cell_internal_codim1 (const typename ::Triangulation< dim, dim+1 >::cell_iterator &cell, const Point< dim+1 > &p, const Point< dim > &initial_p_unit, typename ::MappingQGeneric< dim, dim+1 >::InternalData &mdata)
 
template<int dim, int spacedim>
void maybe_update_q_points_Jacobians_and_grads_tensor (const CellSimilarity::Similarity cell_similarity, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< Point< spacedim >> &quadrature_points, std::vector< DerivativeForm< 2, dim, spacedim >> &jacobian_grads)
 
template<int dim, int spacedim>
void maybe_compute_q_points (const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< Point< spacedim >> &quadrature_points)
 
template<int dim, int spacedim>
void maybe_update_Jacobians (const CellSimilarity::Similarity cell_similarity, const typename ::QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data)
 
template<int dim, int spacedim>
void maybe_update_jacobian_grads (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< DerivativeForm< 2, dim, spacedim >> &jacobian_grads)
 
template<int dim, int spacedim>
void maybe_update_jacobian_pushed_forward_grads (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< Tensor< 3, spacedim >> &jacobian_pushed_forward_grads)
 
template<int dim, int spacedim>
void maybe_update_jacobian_2nd_derivatives (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< DerivativeForm< 3, dim, spacedim >> &jacobian_2nd_derivatives)
 
template<int dim, int spacedim>
void maybe_update_jacobian_pushed_forward_2nd_derivatives (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< Tensor< 4, spacedim >> &jacobian_pushed_forward_2nd_derivatives)
 
template<int dim, int spacedim>
void maybe_update_jacobian_3rd_derivatives (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< DerivativeForm< 4, dim, spacedim >> &jacobian_3rd_derivatives)
 
template<int dim, int spacedim>
void maybe_update_jacobian_pushed_forward_3rd_derivatives (const CellSimilarity::Similarity cell_similarity, const typename QProjector< dim >::DataSetDescriptor data_set, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, std::vector< Tensor< 5, spacedim >> &jacobian_pushed_forward_3rd_derivatives)
 
template<int dim, int spacedim>
void maybe_compute_face_data (const ::MappingQGeneric< dim, spacedim > &mapping, const typename ::Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no, const unsigned int n_q_points, const std::vector< double > &weights, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data)
 
template<int dim, int spacedim>
void do_fill_fe_face_values (const ::MappingQGeneric< dim, spacedim > &mapping, const typename ::Triangulation< dim, spacedim >::cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no, const typename QProjector< dim >::DataSetDescriptor data_set, const Quadrature< dim - 1 > &quadrature, const typename ::MappingQGeneric< dim, spacedim >::InternalData &data, internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &output_data)
 
template<int dim, int spacedim, int rank>
void transform_fields (const ArrayView< const Tensor< rank, dim >> &input, const MappingKind mapping_kind, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_data, const ArrayView< Tensor< rank, spacedim >> &output)
 
template<int dim, int spacedim, int rank>
void transform_gradients (const ArrayView< const Tensor< rank, dim >> &input, const MappingKind mapping_kind, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_data, const ArrayView< Tensor< rank, spacedim >> &output)
 
template<int dim, int spacedim>
void transform_hessians (const ArrayView< const Tensor< 3, dim >> &input, const MappingKind mapping_kind, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_data, const ArrayView< Tensor< 3, spacedim >> &output)
 
template<int dim, int spacedim, int rank>
void transform_differential_forms (const ArrayView< const DerivativeForm< rank, dim, spacedim >> &input, const MappingKind mapping_kind, const typename Mapping< dim, spacedim >::InternalDataBase &mapping_data, const ArrayView< Tensor< rank+1, spacedim >> &output)
 

Detailed Description

Internal namespace to implement methods of MappingQGeneric, such as the evaluation of the mapping and the transformation between real and unit cell.

Function Documentation

◆ unit_support_points()

template<int dim>
std::vector<Point<dim> > internal::MappingQGenericImplementation::unit_support_points ( const std::vector< Point< 1 >> &  line_support_points,
const std::vector< unsigned int > &  renumbering 
)

This function generates the reference cell support points from the 1d support points by expanding the tensor product.

Definition at line 215 of file mapping_q_internal.h.

◆ compute_support_point_weights_on_quad()

inline ::Table<2, double> internal::MappingQGenericImplementation::compute_support_point_weights_on_quad ( const unsigned int  polynomial_degree)

This function is needed by the constructor of MappingQ<dim,spacedim> for dim= 2 and 3.

For the definition of the support_point_weights_on_quad please refer to the description of TransfiniteInterpolationManifold.

Definition at line 245 of file mapping_q_internal.h.

◆ compute_support_point_weights_on_hex()

inline ::Table<2, double> internal::MappingQGenericImplementation::compute_support_point_weights_on_hex ( const unsigned int  polynomial_degree)

This function is needed by the constructor of MappingQ<3>.

For the definition of the support_point_weights_on_quad please refer to the description of TransfiniteInterpolationManifold.

Definition at line 297 of file mapping_q_internal.h.

◆ compute_support_point_weights_perimeter_to_interior()

std::vector<::Table<2, double> > internal::MappingQGenericImplementation::compute_support_point_weights_perimeter_to_interior ( const unsigned int  polynomial_degree,
const unsigned int  dim 
)
inline

This function collects the output of compute_support_point_weights_on_{quad,hex} in a single data structure.

Definition at line 386 of file mapping_q_internal.h.

◆ compute_support_point_weights_cell()

template<int dim>
inline ::Table<2, double> internal::MappingQGenericImplementation::compute_support_point_weights_cell ( const unsigned int  polynomial_degree)

Collects all interior points for the various dimensions.

Definition at line 421 of file mapping_q_internal.h.

◆ compute_mapped_location_of_point()

template<int dim, int spacedim>
Point<spacedim> internal::MappingQGenericImplementation::compute_mapped_location_of_point ( const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data)
inline

Using the relative weights of the shape functions evaluated at one point on the reference cell (and stored in data.shape_values and accessed via data.shape(0,i)) and the locations of mapping support points (stored in data.mapping_support_points), compute the mapped location of that point in real space.

Definition at line 453 of file mapping_q_internal.h.

◆ do_transform_real_to_unit_cell_internal()

template<int dim, int spacedim, typename Number >
Point<dim, Number> internal::MappingQGenericImplementation::do_transform_real_to_unit_cell_internal ( const Point< spacedim, Number > &  p,
const Point< dim, Number > &  initial_p_unit,
const std::vector< Point< spacedim >> &  points,
const std::vector< Polynomials::Polynomial< double >> &  polynomials_1d,
const std::vector< unsigned int > &  renumber,
const bool  print_iterations_to_deallog = false 
)
inline

Implementation of transform_real_to_unit_cell for either type double or VectorizedArray<double>

Definition at line 475 of file mapping_q_internal.h.

◆ do_transform_real_to_unit_cell_internal_codim1()

template<int dim>
Point<dim> internal::MappingQGenericImplementation::do_transform_real_to_unit_cell_internal_codim1 ( const typename ::Triangulation< dim, dim+1 >::cell_iterator &  cell,
const Point< dim+1 > &  p,
const Point< dim > &  initial_p_unit,
typename ::MappingQGeneric< dim, dim+1 >::InternalData &  mdata 
)
inline

Implementation of transform_real_to_unit_cell for dim==spacedim-1

Definition at line 725 of file mapping_q_internal.h.

◆ maybe_update_q_points_Jacobians_and_grads_tensor()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_q_points_Jacobians_and_grads_tensor ( const CellSimilarity::Similarity  cell_similarity,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< Point< spacedim >> &  quadrature_points,
std::vector< DerivativeForm< 2, dim, spacedim >> &  jacobian_grads 
)
inline

In case the quadrature formula is a tensor product, this is a replacement for maybe_compute_q_points(), maybe_update_Jacobians() and maybe_update_jacobian_grads()

Definition at line 1074 of file mapping_q_internal.h.

◆ maybe_compute_q_points()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_compute_q_points ( const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< Point< spacedim >> &  quadrature_points 
)
inline

Compute the locations of quadrature points on the object described by the first argument (and the cell for which the mapping support points have already been set), but only if the update_flags of the data argument indicate so.

Definition at line 1258 of file mapping_q_internal.h.

◆ maybe_update_Jacobians()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_Jacobians ( const CellSimilarity::Similarity  cell_similarity,
const typename ::QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data 
)
inline

Update the co- and contravariant matrices as well as their determinant, for the cell described stored in the data object, but only if the update_flags of the data argument indicate so.

Skip the computation if possible as indicated by the first argument.

Definition at line 1290 of file mapping_q_internal.h.

◆ maybe_update_jacobian_grads()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_grads ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< DerivativeForm< 2, dim, spacedim >> &  jacobian_grads 
)
inline

Update the Hessian of the transformation from unit to real cell, the Jacobian gradients.

Skip the computation if possible as indicated by the first argument.

Definition at line 1373 of file mapping_q_internal.h.

◆ maybe_update_jacobian_pushed_forward_grads()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_pushed_forward_grads ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< Tensor< 3, spacedim >> &  jacobian_pushed_forward_grads 
)
inline

Update the Hessian of the transformation from unit to real cell, the Jacobian gradients, pushed forward to the real cell coordinates.

Skip the computation if possible as indicated by the first argument.

Definition at line 1420 of file mapping_q_internal.h.

◆ maybe_update_jacobian_2nd_derivatives()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_2nd_derivatives ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< DerivativeForm< 3, dim, spacedim >> &  jacobian_2nd_derivatives 
)
inline

Update the third derivatives of the transformation from unit to real cell, the Jacobian hessians.

Skip the computation if possible as indicated by the first argument.

Definition at line 1494 of file mapping_q_internal.h.

◆ maybe_update_jacobian_pushed_forward_2nd_derivatives()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_pushed_forward_2nd_derivatives ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< Tensor< 4, spacedim >> &  jacobian_pushed_forward_2nd_derivatives 
)
inline

Update the Hessian of the Hessian of the transformation from unit to real cell, the Jacobian Hessian gradients, pushed forward to the real cell coordinates.

Skip the computation if possible as indicated by the first argument.

Definition at line 1550 of file mapping_q_internal.h.

◆ maybe_update_jacobian_3rd_derivatives()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_3rd_derivatives ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< DerivativeForm< 4, dim, spacedim >> &  jacobian_3rd_derivatives 
)
inline

Update the fourth derivatives of the transformation from unit to real cell, the Jacobian hessian gradients.

Skip the computation if possible as indicated by the first argument.

Definition at line 1651 of file mapping_q_internal.h.

◆ maybe_update_jacobian_pushed_forward_3rd_derivatives()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_update_jacobian_pushed_forward_3rd_derivatives ( const CellSimilarity::Similarity  cell_similarity,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
std::vector< Tensor< 5, spacedim >> &  jacobian_pushed_forward_3rd_derivatives 
)
inline

Update the Hessian gradient of the transformation from unit to real cell, the Jacobian Hessians, pushed forward to the real cell coordinates.

Skip the computation if possible as indicated by the first argument.

Definition at line 1710 of file mapping_q_internal.h.

◆ maybe_compute_face_data()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::maybe_compute_face_data ( const ::MappingQGeneric< dim, spacedim > &  mapping,
const typename ::Triangulation< dim, spacedim >::cell_iterator &  cell,
const unsigned int  face_no,
const unsigned int  subface_no,
const unsigned int  n_q_points,
const std::vector< double > &  weights,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &  output_data 
)
inline

Depending on what information is called for in the update flags of the data object, compute the various pieces of information that is required by the fill_fe_face_values() and fill_fe_subface_values() functions. This function simply unifies the work that would be done by those two functions.

The resulting data is put into the output_data argument.

Definition at line 1837 of file mapping_q_internal.h.

◆ do_fill_fe_face_values()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::do_fill_fe_face_values ( const ::MappingQGeneric< dim, spacedim > &  mapping,
const typename ::Triangulation< dim, spacedim >::cell_iterator &  cell,
const unsigned int  face_no,
const unsigned int  subface_no,
const typename QProjector< dim >::DataSetDescriptor  data_set,
const Quadrature< dim - 1 > &  quadrature,
const typename ::MappingQGeneric< dim, spacedim >::InternalData &  data,
internal::FEValuesImplementation::MappingRelatedData< dim, spacedim > &  output_data 
)
inline

Do the work of MappingQGeneric::fill_fe_face_values() and MappingQGeneric::fill_fe_subface_values() in a generic way, using the 'data_set' to differentiate whether we will work on a face (and if so, which one) or subface.

Definition at line 2001 of file mapping_q_internal.h.

◆ transform_fields()

template<int dim, int spacedim, int rank>
void internal::MappingQGenericImplementation::transform_fields ( const ArrayView< const Tensor< rank, dim >> &  input,
const MappingKind  mapping_kind,
const typename Mapping< dim, spacedim >::InternalDataBase &  mapping_data,
const ArrayView< Tensor< rank, spacedim >> &  output 
)
inline

Implementation of MappingQGeneric::transform() for generic tensors.

Definition at line 2074 of file mapping_q_internal.h.

◆ transform_gradients()

template<int dim, int spacedim, int rank>
void internal::MappingQGenericImplementation::transform_gradients ( const ArrayView< const Tensor< rank, dim >> &  input,
const MappingKind  mapping_kind,
const typename Mapping< dim, spacedim >::InternalDataBase &  mapping_data,
const ArrayView< Tensor< rank, spacedim >> &  output 
)
inline

Implementation of MappingQGeneric::transform() for gradients.

Definition at line 2152 of file mapping_q_internal.h.

◆ transform_hessians()

template<int dim, int spacedim>
void internal::MappingQGenericImplementation::transform_hessians ( const ArrayView< const Tensor< 3, dim >> &  input,
const MappingKind  mapping_kind,
const typename Mapping< dim, spacedim >::InternalDataBase &  mapping_data,
const ArrayView< Tensor< 3, spacedim >> &  output 
)
inline

Implementation of MappingQGeneric::transform() for hessians.

Definition at line 2250 of file mapping_q_internal.h.

◆ transform_differential_forms()

template<int dim, int spacedim, int rank>
void internal::MappingQGenericImplementation::transform_differential_forms ( const ArrayView< const DerivativeForm< rank, dim, spacedim >> &  input,
const MappingKind  mapping_kind,
const typename Mapping< dim, spacedim >::InternalDataBase &  mapping_data,
const ArrayView< Tensor< rank+1, spacedim >> &  output 
)
inline

Implementation of MappingQGeneric::transform() for DerivativeForm arguments.

Definition at line 2417 of file mapping_q_internal.h.