]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Enable computations with different numbers of quadrature points and degrees of freedo...
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sat, 27 Aug 2016 13:48:05 +0000 (15:48 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sun, 28 Aug 2016 07:01:28 +0000 (09:01 +0200)
Cleanup manifolds.

38 files changed:
tests/matrix_free/assemble_matrix_01.cc
tests/matrix_free/assemble_matrix_02.cc
tests/matrix_free/assemble_matrix_03.cc
tests/matrix_free/copy_feevaluation.cc
tests/matrix_free/get_functions_circle.cc
tests/matrix_free/get_functions_common.h
tests/matrix_free/get_functions_gl.cc
tests/matrix_free/get_functions_mappingq.cc
tests/matrix_free/get_functions_q_hierarchical.cc
tests/matrix_free/get_functions_rect.cc
tests/matrix_free/get_values_plain.cc
tests/matrix_free/integrate_functions.cc
tests/matrix_free/integrate_functions_multife.cc
tests/matrix_free/inverse_mass_01.cc
tests/matrix_free/inverse_mass_03.cc
tests/matrix_free/matrix_vector_01.cc
tests/matrix_free/matrix_vector_02.cc
tests/matrix_free/matrix_vector_03.cc
tests/matrix_free/matrix_vector_04.cc
tests/matrix_free/matrix_vector_05.cc
tests/matrix_free/matrix_vector_06.cc
tests/matrix_free/matrix_vector_07.cc
tests/matrix_free/matrix_vector_08.cc
tests/matrix_free/matrix_vector_09.cc
tests/matrix_free/matrix_vector_14.cc
tests/matrix_free/matrix_vector_15.cc
tests/matrix_free/matrix_vector_16.cc
tests/matrix_free/matrix_vector_17.cc
tests/matrix_free/matrix_vector_common.h
tests/matrix_free/matrix_vector_curl.cc
tests/matrix_free/matrix_vector_float.cc
tests/matrix_free/matrix_vector_hp.cc
tests/matrix_free/matrix_vector_mf.h
tests/matrix_free/matrix_vector_mg.cc
tests/matrix_free/matrix_vector_stokes_noflux.cc
tests/matrix_free/no_index_initialize.cc
tests/matrix_free/quadrature_points.cc
tests/matrix_free/thread_correctness_hp.cc

index 6ea1ed12a503b8cf644a6882f7ef3f54ec415cfd..87f91b72a1912916cafab9eb446a81bc072d6854 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 - 2015 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -22,7 +22,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/lac/full_matrix.h>
@@ -122,10 +122,18 @@ void do_test (const DoFHandler<dim> &dof)
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
index 23b5c5dae833b2fa8cdb917ba17ac8ad96a42572..04ae529d6ef170690eac9ea7d9c8de63727d6226 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 - 2015 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -21,7 +21,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/lac/full_matrix.h>
@@ -174,10 +174,18 @@ void do_test (const DoFHandler<dim> &dof)
 template <int dim>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim == 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
index dbb7b860821b295af82a6b17e8558c02ccc30e51..33da884da549d56bef0be18c83002919963ac505 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 - 2015 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -23,7 +23,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
 #include <deal.II/lac/full_matrix.h>
@@ -162,10 +162,18 @@ void do_test (const DoFHandler<dim> &dof)
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   tria.refine_global(5-dim);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
index dbd843b64cb0ea3b24000c127ddd2a32945e0fe7..51079726cf4b2edf9dc973d47868436958a47733 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2015 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -32,6 +32,7 @@ std::ofstream logfile("output");
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
@@ -124,12 +125,16 @@ private:
 template <int dim, int fe_degree>
 void test ()
 {
+  SphericalManifold<dim> manifold;
+  HyperShellBoundary<dim> boundary;
   Triangulation<dim>   triangulation;
   GridGenerator::hyper_shell (triangulation, Point<dim>(),
                               0.5, 1., 96, true);
-  static HyperShellBoundary<dim> boundary;
-  triangulation.set_boundary (0, boundary);
-  triangulation.set_boundary (1, boundary);
+  triangulation.set_all_manifold_ids(0);
+  triangulation.set_all_manifold_ids_on_boundary(1);
+  triangulation.set_manifold (0, manifold);
+  triangulation.set_manifold (1, boundary);
+
   triangulation.begin_active()->set_refine_flag();
   triangulation.last()->set_refine_flag();
   triangulation.execute_coarsening_and_refinement();
@@ -164,8 +169,7 @@ void test ()
   stokes_sub_blocks[dim] = 1;
   DoFRenumbering::component_wise (dof_handler, stokes_sub_blocks);
 
-  std::set<unsigned char> no_normal_flux_boundaries;
-  no_normal_flux_boundaries.insert (0);
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (1);
   DoFTools::make_hanging_node_constraints (dof_handler,
                                            constraints);
@@ -345,4 +349,3 @@ int main ()
     deallog.pop();
   }
 }
