Reference documentation for deal.II version 9.2.0
\(\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\}}\)
Public Member Functions | Private Attributes | List of all members
CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 > Class Template Reference

#include <deal.II/grid/composition_manifold.h>

Inheritance diagram for CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >:
[legend]

Public Member Functions

 CompositionManifold (const ChartManifold< dim1, intermediate_dim, chartdim > &F, const ChartManifold< dim2, spacedim, intermediate_dim > &G)
 
virtual std::unique_ptr< Manifold< dim, spacedim > > clone () const override
 
virtual Point< chartdim > pull_back (const Point< spacedim > &space_point) const
 
virtual Point< spacedim > push_forward (const Point< chartdim > &chart_point) const
 
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient (const Point< chartdim > &chart_point) const
 
- Public Member Functions inherited from ChartManifold< dim, dim, dim >
 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 ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (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)
 

Private Attributes

SmartPointer< const ChartManifold< dim1, intermediate_dim, chartdim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > F
 
SmartPointer< const ChartManifold< dim2, spacedim, intermediate_dim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > G
 

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 ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 

Detailed Description

template<int dim, int spacedim = dim, int chartdim = dim, int intermediate_dim = dim, int dim1 = dim, int dim2 = dim>
class CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >

CompositionManifold. Take two ChartManifold objects, and make their composition. The CompositionManifold object is a ChartManifold going from the chart of the first ChartManifold to the embedding space of the second ChartManifold. If the first ChartManifold is periodic, so is the resulting ChartManifold, with the same periodicity. Periodicity on the second ChartManifold is not allowed, and the constructor will throw an exception if the second Manifold is periodic.

This class only works for dim <= chartdim <= intermediate_spacedim <= spacedim. If you try to instantiate anything different, an Exception will be thrown in one of the ChartManifold classes that violates this condition.

Given the ChartManifold F and the ChartManifold G, this class represents the composition of G after F.

The template parameters have the following meaning:

Template Parameters
dimThe dimension of the resulting ChartManifold
spacedimThe space dimension of the resulting ChartManifold
chartdimThe chart dimension of the resulting ChartManifold
intermediate_dimThe space dimension of the first ChartManifold
dim1The dimension of the first ChartManifold, which coincides also with the chart dimension of the second ChartManifold
dim2The dimension of the second ChartManifold
Author
Luca Heltai, Timo Heister, 2016

Definition at line 74 of file composition_manifold.h.

Constructor & Destructor Documentation

◆ CompositionManifold()

template<int dim, int spacedim, int chartdim, int intermediate_dim, int dim1, int dim2>
CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::CompositionManifold ( const ChartManifold< dim1, intermediate_dim, chartdim > &  F,
const ChartManifold< dim2, spacedim, intermediate_dim > &  G 
)

Construct the composition of the two given manifolds.

Definition at line 141 of file composition_manifold.h.

Member Function Documentation

◆ clone()

template<int dim, int spacedim, int chartdim, int intermediate_dim, int dim1, int dim2>
std::unique_ptr< Manifold< dim, spacedim > > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::clone
overridevirtual

Make a clone of this Manifold.

Implements Manifold< dim, spacedim >.

Definition at line 162 of file composition_manifold.h.

◆ pull_back()

template<int dim, int spacedim, int chartdim, int intermediate_dim, int dim1, int dim2>
Point< chartdim > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::pull_back ( const Point< spacedim > &  space_point) const
virtual

Pull back the given point in spacedim to the Euclidean chartdim dimensional space. This function calls the pull_back() function of G, and then the pull_back() function of F.

Implements ChartManifold< dim, dim, dim >.

Definition at line 178 of file composition_manifold.h.

◆ push_forward()

template<int dim, int spacedim, int chartdim, int intermediate_dim, int dim1, int dim2>
Point< spacedim > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::push_forward ( const Point< chartdim > &  chart_point) const
virtual

Push forward the chartdim dimensional point to a spacedim Euclidean point. The function calls first the push_forward() of F, and then the push_forward() of G.

Implements ChartManifold< dim, dim, dim >.

Definition at line 193 of file composition_manifold.h.

◆ push_forward_gradient()

template<int dim, int spacedim, int chartdim, int intermediate_dim, int dim1, int dim2>
DerivativeForm< 1, chartdim, spacedim > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::push_forward_gradient ( const Point< chartdim > &  chart_point) const
virtual

Return the derivative of the composition of G after F.

Reimplemented from ChartManifold< dim, dim, dim >.

Definition at line 208 of file composition_manifold.h.

Member Data Documentation

◆ F

template<int dim, int spacedim = dim, int chartdim = dim, int intermediate_dim = dim, int dim1 = dim, int dim2 = dim>
SmartPointer< const ChartManifold<dim1, intermediate_dim, chartdim>, CompositionManifold<dim, spacedim, chartdim, dim1, dim2, intermediate_dim> > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::F
private

The first ChartManifold.

Definition at line 119 of file composition_manifold.h.

◆ G

template<int dim, int spacedim = dim, int chartdim = dim, int intermediate_dim = dim, int dim1 = dim, int dim2 = dim>
SmartPointer< const ChartManifold<dim2, spacedim, intermediate_dim>, CompositionManifold<dim, spacedim, chartdim, dim1, dim2, intermediate_dim> > CompositionManifold< dim, spacedim, chartdim, intermediate_dim, dim1, dim2 >::G
private

The second ChartManifold.

Definition at line 128 of file composition_manifold.h.


The documentation for this class was generated from the following file: