16 #ifndef dealii__tria_manifold_h 17 #define dealii__tria_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/grid/tria.h> 29 DEAL_II_NAMESPACE_OPEN
47 template <
typename OBJECT>
82 template <
int dim,
int spacedim=dim>
140 get_new_point_on_line (
const typename Triangulation<dim,spacedim>::line_iterator &line)
const;
161 get_new_point_on_quad (
const typename Triangulation<dim,spacedim>::quad_iterator &quad)
const;
183 get_new_point_on_hex (
const typename Triangulation<dim,spacedim>::hex_iterator &hex)
const;
218 template <
int dim,
int spacedim=dim>
250 const double tolerance=1e-10);
304 <<
"The component number " << arg1 <<
" of the point [ " << arg2
305 <<
" ] is not in the interval [ " << -arg4
306 <<
", " << arg3[arg4] <<
"), bailing out.");
376 template <
int dim,
int spacedim=dim,
int chartdim=dim>
487 template <
typename OBJECT>
491 const int spacedim = OBJECT::AccessorType::space_dimension;
492 const int dim = OBJECT::AccessorType::structure_dimension;
494 std::vector<Point<spacedim> > sp;
495 std::vector<double> wp;
507 sp[0] = obj->vertex(0);
509 sp[1] = obj->vertex(1);
516 for (
unsigned int i=0; i<4; ++i)
518 sp[i] = obj->vertex(i);
519 sp[4+i] = ( obj->line(i)->has_children() ?
520 obj->line(i)->child(0)->vertex(1) :
521 obj->line(i)->get_manifold().get_new_point_on_line(obj->line(i)) );
526 std::fill(wp.begin(), wp.begin()+4, 1.0/16.0);
527 std::fill(wp.begin()+4, wp.end(), 3.0/16.0);
530 std::fill(wp.begin(), wp.end(), 1.0/8.0);
536 const unsigned int np =
542 std::vector<Point<3> > *sp3 =
reinterpret_cast<std::vector<Point<3>
> *>(&sp);
550 for (
unsigned int i=0; i<GeometryInfo<dim>::vertices_per_cell; ++i, ++j)
552 (*sp3)[j] = hex->vertex(i);
555 for (
unsigned int i=0; i<GeometryInfo<dim>::lines_per_cell; ++i, ++j)
557 (*sp3)[j] = (hex->line(i)->has_children() ?
558 hex->line(i)->child(0)->vertex(1) :
559 hex->line(i)->get_manifold().get_new_point_on_line(hex->line(i)));
562 for (
unsigned int i=0; i<GeometryInfo<dim>::faces_per_cell; ++i, ++j)
564 (*sp3)[j] = (hex->quad(i)->has_children() ?
565 hex->quad(i)->isotropic_child(0)->vertex(3) :
566 hex->quad(i)->get_manifold().get_new_point_on_quad(hex->quad(i)));
571 if (with_laplace ==
false)
572 std::fill(wp.begin(), wp.end(), 1.0/np);
576 Assert(
false, ExcInternalError());
585 DEAL_II_NAMESPACE_CLOSE
Quadrature< OBJECT::AccessorType::space_dimension > get_default_quadrature(const OBJECT &obj, bool with_laplace=false)
virtual Point< spacedim > get_new_point_on_hex(const typename Triangulation< dim, spacedim >::hex_iterator &hex) const
const FlatManifold< dim, chartdim > sub_manifold
#define Assert(cond, exc)
const Point< spacedim > periodicity
virtual Point< spacedim > get_new_point_on_quad(const typename Triangulation< dim, spacedim >::quad_iterator &quad) const
#define DeclException4(Exception4, type1, type2, type3, type4, outsequence)
Point< spacedim > get_new_point_on_face(const typename Triangulation< dim, spacedim >::face_iterator &face) const