Reference documentation for deal.II version 9.0.0
|
#include <deal.II/fe/mapping_q_generic.h>
Public Member Functions | |
InternalData (const unsigned int polynomial_degree) | |
void | initialize (const UpdateFlags update_flags, const Quadrature< dim > &quadrature, const unsigned int n_original_q_points) |
void | initialize_face (const UpdateFlags update_flags, const Quadrature< dim > &quadrature, const unsigned int n_original_q_points) |
void | compute_shape_function_values (const std::vector< Point< dim > > &unit_points) |
const double & | shape (const unsigned int qpoint, const unsigned int shape_nr) const |
double & | shape (const unsigned int qpoint, const unsigned int shape_nr) |
const Tensor< 1, dim > & | derivative (const unsigned int qpoint, const unsigned int shape_nr) const |
Tensor< 1, dim > & | derivative (const unsigned int qpoint, const unsigned int shape_nr) |
const Tensor< 2, dim > & | second_derivative (const unsigned int qpoint, const unsigned int shape_nr) const |
Tensor< 2, dim > & | second_derivative (const unsigned int qpoint, const unsigned int shape_nr) |
const Tensor< 3, dim > & | third_derivative (const unsigned int qpoint, const unsigned int shape_nr) const |
Tensor< 3, dim > & | third_derivative (const unsigned int qpoint, const unsigned int shape_nr) |
const Tensor< 4, dim > & | fourth_derivative (const unsigned int qpoint, const unsigned int shape_nr) const |
Tensor< 4, dim > & | fourth_derivative (const unsigned int qpoint, const unsigned int shape_nr) |
virtual std::size_t | memory_consumption () const override |
Public Member Functions inherited from Mapping< dim, spacedim >::InternalDataBase | |
InternalDataBase () | |
InternalDataBase (const InternalDataBase &)=delete | |
virtual | ~InternalDataBase ()=default |
Storage for internal data of polynomial mappings. See Mapping::InternalDataBase for an extensive description.
For the current class, the InternalData class stores data that is computed once when the object is created (in get_data()) as well as data the class wants to store from between the call to fill_fe_values(), fill_fe_face_values(), or fill_fe_subface_values() until possible later calls from the finite element to functions such as transform(). The latter class of member variables are marked as 'mutable'.
Definition at line 247 of file mapping_q_generic.h.
MappingQGeneric< dim, spacedim >::InternalData::InternalData | ( | const unsigned int | polynomial_degree | ) |
Constructor. The argument denotes the polynomial degree of the mapping to which this object will correspond.
Definition at line 611 of file mapping_q_generic.cc.
void MappingQGeneric< dim, spacedim >::InternalData::initialize | ( | const UpdateFlags | update_flags, |
const Quadrature< dim > & | quadrature, | ||
const unsigned int | n_original_q_points | ||
) |
Initialize the object's member variables related to cell data based on the given arguments.
The function also calls compute_shape_function_values() to actually set the member variables related to the values and derivatives of the mapping shape functions.
Definition at line 643 of file mapping_q_generic.cc.
void MappingQGeneric< dim, spacedim >::InternalData::initialize_face | ( | const UpdateFlags | update_flags, |
const Quadrature< dim > & | quadrature, | ||
const unsigned int | n_original_q_points | ||
) |
Initialize the object's member variables related to cell and face data based on the given arguments. In order to initialize cell data, this function calls initialize().
Definition at line 755 of file mapping_q_generic.cc.
void MappingQGeneric< dim, spacedim >::InternalData::compute_shape_function_values | ( | const std::vector< Point< dim > > & | unit_points | ) |
Compute the values and/or derivatives of the shape functions used for the mapping.
Which values, derivatives, or higher order derivatives are computed is determined by which of the member arrays have nonzero sizes. They are typically set to their appropriate sizes by the initialize() and initialize_face() functions, which indeed call this function internally. However, it is possible (and at times useful) to do the resizing by hand and then call this function directly. An example is in a Newton iteration where we update the location of a quadrature point (e.g., in MappingQ::transform_real_to_uni_cell()) and need to re- compute the mapping and its derivatives at this location, but have already sized all internal arrays correctly.
Definition at line 910 of file mapping_q_generic.cc.
const double& MappingQGeneric< dim, spacedim >::InternalData::shape | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) | const |
Shape function at quadrature point. Shape functions are in tensor product order, so vertices must be reordered to obtain transformation.
double& MappingQGeneric< dim, spacedim >::InternalData::shape | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) |
Shape function at quadrature point. See above.
const Tensor<1,dim>& MappingQGeneric< dim, spacedim >::InternalData::derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) | const |
Gradient of shape function in quadrature point. See above.
Tensor<1,dim>& MappingQGeneric< dim, spacedim >::InternalData::derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) |
Gradient of shape function in quadrature point. See above.
const Tensor<2,dim>& MappingQGeneric< dim, spacedim >::InternalData::second_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) | const |
Second derivative of shape function in quadrature point. See above.
Tensor<2,dim>& MappingQGeneric< dim, spacedim >::InternalData::second_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) |
Second derivative of shape function in quadrature point. See above.
const Tensor<3,dim>& MappingQGeneric< dim, spacedim >::InternalData::third_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) | const |
third derivative of shape function in quadrature point. See above.
Tensor<3,dim>& MappingQGeneric< dim, spacedim >::InternalData::third_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) |
third derivative of shape function in quadrature point. See above.
const Tensor<4,dim>& MappingQGeneric< dim, spacedim >::InternalData::fourth_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) | const |
fourth derivative of shape function in quadrature point. See above.
Tensor<4,dim>& MappingQGeneric< dim, spacedim >::InternalData::fourth_derivative | ( | const unsigned int | qpoint, |
const unsigned int | shape_nr | ||
) |
fourth derivative of shape function in quadrature point. See above.
|
overridevirtual |
Return an estimate (in bytes) or the memory consumption of this object.
Reimplemented from Mapping< dim, spacedim >::InternalDataBase.
Definition at line 623 of file mapping_q_generic.cc.
std::vector<double> MappingQGeneric< dim, spacedim >::InternalData::shape_values |
Values of shape functions. Access by function shape
.
Computed once.
Definition at line 369 of file mapping_q_generic.h.
std::vector<Tensor<1,dim> > MappingQGeneric< dim, spacedim >::InternalData::shape_derivatives |
Values of shape function derivatives. Access by function derivative
.
Computed once.
Definition at line 376 of file mapping_q_generic.h.
std::vector<Tensor<2,dim> > MappingQGeneric< dim, spacedim >::InternalData::shape_second_derivatives |
Values of shape function second derivatives. Access by function second_derivative
.
Computed once.
Definition at line 384 of file mapping_q_generic.h.
std::vector<Tensor<3,dim> > MappingQGeneric< dim, spacedim >::InternalData::shape_third_derivatives |
Values of shape function third derivatives. Access by function second_derivative
.
Computed once.
Definition at line 392 of file mapping_q_generic.h.
std::vector<Tensor<4,dim> > MappingQGeneric< dim, spacedim >::InternalData::shape_fourth_derivatives |
Values of shape function fourth derivatives. Access by function second_derivative
.
Computed once.
Definition at line 400 of file mapping_q_generic.h.
std::array<std::vector<Tensor<1,dim> >, GeometryInfo<dim>::faces_per_cell *(dim-1)> MappingQGeneric< dim, spacedim >::InternalData::unit_tangentials |
Unit tangential vectors. Used for the computation of boundary forms and normal vectors.
This array has (dim-1)*GeometryInfo::faces_per_cell entries. The first GeometryInfo::faces_per_cell contain the vectors in the first tangential direction for each face; the second set of GeometryInfo::faces_per_cell entries contain the vectors in the second tangential direction (only in 3d, since there we have 2 tangential directions per face), etc.
Filled once.
Definition at line 415 of file mapping_q_generic.h.
const unsigned int MappingQGeneric< dim, spacedim >::InternalData::polynomial_degree |
The polynomial degree of the mapping. Since the objects here are also used (with minor adjustments) by MappingQ, we need to store this.
Definition at line 421 of file mapping_q_generic.h.
const unsigned int MappingQGeneric< dim, spacedim >::InternalData::n_shape_functions |
Number of shape functions. If this is a Q1 mapping, then it is simply the number of vertices per cell. However, since also derived classes use this class (e.g. the Mapping_Q() class), the number of shape functions may also be different.
In general, it is \((p+1)^\text{dim}\), where \(p\) is the polynomial degree of the mapping.
Definition at line 432 of file mapping_q_generic.h.
internal::MatrixFreeFunctions::ShapeInfo<VectorizedArray<double> > MappingQGeneric< dim, spacedim >::InternalData::shape_info |
In case the quadrature rule given represents a tensor product we need to store the evaluations of the 1d polynomials at the the 1d quadrature points. That is what this variable is for.
Definition at line 449 of file mapping_q_generic.h.
|
mutable |
In case the quadrature rule given represents a tensor product we need to store temporary data in this object.
Definition at line 455 of file mapping_q_generic.h.
|
mutable |
In case the quadrature rule given represents a tensor product the values at the mapped support points are stored in this object.
Definition at line 461 of file mapping_q_generic.h.
|
mutable |
In case the quadrature rule given represents a tensor product the values at the quadrature points are stored in this object.
Definition at line 467 of file mapping_q_generic.h.
|
mutable |
In case the quadrature rule given represents a tensor product the gradients at the quadrature points are stored in this object.
Definition at line 473 of file mapping_q_generic.h.
|
mutable |
In case the quadrature rule given represents a tensor product the hessians at the quadrature points are stored in this object.
Definition at line 479 of file mapping_q_generic.h.
bool MappingQGeneric< dim, spacedim >::InternalData::tensor_product_quadrature |
Indicates whether the given Quadrature object is a tensor product.
Definition at line 484 of file mapping_q_generic.h.
|
mutable |
Tensors of covariant transformation at each of the quadrature points. The matrix stored is the Jacobian * G^{-1}, where G = Jacobian^{t} * Jacobian, is the first fundamental form of the map; if dim=spacedim then it reduces to the transpose of the inverse of the Jacobian matrix, which itself is stored in the contravariant
field of this structure.
Computed on each cell.
Definition at line 495 of file mapping_q_generic.h.
|
mutable |
Tensors of contravariant transformation at each of the quadrature points. The contravariant matrix is the Jacobian of the transformation, i.e. \(J_{ij}=dx_i/d\hat x_j\).
Computed on each cell.
Definition at line 504 of file mapping_q_generic.h.
|
mutable |
Auxiliary vectors for internal use.
Definition at line 509 of file mapping_q_generic.h.
|
mutable |
Stores the support points of the mapping shape functions on the cell_of_current_support_points
.
Definition at line 515 of file mapping_q_generic.h.
|
mutable |
Stores the cell of which the mapping_support_points
are stored.
Definition at line 520 of file mapping_q_generic.h.
|
mutable |
The determinant of the Jacobian in each quadrature point. Filled if update_volume_elements.
Definition at line 526 of file mapping_q_generic.h.