From 69d2b33acaacef2fd3a45ecd8294ad5e5eeb2d96 Mon Sep 17 00:00:00 2001 From: Ralf Hartmann Date: Tue, 16 Jan 2001 14:01:11 +0000 Subject: [PATCH] First (Test)implementation of HyperBallBoundary::get_intermediate_points_on_quad. git-svn-id: https://svn.dealii.org/trunk@3691 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/include/grid/tria_boundary_lib.h | 12 +++++++ .../deal.II/source/grid/tria_boundary_lib.cc | 35 +++++++++++++++++++ 2 files changed, 47 insertions(+) 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 -- 2.39.5