-
index 2a59f228c69da59c103da9f146103d284161ce66..d2fe6fd060260a424d648833596ae5bb6303432c 100644 (file)
@@ -31,10 +31,18 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
@@ -51,4 +59,3 @@ void test ()
 
   do_test <dim, fe_degree, double> (dof, constraints);
 }
-
index b33b521ae07d170e3c20ff9dd8130549b384bd66..039dd4bf8de612e95a4c16844d7e7842a977e496 100644 (file)
@@ -1,7 +1,17 @@
-//------------------  get_functions_common.h  ------------------------
-//    Version: $Name$
+// ---------------------------------------------------------------------
 //
-//------------------  get_functions_common.h  ------------------------
+// Copyright (C) 2011 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
 
 
 // this is a template for getting the function values and comparing them with
@@ -19,7 +29,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
index b1df4522a764fc68591ed523d47ecc4acf877cb4..43ceb7b845869d0413bd48fd3d4ed65d3775807c 100644 (file)
@@ -34,10 +34,18 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
@@ -82,4 +90,3 @@ void test ()
   MatrixFreeTest<dim,fe_degree,fe_degree+1,number> mf (mf_data, mapping);
   mf.test_functions (solution);
 }
-
index 377fa92907fbb85a57b6f63a1f9c91715c46e8a3..9b7f97d7921b400ff03debec99da1f2c2608dad3 100644 (file)
@@ -32,10 +32,18 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
@@ -85,4 +93,3 @@ void test ()
   mf.test_functions(solution);
   deallog << std::endl;
 }
-
index 0a875a996f1649a163789a851f23fcaaf76f3146..3434d2fba8984eff3328b5f50b52ccd6bfbc8c73 100644 (file)
@@ -37,10 +37,18 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
@@ -85,4 +93,3 @@ void test ()
   MatrixFreeTest<dim,fe_degree,fe_degree+1,number> mf (mf_data, mapping);
   mf.test_functions (solution);
 }
-
index 7697a797246492179fda43627fe8567ab38ec009..e875f40f6f86ec686f3ae2d07a0316efa1eaf58a 100644 (file)
@@ -53,10 +53,18 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
@@ -105,4 +113,3 @@ void test ()
     sub_test <dim,fe_degree,fe_degree+3,number> (dof, constraints, mf_data,
                                                  solution);
 }
-
index df50452263d1b8d089552840e8576815fb60f0dd..8623ce0b78ed4247c151047e3abec8e9ce25ae26 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -140,11 +140,11 @@ void do_test (const DoFHandler<dim> &dof,
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_shell (tria, Point<dim>(), 1., 2., 96, true);
-  static const HyperShellBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
-  tria.set_boundary (1, boundary);
+  tria.set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
 
   // refine a few cells
   for (unsigned int i=0; i<11-3*dim; ++i)
@@ -191,4 +191,3 @@ int main ()
     deallog.pop();
   }
 }
