From: Ralf Hartmann Date: Fri, 12 Jan 2001 09:12:27 +0000 (+0000) Subject: New get_intermediate_points_on_quad functions in Boundary in StraightBoundary classes. X-Git-Tag: v8.0.0~19826 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56c923b281e8fea578d4ebf97af689747211737b;p=dealii.git New get_intermediate_points_on_quad functions in Boundary in StraightBoundary classes. git-svn-id: https://svn.dealii.org/trunk@3643 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/grid/tria_boundary.h b/deal.II/deal.II/include/grid/tria_boundary.h index c7115e2eb3..3bc68198c3 100644 --- a/deal.II/deal.II/include/grid/tria_boundary.h +++ b/deal.II/deal.II/include/grid/tria_boundary.h @@ -139,10 +139,46 @@ class Boundary : public Subscriptor get_intermediate_points_on_line (const typename Triangulation::line_iterator &line, vector > &points) const; + /** + * Return intermediate points + * on the boundary quad. + * + * The number of points requested + * is given by the size of the + * vector @p{points}. It is + * required that this number is a + * square of another integer, + * i.e. @p{n=points.size()=m*m}. It + * is the task of the derived + * classes to arrange the points + * such they split the quad into + * @p{(m+1)(m+1)} approximately + * equal-sized subquads. + * + * This function is needed by the + * @p{MappingQ} class. As this + * function is not needed for Q1 + * mappings, it is not made pure + * virtual, to avoid the need to + * overload it. The default + * implementation throws an error + * in any case, however. + */ + virtual void + get_intermediate_points_on_quad (const typename Triangulation::quad_iterator &quad, + vector > &points) const; + /** * Exception. */ DeclException0 (ExcPureVirtualFunctionCalled); + + /** + * Exception. + */ + DeclException1 (ExcFunctionNotUseful, + int, + << "The function called is not useful for dim=" << arg1 << "."); }; @@ -202,6 +238,21 @@ class StraightBoundary : public Boundary { get_intermediate_points_on_line (const typename Triangulation::line_iterator &line, vector > &points) const; + /** + * Gives @p{n=points.size()=m*m} + * points that splits the + * p{StraightBoundary} quad into + * @p{(m+1)(m+1)} subquads of equal + * size. + * + * Refer to the general documentation of + * this class and the documentation of the + * base class. + */ + virtual void + get_intermediate_points_on_quad (const typename Triangulation::quad_iterator &quad, + vector > &points) const; + };