// In case this is not valid, check
// the boundary id, after having
// casted it to a manifold id
- if(mi == numbers::invalid_manifold_id)
+ if(mi == numbers::invalid_manifold_id) {
mi = static_cast<types::manifold_id>
(structdim < dim ?
this->objects().boundary_or_material_id[this->present_index].boundary_id:
this->objects().boundary_or_material_id[this->present_index].material_id);
+ // If structdim < dim or structdim == dim and dim < spacedim,
+ // we have to query the old style boundary, to preserve backward compatibilty,
+ // otherwise we will run into troubles...
+ if( (structdim < dim) ||
+ (dim < spacedim) )
+ return this->tria->get_manifold
+ (numbers::invalid_manifold_id);
+/* *dynamic_cast<const Manifold<spacedim> *> */
+/* (&this->tria->get_boundary(mi)); */
+ else
+ return this->tria->get_manifold
+ (numbers::invalid_manifold_id);
+ }
// Now recover the manifold itself
return this->tria->get_manifold(mi);
#include <deal.II/base/thread_management.h>
#include <deal.II/base/point.h>
#include <deal.II/grid/tria.h>
+#include <deal.II/grid/manifold.h>
DEAL_II_NAMESPACE_OPEN
template <int dim, int space_dim> class Triangulation;
-
/**
* This class is used to represent a boundary to a triangulation.
* When a triangulation creates a new vertex on the boundary of the
* @author Wolfgang Bangerth, 1999, 2001, 2009, Ralf Hartmann, 2001, 2008
*/
template <int dim, int spacedim=dim>
-class Boundary : public Subscriptor
+ class Boundary : public Manifold<spacedim>
{
public:
Point<spacedim>
get_new_point_on_line (const typename Triangulation<dim,spacedim>::line_iterator &line) const = 0;
+ virtual
+ Point<spacedim>
+ get_new_point(const std::vector<Point<spacedim> > &, const std::vector<double> &) const;
+
/**
* Return the point which shall become the common point of the four children
* of a quad at the boundary in three or more spatial dimensions. This