From: Ralf Hartmann Date: Fri, 12 Jan 2001 09:13:52 +0000 (+0000) Subject: New get_intermediate_points_on_quad functions in Boundary in StraightBoundary classes... X-Git-Tag: v8.0.0~19825 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9e40beb3d7aeb90fccc3fe090d2e28b48c85526;p=dealii.git New get_intermediate_points_on_quad functions in Boundary in StraightBoundary classes. Small changes. git-svn-id: https://svn.dealii.org/trunk@3644 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/grid/tria_boundary.cc b/deal.II/deal.II/source/grid/tria_boundary.cc index d2b6b96df5..002ced7f75 100644 --- a/deal.II/deal.II/source/grid/tria_boundary.cc +++ b/deal.II/deal.II/source/grid/tria_boundary.cc @@ -43,6 +43,16 @@ Boundary::get_intermediate_points_on_line ( }; +template +void +Boundary::get_intermediate_points_on_quad ( + const typename Triangulation::quad_iterator &, + vector > &) const +{ + Assert (false, ExcPureVirtualFunctionCalled()); +}; + + template Point StraightBoundary::get_new_point_on_line (const typename Triangulation::line_iterator &line) const @@ -57,7 +67,7 @@ template Point StraightBoundary::get_new_point_on_quad (const typename Triangulation::quad_iterator &) const { - Assert (false, typename Boundary::ExcPureVirtualFunctionCalled()); + Assert (false, typename Boundary::ExcFunctionNotUseful(dim)); return Point(); }; @@ -80,6 +90,20 @@ StraightBoundary::get_new_point_on_quad (const typename Triangulation: #endif +#if deal_II_dimension < 2 + +template +void +StraightBoundary::get_intermediate_points_on_line ( + const typename Triangulation::line_iterator &, + vector > &) const +{ + Assert(false, typename Boundary::ExcFunctionNotUseful(dim)); +} + + +#else + template void StraightBoundary::get_intermediate_points_on_line ( @@ -88,12 +112,52 @@ StraightBoundary::get_intermediate_points_on_line ( { const unsigned int n=points.size(); Assert(n>0, ExcInternalError()); - const double part=1./(n+1); - double position=part; - for (unsigned int i=0; ivertex(0) + position*line->vertex(1); + const double dx=1./(n+1); + double x=dx; + for (unsigned int i=0; ivertex(0) + x*line->vertex(1); }; +#endif + + + +#if deal_II_dimension < 3 + +template +void +StraightBoundary::get_intermediate_points_on_quad ( + const typename Triangulation::quad_iterator &, + vector > &) const +{ + Assert(false, typename Boundary::ExcFunctionNotUseful(dim)); +} + +#else + +template +void +StraightBoundary::get_intermediate_points_on_quad ( + const typename Triangulation::quad_iterator &quad, + vector > &points) const +{ + const unsigned int n=points.size(), + m=static_cast(sqrt(n)); + // is n a square number + Assert(m*m==n, ExcInternalError()); + const double ds=1./(m+1); + double y=ds; + for (unsigned int i=0; ivertex(0) + x*quad->vertex(1))*(1-y)+ + ((1-x)*quad->vertex(3) + x*quad->vertex(2))*y; + } +} + +#endif + // explicit instantiations template class Boundary;