Point<spacedim> center(0.0, 0.0, 0.0);
GridGenerator::hyper_sphere(triangulation, center, Radius);
static const PolarManifold<2,3> sphere;
static const FunctionManifold<3,3,3> rotate("x;-z;y","x;z;-y");
static const CompositionManifold<2,3,3,3,2,3> rotated_sphere(sphere, rotate);
triangulation.set_manifold (0, sphere);
triangulation.set_manifold (1, rotated_sphere);
triangulation.set_all_manifold_ids(0);
for (typename Triangulation<dim,spacedim>::active_cell_iterator
cell=triangulation.begin_active();
cell!=triangulation.end(); ++cell)
{
const Point<spacedim> p = cell->center();
if(std::fabs(p[2]) > 0.5 * Radius) // north and south faces
{
cell->set_all_manifold_ids(1); // cell and edges
std::cout << "Setting RotatedPolarManifold\n";
}
else
{
cell->set_manifold_id(0); // set cell only
std::cout << "Setting PolarManifold\n";
}
}
triangulation.refine_global(3);