 |
Reference documentation for deal.II version 9.1.1
|
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
16 #ifndef dealii_composition_manifold_h
17 #define dealii_composition_manifold_h
22 #include <deal.II/base/config.h>
24 #include <deal.II/base/derivative_form.h>
25 #include <deal.II/base/point.h>
26 #include <deal.II/base/quadrature_lib.h>
27 #include <deal.II/base/std_cxx14/memory.h>
28 #include <deal.II/base/subscriptor.h>
29 #include <deal.II/base/thread_management.h>
31 #include <deal.II/grid/manifold.h>
32 #include <deal.II/grid/tria.h>
33 #include <deal.II/grid/tria_accessor.h>
34 #include <deal.II/grid/tria_iterator.h>
36 DEAL_II_NAMESPACE_OPEN
72 int intermediate_dim = dim,
87 virtual std::unique_ptr<Manifold<dim, spacedim>>
88 clone()
const override;
138 int intermediate_dim,
144 :
ChartManifold<dim, spacedim, chartdim>(F.get_periodicity())
150 Assert(
G.get_periodicity().norm() == 0.0,
151 ExcMessage(
"The second manifold cannot be periodic."));
158 int intermediate_dim,
161 std::unique_ptr<Manifold<dim, spacedim>>
165 return std_cxx14::make_unique<
174 int intermediate_dim,
181 return F->pull_back(G->pull_back(space_point));
189 int intermediate_dim,
196 return G->push_forward(F->push_forward(chart_point));
204 int intermediate_dim,
212 F->push_forward_gradient(chart_point);
215 G->push_forward_gradient(F->push_forward(chart_point));
219 for (
unsigned int d = 0; d < spacedim; ++d)
220 for (
unsigned int c = 0; c < chartdim; ++c)
221 for (
unsigned int s = 0; s < intermediate_dim; ++s)
222 DF_DG[d][c] += DG[d][s] * DF[s][c];
228 DEAL_II_NAMESPACE_CLOSE
virtual Point< spacedim > push_forward(const Point< chartdim > &chart_point) const
SmartPointer< const ChartManifold< dim2, spacedim, intermediate_dim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > G
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient(const Point< chartdim > &chart_point) const
virtual Point< chartdim > pull_back(const Point< spacedim > &space_point) const
static ::ExceptionBase & ExcMessage(std::string arg1)
virtual std::unique_ptr< Manifold< dim, spacedim > > clone() const override
#define Assert(cond, exc)
CompositionManifold(const ChartManifold< dim1, intermediate_dim, chartdim > &F, const ChartManifold< dim2, spacedim, intermediate_dim > &G)
SmartPointer< const ChartManifold< dim1, intermediate_dim, chartdim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > F