Reference documentation for deal.II version 9.6.0
|
#include <deal.II/fe/mapping_manifold.h>
Public Member Functions | |
InternalData ()=default | |
virtual void | reinit (const UpdateFlags update_flags, const Quadrature< dim > &quadrature) override |
void | initialize_face (const UpdateFlags update_flags, const Quadrature< dim > &quadrature, const unsigned int n_original_q_points) |
void | compute_manifold_quadrature_weights (const Quadrature< dim > &quadrature) |
void | store_vertices (const typename Triangulation< dim, spacedim >::cell_iterator &cell) const |
virtual std::size_t | memory_consumption () const override |
Public Attributes | |
std::vector< Point< spacedim > > | vertices |
Triangulation< dim, spacedim >::cell_iterator | cell |
Quadrature< dim > | quad |
std::vector< std::vector< double > > | cell_manifold_quadrature_weights |
std::vector< double > | vertex_weights |
std::array< std::vector< Tensor< 1, dim > >, GeometryInfo< dim >::faces_per_cell *(dim - 1)> | unit_tangentials |
std::vector< DerivativeForm< 1, dim, spacedim > > | covariant |
std::vector< DerivativeForm< 1, dim, spacedim > > | contravariant |
std::vector< std::vector< Tensor< 1, spacedim > > > | aux |
std::vector< double > | volume_elements |
SmartPointer< const Manifold< dim, spacedim > > | manifold |
UpdateFlags | update_each |
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 162 of file mapping_manifold.h.
|
default |
Constructor.
|
overridevirtual |
This function initializes the data fields related to evaluation of the mapping on cells, implemented by (derived) classes. This function is used both when setting up a field of this class for the first time or when a new Quadrature formula should be considered without creating an entirely new object. This is used when the number of evaluation points is different on each cell, e.g. when using FEPointEvaluation for handling particles or with certain non-matching problem settings.
Reimplemented from Mapping< dim, spacedim >::InternalDataBase.
Definition at line 69 of file mapping_manifold.cc.
void MappingManifold< 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 105 of file mapping_manifold.cc.
void MappingManifold< dim, spacedim >::InternalData::compute_manifold_quadrature_weights | ( | const Quadrature< dim > & | quadrature | ) |
Compute the weights associated to the Manifold object, that need to be passed when computing the location of the quadrature points.
Definition at line 170 of file mapping_manifold.cc.
void MappingManifold< dim, spacedim >::InternalData::store_vertices | ( | const typename Triangulation< dim, spacedim >::cell_iterator & | cell | ) | const |
Store vertices internally.
Definition at line 157 of file mapping_manifold.cc.
|
overridevirtual |
Return an estimate (in bytes) for the memory consumption of this object.
Reimplemented from Mapping< dim, spacedim >::InternalDataBase.
Definition at line 48 of file mapping_manifold.cc.
|
mutable |
|
mutable |
Quadrature<dim> MappingManifold< dim, spacedim >::InternalData::quad |
The actual quadrature on the reference cell.
Computed once.
Definition at line 225 of file mapping_manifold.h.
std::vector<std::vector<double> > MappingManifold< dim, spacedim >::InternalData::cell_manifold_quadrature_weights |
Values of quadrature weights for manifold quadrature formulas.
The Manifold class has a function (Manifold::get_new_point()) that returns new points according to a weighted average of some surrounding points on the Manifold. For each quadrature point, we call this function with a Quadrature formula constructed using the vertices of the current cell, and the values of the basis functions of an FE_Q(1) finite element evaluated at the quadrature point itself. While the vertices of the cell change for every cell, the weights can be computed once for each quadrature point. We store this information in the following variable, where the first index runs through the quadrature points, and the second index runs through the vertex indices.
Computed once.
Definition at line 245 of file mapping_manifold.h.
|
mutable |
A vector of weights for use in Manifold::get_new_point(). For each point (interior to a cell), we compute the weight each vertex has for this point. If the point lies at a vertex, then this vertex has weight one and all others have weight zero. If the point lies interior to a cell, then the weight every vertex has is just the \(d\)-linear shape functions associated with each vertex evaluated at that point.
This array has size GeometryInfo<dim>::vertices_per_cell, but it can't be converted into a fixed size array because it is used as input for Manifold::get_new_point() which wants to see a std::vector<double> for the weights.
Definition at line 261 of file mapping_manifold.h.
std::array<std::vector<Tensor<1, dim> >, GeometryInfo<dim>::faces_per_cell *(dim - 1)> MappingManifold< 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<dim>::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 278 of file mapping_manifold.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 289 of file mapping_manifold.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 298 of file mapping_manifold.h.
|
mutable |
Auxiliary vectors for internal use.
Definition at line 303 of file mapping_manifold.h.
|
mutable |
The determinant of the Jacobian in each quadrature point. Filled if update_volume_elements.
Definition at line 309 of file mapping_manifold.h.
|
mutable |
|
inherited |
A set of update flags specifying the kind of information that an implementation of the Mapping interface needs to compute on each cell or face, i.e., in Mapping::fill_fe_values() and friends.
This set of flags is stored here by implementations of Mapping::get_data(), Mapping::get_face_data(), or Mapping::get_subface_data(), and is that subset of the update flags passed to those functions that require re-computation on every cell. (The subset of the flags corresponding to information that can be computed once and for all already at the time of the call to Mapping::get_data() – or an implementation of that interface – need not be stored here because it has already been taken care of.)