-
index 071b473bced942cd3da5bb33125add33c0dddb12..4e6255b8ec7f429c2b9fd930e61b119eb6c5beaa 100644 (file)
@@ -29,7 +29,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -145,13 +145,19 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
   typename Triangulation<dim>::active_cell_iterator
   cell = tria.begin_active (),
   endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
@@ -231,4 +237,3 @@ int main ()
     deallog.pop();
   }
 }
-
index 82a42cfdb202f93659095b6db2c17e3a260a55e7..a3a025954e0426b290998948eda9fafd17993437 100644 (file)
@@ -30,7 +30,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -226,13 +226,19 @@ void test ()
 {
   // create hyper ball geometry and refine some
   // cells
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
   typename Triangulation<dim>::active_cell_iterator
   cell = tria.begin_active (),
   endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
@@ -354,4 +360,3 @@ int main ()
     deallog.pop();
   }
 }
-
index b86f057fc7c8480424365712cb2c5d0701d4830d..a410d4b0ce1a8907e405972863a590f549772479 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 - 2015 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -24,7 +24,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_dgq.h>
@@ -163,18 +163,24 @@ void do_test (const DoFHandler<dim> &dof)
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
index ce00f04911964de50cffb731634f89a4cf15ff60..b80bb3170ee3497291672e857d8fe094949ff755 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/fe/mapping_q.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_dgq.h>
@@ -174,18 +174,24 @@ void do_test (const DoFHandler<dim> &dof)
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
index 47341f1ce4371e2c550a4c219182fc2fc6d44cfd..d6abb70ad09fce141728349c1df43c08f3e2f6f8 100644 (file)
@@ -40,6 +40,6 @@ void test ()
   ConstraintMatrix constraints;
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
 
index 48b687e51f2a77163643582fae9f463fe4c6376d..b8495261048bcd822bae5ef0cbc8a07961e69ffa 100644 (file)
@@ -43,5 +43,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index bf3bcd94a6bf3703dfa9587c2f8d3477e04038ca..3628e2e6873cf226000e21f68081455713162a64 100644 (file)
@@ -71,5 +71,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index 99805606377b164ed2135fb1a86f5261bf45ca41..8cdd4b82cf2c8233d0a636ce1c72edbcb3d67d0b 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2014 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -30,12 +30,12 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_shell (tria, Point<dim>(),
                               0.5, 1., 96, true);
-  static const HyperShellBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
-  tria.set_boundary (1, boundary);
+  tria.set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   if (dim == 2)
     tria.refine_global (2);
 
@@ -46,5 +46,5 @@ void test ()
   DoFTools::make_hanging_node_constraints(dof, constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index 707daa7304fb2704e4f3c610de5b70e5736ed98f..86b1d196c715059c6d0aa8d6ce359f8f8664c88d 100644 (file)
@@ -76,5 +76,5 @@ void test ()
   DoFTools::make_hanging_node_constraints(dof, constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index 5579e49debb9f1976b3d0ce14dfb89daf00698dc..140b6ce6eb036593c8c645fc66f08df75ddd7220 100644 (file)
@@ -70,5 +70,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index dca48f3223ba3e9ea8226e4a960f6ae5bb1bfac6..b2c39699c86d359441a1445f4250ee66703e1428 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2014-2014 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -35,13 +35,18 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
   typename Triangulation<dim>::active_cell_iterator
   cell = tria.begin_active (),
   endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+  cell = tria.begin_active();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
@@ -83,8 +88,8 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 
   // test with coloring only as well
-  do_test<dim, fe_degree, double> (dof, constraints, 2);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints, 2);
 }
index 847dd82cb91dea243cbd48b71be2fbfc266107b1..397b905c733f8e7561ffcccb006531a18e91caca 100644 (file)
@@ -69,5 +69,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index 32fb47501c508c31c03fd16014bb58ec6d3bcb75..da5333a70794fe626de2353d163215639602a87f 100644 (file)
@@ -68,5 +68,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
index f4a69aeaa93bf2b40939aef7a603c31526fb8e05..8c098f46154d1baa19a19a4a143abf31c1225fa5 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -34,18 +34,23 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
@@ -56,6 +61,5 @@ void test ()
   dof.distribute_dofs(fe);
   ConstraintMatrix constraints;
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
-
index 46df5d9db62a588ac4ca7f2918c2e3c8a4425615..6df35b9ebf7768cc30cdf93ce769520127c20c23 100644 (file)
@@ -24,7 +24,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -177,18 +177,24 @@ void do_test (const DoFHandler<dim> &dof,
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
index b2a87daec8b4984811fc12132cda36e0d7c067fe..ad6f4cbeba9e53722166c6da1956b9c00133caf7 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/matrix_free/fe_evaluation.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -181,18 +181,24 @@ void do_test (const DoFHandler<dim>  &dof,
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
index 2e6d4785cf1e5e673e5dd2a38a8e4026c91f583b..50ba2cb34ee62b3e0f4c06f3d529655b8abdc491 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2014 by the deal.II authors
+// Copyright (C) 2014 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -33,18 +33,23 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   if (dim < 3 || fe_degree < 2)
     tria.refine_global(1);
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
   tria.execute_coarsening_and_refinement();
-  typename Triangulation<dim>::active_cell_iterator
-  cell = tria.begin_active (),
-  endc = tria.end();
+  cell = tria.begin_active ();
   for (; cell!=endc; ++cell)
     if (cell->center().norm()<1e-8)
       cell->set_refine_flag();
@@ -59,8 +64,5 @@ void test ()
                                             constraints);
   constraints.close();
 
-  do_test<dim, fe_degree, double> (dof, constraints);
+  do_test<dim, fe_degree, double, fe_degree+1> (dof, constraints);
 }
-
-
-
index 55271faff7fe5eb20f3ab8297c30097d256f229d..87c97352c3f362cd0aad17020746258af3ba1e91 100644 (file)
@@ -1,7 +1,17 @@
-//------------------  matrix_vector_common.h  ------------------------
-//    Version: $Name$
+// ---------------------------------------------------------------------
 //
-//------------------  matrix_vector_common.h  ------------------------
+// Copyright (C) 2013 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
 
 
 // this is a template for matrix-vector products with the Helmholtz equation
@@ -18,7 +28,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -38,7 +48,7 @@ void test ();
 
 
 
-template <int dim, int fe_degree, typename number>
+template <int dim, int fe_degree, typename number, int n_q_points_1d>
 void do_test (const DoFHandler<dim> &dof,
               const ConstraintMatrix &constraints,
               const unsigned int     parallel_option = 0)
@@ -51,9 +61,10 @@ void do_test (const DoFHandler<dim> &dof,
   //std::cout << "Number of degrees of freedom: " << dof.n_dofs() << std::endl;
   //std::cout << "Number of constraints: " << constraints.n_constraints() << std::endl;
 
+  MappingQGeneric<dim> mapping(fe_degree);
   MatrixFree<dim,number> mf_data;
   {
-    const QGauss<1> quad (fe_degree+1);
+    const QGauss<1> quad (n_q_points_1d);
     typename MatrixFree<dim,number>::AdditionalData data;
     if (parallel_option == 1)
       data.tasks_parallel_scheme =
@@ -69,10 +80,10 @@ void do_test (const DoFHandler<dim> &dof,
       }
     data.tasks_block_size = 7;
 
-    mf_data.reinit (dof, constraints, quad, data);
+    mf_data.reinit (mapping, dof, constraints, quad, data);
   }
 
-  MatrixFreeTest<dim,fe_degree,number> mf (mf_data);
+  MatrixFreeTest<dim,fe_degree,number,Vector<number>,n_q_points_1d> mf (mf_data);
   Vector<number> in (dof.n_dofs()), out (dof.n_dofs());
   Vector<number> in_dist (dof.n_dofs());
   Vector<number> out_dist (in_dist);
@@ -98,9 +109,9 @@ void do_test (const DoFHandler<dim> &dof,
   }
   SparseMatrix<double> sparse_matrix (sparsity);
   {
-    QGauss<dim>  quadrature_formula(fe_degree+1);
+    QGauss<dim>  quadrature_formula(n_q_points_1d);
 
-    FEValues<dim> fe_values (dof.get_fe(), quadrature_formula,
+    FEValues<dim> fe_values (mapping, dof.get_fe(), quadrature_formula,
                              update_values    |  update_gradients |
                              update_JxW_values);
 
@@ -165,4 +176,3 @@ int main ()
     deallog.pop();
   }
 }
-
index c1783108ec21a1fc6e31adf23c8a389ebac6f9e8..a465ed80a0cdf50a4110020db6096431cb88f1b3 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2015 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -33,7 +33,7 @@ std::ofstream logfile("output");
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/dofs/dof_renumbering.h>
@@ -104,10 +104,17 @@ private:
 template <int dim, int fe_degree>
 void test ()
 {
-  Triangulation<dim>   tria;
+  const SphericalManifold<dim> manifold;
+  Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   tria.refine_global(4-dim);
 
   // refine a few cells
@@ -286,4 +293,3 @@ int main ()
     deallog.pop();
   }
 }
-
index b38dade5ecd00215528182693cda6ed209b0a6ce..30652b5eebc610db546bccd39cc94b274fef4362 100644 (file)
@@ -69,5 +69,5 @@ void test ()
   constraints.close();
 
   deallog.threshold_double (5e-6);
-  do_test<dim, fe_degree, float> (dof, constraints);
+  do_test<dim, fe_degree, float, fe_degree+1> (dof, constraints);
 }
index 2a458bbad25dadea0ec141fd3a09560564b48965..8a01488468aad7f921299c31cc70d2ca36d7b829 100644 (file)
@@ -48,32 +48,32 @@ public:
     std::pair<unsigned int,unsigned int> subrange_deg =
       data.create_cell_subrange_hp (cell_range, 1);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,1,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,1,Vector<Number>,2> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 2);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,2,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,2,Vector<Number>,3> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 3);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,3,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,3,Vector<Number>,4> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 4);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,4,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,4,Vector<Number>,5> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 5);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,5,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,5,Vector<Number>,6> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 6);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,6,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,6,Vector<Number>,7> (data, dst, src,
+                                                  subrange_deg);
     subrange_deg = data.create_cell_subrange_hp (cell_range, 7);
     if (subrange_deg.second > subrange_deg.first)
-      helmholtz_operator<dim,7,Vector<Number> > (data, dst, src,
-                                                 subrange_deg);
+      helmholtz_operator<dim,7,Vector<Number>,8> (data, dst, src,
+                                                  subrange_deg);
   }
 
   void vmult (Vector<Number>       &dst,
@@ -96,10 +96,17 @@ void test ()
     return;
 
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   tria.refine_global(1);
 
   // refine a few cells
@@ -233,4 +240,3 @@ void test ()
   const double diff_norm = result_mf.linfty_norm();
   deallog << "Norm of difference: " << diff_norm << std::endl << std::endl;
 }
-
index 3b713a16e6d51768658b0c002f178ecb281274bb..461e74f4e482d4075643309886fe8114bf9a4284 100644 (file)
@@ -1,7 +1,17 @@
-//------------------  matrix_vector_common.h  ------------------------
-//    Version: $Name$
+// ---------------------------------------------------------------------
 //
-//------------------  matrix_vector_common.h  ------------------------
+// Copyright (C) 2013 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
 
 
 // this is a template for matrix-vector products with the Helmholtz equation
@@ -18,7 +28,7 @@
 #include <deal.II/lac/la_parallel_vector.h>
 
 
-template <int dim, int fe_degree, typename VectorType>
+template <int dim, int fe_degree, typename VectorType, int n_q_points_1d>
 void
 helmholtz_operator (const MatrixFree<dim,typename VectorType::value_type> &data,
                     VectorType                                            &dst,
@@ -26,7 +36,7 @@ helmholtz_operator (const MatrixFree<dim,typename VectorType::value_type> &data,
                     const std::pair<unsigned int,unsigned int>            &cell_range)
 {
   typedef typename VectorType::value_type Number;
-  FEEvaluation<dim,fe_degree,fe_degree+1,1,Number> fe_eval (data);
+  FEEvaluation<dim,fe_degree,n_q_points_1d,1,Number> fe_eval (data);
   const unsigned int n_q_points = fe_eval.n_q_points;
 
   for (unsigned int cell=cell_range.first; cell<cell_range.second; ++cell)
@@ -46,7 +56,7 @@ helmholtz_operator (const MatrixFree<dim,typename VectorType::value_type> &data,
 
 
 
-template <int dim, int fe_degree, typename Number, typename VectorType=Vector<Number> >
+template <int dim, int fe_degree, typename Number, typename VectorType=Vector<Number>, int n_q_points_1d=fe_degree+1>
 class MatrixFreeTest
 {
 public:
@@ -64,7 +74,7 @@ public:
                                    VectorType &,
                                    const VectorType &,
                                    const std::pair<unsigned int,unsigned int> &)>
-    wrap = helmholtz_operator<dim,fe_degree,VectorType>;
+    wrap = helmholtz_operator<dim,fe_degree,VectorType,n_q_points_1d>;
     data.cell_loop (wrap, dst, src);
   };
 
index aefd1a87f751634185158150b44bb7ab761dcfe0..1f84da8844d4fbcecffe7b4953a72af7f6f8ebe4 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2015 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -34,10 +34,17 @@ std::ofstream logfile("output");
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   tria.refine_global(5-dim);
 
   FE_Q<dim> fe (fe_degree);
@@ -57,9 +64,10 @@ void test ()
   //std::cout << "Number of degrees of freedom: " << dof.n_dofs() << std::endl;
 
   // set up MatrixFree
+  MappingQGeneric<dim> mapping(fe_degree);
   QGauss<1> quad (fe_degree+1);
   MatrixFree<dim> mf_data;
-  mf_data.reinit (dof, constraints, quad);
+  mf_data.reinit (mapping, dof, constraints, quad);
   SparsityPattern sparsity;
   SparseMatrix<double> system_matrix;
   {
@@ -95,7 +103,7 @@ void test ()
       mg_constraints[level].close();
       typename MatrixFree<dim>::AdditionalData data;
       data.level_mg_handler = level;
-      mg_matrices[level].reinit(dof, mg_constraints[level], quad, data);
+      mg_matrices[level].reinit(mapping, dof, mg_constraints[level], quad, data);
 
       DynamicSparsityPattern csp;
       csp.reinit (dof.n_dofs(level), dof.n_dofs(level));
@@ -109,7 +117,7 @@ void test ()
   // discretization and on all levels
   {
     QGauss<dim> quad (fe_degree+1);
-    FEValues<dim> fe_values (fe, quad,
+    FEValues<dim> fe_values (mapping, fe, quad,
                              update_values    |  update_gradients |
                              update_JxW_values);
     const unsigned int n_quadrature_points = quad.size();
@@ -213,4 +221,3 @@ void test ()
     }
   deallog << std::endl;
 }
-
index 45a3e19fe65236f67f101758d151085307289151..dcd2e5fb6efa5f8e0a16d23d60fdb8a2299d277d 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2013 - 2015 by the deal.II authors
+// Copyright (C) 2013 - 2016 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -33,6 +33,7 @@ std::ofstream logfile("output");
 #include <deal.II/lac/block_vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/grid/tria_boundary_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
@@ -122,12 +123,16 @@ private:
 template <int dim, int fe_degree>
 void test ()
 {
+  SphericalManifold<dim> manifold;
+  HyperShellBoundary<dim> boundary;
   Triangulation<dim>   triangulation;
   GridGenerator::hyper_shell (triangulation, Point<dim>(),
                               0.5, 1., 96, true);
-  static HyperShellBoundary<dim> boundary;
-  triangulation.set_boundary (0, boundary);
-  triangulation.set_boundary (1, boundary);
+  triangulation.set_all_manifold_ids(0);
+  triangulation.set_all_manifold_ids_on_boundary(1);
+  triangulation.set_manifold (0, manifold);
+  triangulation.set_manifold (1, boundary);
+
   triangulation.begin_active()->set_refine_flag();
   triangulation.last()->set_refine_flag();
   triangulation.execute_coarsening_and_refinement();
@@ -162,7 +167,7 @@ void test ()
   stokes_sub_blocks[dim] = 1;
   DoFRenumbering::component_wise (dof_handler, stokes_sub_blocks);
 
-  std::set<unsigned char> no_normal_flux_boundaries;
+  std::set<types::boundary_id> no_normal_flux_boundaries;
   no_normal_flux_boundaries.insert (0);
   no_normal_flux_boundaries.insert (1);
   DoFTools::make_hanging_node_constraints (dof_handler,
@@ -343,4 +348,3 @@ int main ()
     deallog.pop();
   }
 }
-
index ee6d2f69851e35f429fbc772767f42ef90b3d031..462f2bac300410162dcf1a2ebccb9e54fa772521 100644 (file)
@@ -31,7 +31,7 @@ std::ofstream logfile("output");
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -170,10 +170,18 @@ int main ()
 template <int dim, int fe_degree>
 void test ()
 {
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
+
   // refine first and last cell
   tria.begin(tria.n_levels()-1)->set_refine_flag();
   tria.last()->set_refine_flag();
index a86f7af11778e13c39ed552ba08441372cc95d9a..137c1653bb9d2f502f3e788d78c99e4a45f787ec 100644 (file)
@@ -27,7 +27,7 @@
 #include <deal.II/lac/vector.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/manifold_lib.h>
 #include <deal.II/dofs/dof_tools.h>
 #include <deal.II/dofs/dof_handler.h>
 #include <deal.II/lac/constraint_matrix.h>
@@ -46,10 +46,17 @@ template <int dim, int fe_degree>
 void test ()
 {
   typedef double number;
+  const SphericalManifold<dim> manifold;
   Triangulation<dim> tria;
   GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active (),
+  endc = tria.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      if (cell->at_boundary(f))
+        cell->face(f)->set_all_manifold_ids(0);
+  tria.set_manifold (0, manifold);
   tria.refine_global(5-dim);
 
   MappingQ<dim> mapping (4);
@@ -119,4 +126,3 @@ int main ()
     deallog.pop();
   }
 }
-
index feb4e272101794425914f378df126fcdd0351ba4..8041caf3661136547f74c1275ed6841a1aec1e15 100644 (file)
@@ -52,7 +52,7 @@ public:
 #define CALL_METHOD(degree)                                             \
   subrange_deg = data.create_cell_subrange_hp(cell_range, degree);    \
   if (subrange_deg.second > subrange_deg.first)                       \
-    helmholtz_operator<dim,degree,Vector<Number> > (data, dst, src, subrange_deg)
+    helmholtz_operator<dim,degree,Vector<Number>,degree+1> (data, dst, src, subrange_deg)
 
     CALL_METHOD(1);
     CALL_METHOD(2);
@@ -226,4 +226,3 @@ void test ()
   do_test<dim,float>(parallel_option);
   deallog.pop();
 }
-

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.