}
+
// ============================================================
// PolarManifold
// ============================================================
center(center)
{}
+
+
template <int dim, int spacedim>
Tensor<1,spacedim>
PolarManifold<dim,spacedim>::get_periodicity()
return periodicity;
}
+
+
template <int dim, int spacedim>
Point<spacedim>
PolarManifold<dim,spacedim>::push_forward(const Point<spacedim> &spherical_point) const
return p+center;
}
+
+
template <int dim, int spacedim>
Point<spacedim>
PolarManifold<dim,spacedim>::pull_back(const Point<spacedim> &space_point) const
return p;
}
+
+
template <int dim, int spacedim>
DerivativeForm<1,spacedim,spacedim>
PolarManifold<dim,spacedim>::push_forward_gradient(const Point<spacedim> &spherical_point) const
return DX;
}
+
+
// ============================================================
// SphericalManifold
// ============================================================
center(center)
{}
+
+
template <int dim, int spacedim>
Point<spacedim>
SphericalManifold<dim,spacedim>::
return Point<spacedim>(center + (w*r2+(1.0-w)*r1)*P);
}
+
+
template <int dim, int spacedim>
Tensor<1,spacedim>
SphericalManifold<dim,spacedim>::
}
+
// The main part of the implementation uses the ideas in the publication
//
// Buss, Samuel R., and Jay P. Fillmore.
return center + rho*candidate;
}
+
+
// ============================================================
// CylindricalManifold
// ============================================================
// easier.
Assert (spacedim==3,
ExcMessage("CylindricalManifold can only be used for spacedim==3!"));
-
}
+// ============================================================
+// TorusManifold
+// ============================================================
template <int dim>
Point<3>
TorusManifold<dim>::pull_back(const Point<3> &p) const
+// ============================================================
+// TransfiniteInterpolationManifold
+// ============================================================
template <int dim, int spacedim>
TransfiniteInterpolationManifold<dim,spacedim>::TransfiniteInterpolationManifold()
:
// this is replicated from GeometryInfo::face_to_cell_vertices since we need
// it very often in compute_transfinite_interpolation and the function is
// performance critical
- unsigned int
+ static constexpr unsigned int
face_to_cell_vertices_3d[6][4] =
{
{0, 2, 4, 6},
// this is replicated from GeometryInfo::face_to_cell_lines since we need it
// very often in compute_transfinite_interpolation and the function is
// performance critical
- unsigned int face_to_cell_lines_3d[6][4] =
+ static constexpr unsigned int
+ face_to_cell_lines_3d[6][4] =
{
{8,10, 0, 4},
{9,11, 1, 5},