From: nauber Date: Thu, 17 Jun 1999 06:30:23 +0000 (+0000) Subject: Added slit domain X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34460de907c485256ff600884177c0a4e374ac3a;p=dealii-svn.git Added slit domain git-svn-id: https://svn.dealii.org/trunk@1406 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/grid/grid_generator.h b/deal.II/deal.II/include/grid/grid_generator.h index 9ec58e2c22..707fc7cdf9 100644 --- a/deal.II/deal.II/include/grid/grid_generator.h +++ b/deal.II/deal.II/include/grid/grid_generator.h @@ -98,6 +98,19 @@ class GridGenerator static void hyper_L (Triangulation &tria, const double left = -1., const double right= 1.); + + /** + * Initialize the given + * Triangulation with a hypercube + * with a slit. The slot goes + * from the middle of the top + * boundary to the middle of the + * area. + */ + template + static void hyper_cube_slit (Triangulation &tria, + const double left = 0., + const double right= 1.); }; diff --git a/deal.II/deal.II/source/grid/grid_generator.cc b/deal.II/deal.II/source/grid/grid_generator.cc index ace7d6beec..6b52fed0f8 100644 --- a/deal.II/deal.II/source/grid/grid_generator.cc +++ b/deal.II/deal.II/source/grid/grid_generator.cc @@ -28,6 +28,15 @@ void GridGenerator::hyper_cube<> (Triangulation<1> &tria, +template <> +void GridGenerator::hyper_cube_slit<> (Triangulation<1> &, + const double, + const double) { + Assert (false, ExcInternalError()); +}; + + + template <> void GridGenerator::hyper_L<> (Triangulation<1> &, const double, @@ -71,6 +80,39 @@ void GridGenerator::hyper_cube<> (Triangulation<2> &tria, +template <> +void GridGenerator::hyper_cube_slit<> (Triangulation<2> &tria, + const double left, + const double right) { + const double rl2=(right+left)/2; + const Point<2> vertices[10] = { Point<2>(left, left ), + Point<2>(rl2, left ), + Point<2>(rl2, rl2 ), + Point<2>(left, rl2 ), + Point<2>(right,left ), + Point<2>(right,rl2 ), + Point<2>(rl2, right), + Point<2>(left, right), + Point<2>(right,right), + Point<2>(rl2, left ) }; + const int cell_vertices[4][4] = { { 0,1,2,3 }, + { 9,4,5,2 }, + { 3,2,6,7 }, + { 2,5,8,6 } }; + vector > cells (4, CellData<2>()); + for (unsigned int i=0; i<4; ++i) + { + for (unsigned int j=0; j<4; ++j) + cells[i].vertices[j] = cell_vertices[i][j]; + cells[i].material_id = 0; + }; + tria.create_triangulation (vector >(&vertices[0], &vertices[10]), + cells, + SubCellData()); // no boundary information +}; + + + template <> void GridGenerator::hyper_L<> (Triangulation<2> &tria, const double a, @@ -171,6 +213,15 @@ void GridGenerator::hyper_cube<> (Triangulation<3> &tria, +template <> +void GridGenerator::hyper_cube_slit<> (Triangulation<3> &, + const double, + const double) { + Assert (false, ExcInternalError()); +}; + + + template <> void GridGenerator::hyper_L<> (Triangulation<3> &tria, const double a,