16 #ifndef dealii__composition_manifold_h 17 #define dealii__composition_manifold_h 22 #include <deal.II/base/config.h> 23 #include <deal.II/base/subscriptor.h> 24 #include <deal.II/base/quadrature_lib.h> 25 #include <deal.II/base/thread_management.h> 26 #include <deal.II/base/point.h> 27 #include <deal.II/base/derivative_form.h> 28 #include <deal.II/grid/tria.h> 29 #include <deal.II/grid/tria_iterator.h> 30 #include <deal.II/grid/tria_accessor.h> 31 #include <deal.II/grid/manifold.h> 33 DEAL_II_NAMESPACE_OPEN
66 template <
int dim,
int spacedim=dim,
int chartdim=dim,
67 int intermediate_dim=dim,
int dim1=dim,
int dim2=dim>
122 template <
int dim,
int spacedim,
int chartdim,
int intermediate_dim,
134 ExcMessage(
"The second manifold cannot be periodic."));
139 template <
int dim,
int spacedim,
int chartdim,
int intermediate_dim,
144 return F->pull_back(G->
pull_back(space_point));
149 template <
int dim,
int spacedim,
int chartdim,
int intermediate_dim,
159 template <
int dim,
int spacedim,
int chartdim,
int intermediate_dim,
165 F->push_forward_gradient(chart_point);
172 for (
unsigned int d=0; d<spacedim; ++d)
173 for (
unsigned int c=0; c<chartdim; ++c)
174 for (
unsigned int s=0; s<intermediate_dim; ++s)
175 DF_DG[d][c] += DG[d][s]*DF[s][c];
181 DEAL_II_NAMESPACE_CLOSE
SmartPointer< const ChartManifold< dim2, spacedim, intermediate_dim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > G
virtual Point< chartdim > pull_back(const Point< spacedim > &space_point) const
CompositionManifold(const ChartManifold< dim1, intermediate_dim, chartdim > &F, const ChartManifold< dim2, spacedim, intermediate_dim > &G)
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient(const Point< chartdim > &chart_point) const
static ::ExceptionBase & ExcMessage(std::string arg1)
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient(const Point< chartdim > &chart_point) const
#define Assert(cond, exc)
const Tensor< 1, chartdim > & get_periodicity() const
virtual Point< spacedim > push_forward(const Point< chartdim > &chart_point) const
virtual Point< spacedim > push_forward(const Point< chartdim > &chart_point) const =0
virtual Point< chartdim > pull_back(const Point< spacedim > &space_point) const =0
SmartPointer< const ChartManifold< dim1, intermediate_dim, chartdim >, CompositionManifold< dim, spacedim, chartdim, dim1, dim2, intermediate_dim > > F