From: Ralf Hartmann Date: Tue, 16 Jan 2001 14:01:11 +0000 (+0000) Subject: First (Test)implementation of HyperBallBoundary::get_intermediate_points_on_quad. X-Git-Tag: v8.0.0~19817 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69d2b33acaacef2fd3a45ecd8294ad5e5eeb2d96;p=dealii.git First (Test)implementation of HyperBallBoundary::get_intermediate_points_on_quad. git-svn-id: https://svn.dealii.org/trunk@3691 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/grid/tria_boundary_lib.h b/deal.II/deal.II/include/grid/tria_boundary_lib.h index fc95dca43f..1cda4fe87e 100644 --- a/deal.II/deal.II/include/grid/tria_boundary_lib.h +++ b/deal.II/deal.II/include/grid/tria_boundary_lib.h @@ -69,6 +69,18 @@ class HyperBallBoundary : public StraightBoundary get_intermediate_points_on_line (const typename Triangulation::line_iterator &line, vector > &points) const; + /** + * Refer to the general documentation of + * this class and the documentation of the + * base class. + * + * Only implemented for @p{dim=3} + * and for @p{points.size()==1}. + */ + virtual void + get_intermediate_points_on_quad (const typename Triangulation::quad_iterator &quad, + vector > &points) const; + /** * Return the center of the ball. */ diff --git a/deal.II/deal.II/source/grid/tria_boundary_lib.cc b/deal.II/deal.II/source/grid/tria_boundary_lib.cc index 0f7a6c6cf2..122725071d 100644 --- a/deal.II/deal.II/source/grid/tria_boundary_lib.cc +++ b/deal.II/deal.II/source/grid/tria_boundary_lib.cc @@ -75,6 +75,8 @@ get_new_point_on_quad (const typename Triangulation::quad_iterator &quad) c }; +#if deal_II_dimension == 2 + template <> void HyperBallBoundary<2>::get_intermediate_points_on_line ( @@ -110,6 +112,7 @@ HyperBallBoundary<2>::get_intermediate_points_on_line ( } } +#endif template @@ -122,6 +125,38 @@ HyperBallBoundary::get_intermediate_points_on_line ( } +#if deal_II_dimension == 3 + +template <> +void +HyperBallBoundary<3>::get_intermediate_points_on_quad ( + const Triangulation<3>::quad_iterator &quad, + vector > &points) const +{ + Assert(points.size()==1, ExcNotImplemented()); + StraightBoundary<3>::get_intermediate_points_on_quad (quad, points); + Point<3> &middle=points[0]; + + middle -= center; + // project to boundary + middle *= radius / sqrt(middle.square()); + + middle += center; +} + +#endif + + +template +void +HyperBallBoundary::get_intermediate_points_on_quad ( + const Triangulation::quad_iterator &, + vector > &) const +{ + Assert(false,ExcNotImplemented()); +} + + template Point HyperBallBoundary::get_center () const