From ec9daf7204649311323ba66d5ff7315c28aa3586 Mon Sep 17 00:00:00 2001 From: kanschat Date: Fri, 8 Jun 2007 02:22:32 +0000 Subject: [PATCH] add a colorizing function and remove specialization declarations git-svn-id: https://svn.dealii.org/trunk@14767 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/grid/grid_generator.h | 22 +++---- deal.II/deal.II/source/grid/grid_generator.cc | 57 +++++++++++++++++-- 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/deal.II/deal.II/include/grid/grid_generator.h b/deal.II/deal.II/include/grid/grid_generator.h index 1ac18b4633..793575b2e9 100644 --- a/deal.II/deal.II/include/grid/grid_generator.h +++ b/deal.II/deal.II/include/grid/grid_generator.h @@ -780,12 +780,6 @@ class GridGenerator template static void colorize_hyper_rectangle (Triangulation &tria); - /** - * Declaration of the above - * function for 1d. - */ - static void colorize_hyper_rectangle (Triangulation<1> &tria); - /** * Perform the action specified * by the @p colorize flag of @@ -805,16 +799,18 @@ class GridGenerator const double epsilon); /** - * Declaration of the above - * function for 1d. + * Assign boundary number zero to + * the inner shell boundary and 1 + * to the outer. */ + template static void - colorize_subdivided_hyper_rectangle (Triangulation<1> &tria, - const Point<1> &p1, - const Point<1> &p2, - const double epsilon); - + colorize_hyper_shell (Triangulation& tria, + const Point& center, + const double inner_radius, + const double outer_radius); + /** * Solve the Laplace equation for * @p laplace_transformation diff --git a/deal.II/deal.II/source/grid/grid_generator.cc b/deal.II/deal.II/source/grid/grid_generator.cc index 8f7f154eb9..81e5e8553c 100644 --- a/deal.II/deal.II/source/grid/grid_generator.cc +++ b/deal.II/deal.II/source/grid/grid_generator.cc @@ -142,8 +142,9 @@ GridGenerator::hyper_rectangle (Triangulation &tria, #if deal_II_dimension == 1 // Implementation for 1D only +template void -GridGenerator::colorize_hyper_rectangle (Triangulation<1> &) +GridGenerator::colorize_hyper_rectangle (Triangulation &) { // nothing to do in 1d } @@ -1017,10 +1018,11 @@ subdivided_hyper_rectangle (Triangulation<3>& tria, #if deal_II_dimension == 1 // Implementation for 1D only +template void -GridGenerator::colorize_subdivided_hyper_rectangle (Triangulation<1> &, - const Point<1> &, - const Point<1> &, +GridGenerator::colorize_subdivided_hyper_rectangle (Triangulation &, + const Point &, + const Point &, const double ) { // nothing to do in 1d @@ -1152,6 +1154,16 @@ void GridGenerator::hyper_shell (Triangulation &, Assert (false, ExcNotImplemented()); } +// Implementation for 1D only +template +void GridGenerator::colorize_hyper_shell (Triangulation &, + const Point &, + const double, + const double) +{ + Assert (false, ExcNotImplemented()); +} + // Implementation for 1D only template void GridGenerator::cylinder_shell (Triangulation&, @@ -2588,6 +2600,38 @@ void GridGenerator::hyper_cube_with_cylindrical_hole(Triangulation &triangu #endif +#if deal_II_dimension != 1 + +// Empty implementation for 1d is above +template +void +GridGenerator::colorize_hyper_shell( + Triangulation& tria, + const Point& center, + const double inner_radius, + const double outer_radius) +{ + double divide = .5*(inner_radius+outer_radius); + divide *= divide; + + for (typename Triangulation::cell_iterator it = tria.begin(); + it != tria.end(); ++it) + for (unsigned int f=0;f::faces_per_cell;++f) + if (it->at_boundary(f)) + { + // Take first vertex of + // boundary face + Point p = it->face(f)->vertex(0); + p -= center; + if (p.square() > divide) + it->face(f)->set_boundary_indicator(1); + } +} + + +#endif + + // explicit instantiations template void GridGenerator::hyper_cube ( @@ -2672,6 +2716,11 @@ GridGenerator::hyper_cube_with_cylindrical_hole ( Triangulation &, const double, const double, const double, const unsigned int, bool); +template void +GridGenerator::colorize_hyper_shell( + Triangulation& tria, + const Point& center, + const double inner_radius, const double outer_radius); template void GridGenerator:: -- 2.39.5