![]() |
Reference documentation for deal.II version 9.2.0
|
Tensor product manifold of two ChartManifolds. More...
#include <deal.II/grid/tensor_product_manifold.h>
Public Member Functions | |
| TensorProductManifold (const ChartManifold< dim_A, spacedim_A, chartdim_A > &manifold_A, const ChartManifold< dim_B, spacedim_B, chartdim_B > &manifold_B) | |
| virtual std::unique_ptr< Manifold< dim, spacedim_A+spacedim_B > > | clone () const override |
| virtual Point< chartdim > | pull_back (const Point< spacedim > &space_point) const override |
| virtual Point< spacedim > | push_forward (const Point< chartdim > &chart_point) const override |
| virtual DerivativeForm< 1, chartdim, spacedim > | push_forward_gradient (const Point< chartdim > &chart_point) const override |
Public Member Functions inherited from ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B > | |
| ChartManifold (const Tensor< 1, chartdim > &periodicity=Tensor< 1, chartdim >()) | |
| virtual | ~ChartManifold () override=default |
| virtual Point< spacedim > | get_intermediate_point (const Point< spacedim > &p1, const Point< spacedim > &p2, const double w) const override |
| virtual Point< spacedim > | get_new_point (const ArrayView< const Point< spacedim >> &surrounding_points, const ArrayView< const double > &weights) const override |
| virtual void | get_new_points (const ArrayView< const Point< spacedim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim >> new_points) const override |
| virtual Tensor< 1, spacedim > | get_tangent_vector (const Point< spacedim > &x1, const Point< spacedim > &x2) const override |
| const Tensor< 1, chartdim > & | get_periodicity () const |
Public Member Functions inherited from Manifold< dim, spacedim > | |
| virtual | ~Manifold () override=default |
| Tensor< 1, 2 > | normal_vector (const Triangulation< 2, 2 >::face_iterator &face, const Point< 2 > &p) const |
| Tensor< 1, 3 > | normal_vector (const Triangulation< 3, 3 >::face_iterator &face, const Point< 3 > &p) const |
| void | get_normals_at_vertices (const Triangulation< 2, 2 >::face_iterator &face, FaceVertexNormals &n) const |
| void | get_normals_at_vertices (const Triangulation< 3, 3 >::face_iterator &face, FaceVertexNormals &n) const |
| Point< 1 > | get_new_point_on_face (const Triangulation< 1, 1 >::face_iterator &) const |
| Point< 2 > | get_new_point_on_face (const Triangulation< 1, 2 >::face_iterator &) const |
| Point< 3 > | get_new_point_on_face (const Triangulation< 1, 3 >::face_iterator &) const |
| Point< 1 > | get_new_point_on_quad (const Triangulation< 1, 1 >::quad_iterator &) const |
| Point< 2 > | get_new_point_on_quad (const Triangulation< 1, 2 >::quad_iterator &) const |
| Point< 3 > | get_new_point_on_quad (const Triangulation< 1, 3 >::quad_iterator &) const |
| Point< 3 > | get_new_point_on_hex (const Triangulation< 3, 3 >::hex_iterator &hex) const |
| virtual Point< spacedim > | project_to_manifold (const ArrayView< const Point< spacedim >> &surrounding_points, const Point< spacedim > &candidate) const |
| virtual Point< spacedim > | get_new_point_on_line (const typename Triangulation< dim, spacedim >::line_iterator &line) const |
| virtual Point< spacedim > | get_new_point_on_quad (const typename Triangulation< dim, spacedim >::quad_iterator &quad) const |
| virtual Point< spacedim > | get_new_point_on_hex (const typename Triangulation< dim, spacedim >::hex_iterator &hex) const |
| Point< spacedim > | get_new_point_on_face (const typename Triangulation< dim, spacedim >::face_iterator &face) const |
| Point< spacedim > | get_new_point_on_cell (const typename Triangulation< dim, spacedim >::cell_iterator &cell) const |
| virtual Tensor< 1, spacedim > | normal_vector (const typename Triangulation< dim, spacedim >::face_iterator &face, const Point< spacedim > &p) const |
| virtual void | get_normals_at_vertices (const typename Triangulation< dim, spacedim >::face_iterator &face, FaceVertexNormals &face_vertex_normals) const |
Public Member Functions inherited from Subscriptor | |
| Subscriptor () | |
| Subscriptor (const Subscriptor &) | |
| Subscriptor (Subscriptor &&) noexcept | |
| virtual | ~Subscriptor () |
| Subscriptor & | operator= (const Subscriptor &) |
| Subscriptor & | operator= (Subscriptor &&) noexcept |
| void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| unsigned int | n_subscriptions () const |
| template<typename StreamType > | |
| void | list_subscribers (StreamType &stream) const |
| void | list_subscribers () const |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Static Public Attributes | |
| static const unsigned int | chartdim = chartdim_A + chartdim_B |
| static const unsigned int | spacedim = spacedim_A + spacedim_B |
Private Attributes | |
| std::unique_ptr< const ChartManifold< dim_A, spacedim_A, chartdim_A > > | manifold_A |
| std::unique_ptr< const ChartManifold< dim_B, spacedim_B, chartdim_B > > | manifold_B |
Additional Inherited Members | |
Public Types inherited from Manifold< dim, spacedim > | |
| using | FaceVertexNormals = std::array< Tensor< 1, spacedim >, GeometryInfo< dim >::vertices_per_face > |
Static Public Member Functions inherited from Subscriptor | |
| static ::ExceptionBase & | ExcInUse (int arg1, std::string arg2, std::string arg3) |
| static ::ExceptionBase & | ExcNoSubscriber (std::string arg1, std::string arg2) |
Tensor product manifold of two ChartManifolds.
This manifold will combine the ChartManifolds A and B given in the constructor to form a new ChartManifold by building the tensor product \(A\otimes B\). The first spacedim_A dimensions in the real space and the first chartdim_A dimensions of the chart will be given by manifold A, while the remaining coordinates are given by B. The manifold is to be used by a Triangulation<dim, space_dim_A+space_dim_B>.
An example usage would be the combination of a SphericalManifold with space dimension 2 and a FlatManifold with space dimension 1 to form a cylindrical manifold.
pull_back(), push_forward(), and push_forward_gradient() are implemented by splitting the input argument into inputs for A and B according to the given dimensions and applying the corresponding operations before concatenating the result.
dim_A and dim_B are not used.| dim | Dimension of cells (needs to match first template argument of the Triangulation to be attached to. |
| dim_A | Dimension of ChartManifold A. |
| spacedim_A | Spacial dimension of ChartManifold A. |
| chartdim_A | Chart dimension of ChartManifold A. |
| dim_B | Dimension of ChartManifold B. |
| spacedim_B | Spacial dimension of ChartManifold B. |
| chartdim_B | Chart dimension of ChartManifold B. |
Definition at line 71 of file tensor_product_manifold.h.
| TensorProductManifold< dim, dim_A, spacedim_A, chartdim_A, dim_B, spacedim_B, chartdim_B >::TensorProductManifold | ( | const ChartManifold< dim_A, spacedim_A, chartdim_A > & | manifold_A, |
| const ChartManifold< dim_B, spacedim_B, chartdim_B > & | manifold_B | ||
| ) |
Constructor.
Definition at line 187 of file tensor_product_manifold.h.
|
overridevirtual |
Clone this manifold.
Implements Manifold< dim, spacedim >.
Definition at line 217 of file tensor_product_manifold.h.
|
overridevirtual |
Pull back operation.
Implements ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B >.
Definition at line 249 of file tensor_product_manifold.h.
|
overridevirtual |
Push forward operation.
Implements ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B >.
Definition at line 292 of file tensor_product_manifold.h.
|
overridevirtual |
Gradient.
Reimplemented from ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B >.
Definition at line 344 of file tensor_product_manifold.h.
|
static |
The chart dimension is the sum of the chart dimensions of the manifolds A and B.
Definition at line 79 of file tensor_product_manifold.h.
|
static |
The space dimension is the sum of the space dimensions of the manifolds A and B.
Definition at line 84 of file tensor_product_manifold.h.
|
private |
Definition at line 119 of file tensor_product_manifold.h.
|
private |
Definition at line 122 of file tensor_product_manifold.h.