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 188 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 250 of file tensor_product_manifold.h.
|
overridevirtual |
Push forward operation.
Implements ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B >.
Definition at line 293 of file tensor_product_manifold.h.
|
overridevirtual |
Gradient.
Reimplemented from ChartManifold< dim, spacedim_A+spacedim_B, chartdim_A+chartdim_B >.
Definition at line 345 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.