From: Bruno Turcksin Date: Wed, 6 Nov 2013 23:03:56 +0000 (+0000) Subject: Add test for graph_coloring. X-Git-Tag: v8.1.0~372 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c17231b1942ba5ad57793e02898832ed55a57b7;p=dealii.git Add test for graph_coloring. git-svn-id: https://svn.dealii.org/trunk@31568 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/base/graph_coloring_05.cc b/tests/base/graph_coloring_05.cc new file mode 100644 index 0000000000..f3d92deb3d --- /dev/null +++ b/tests/base/graph_coloring_05.cc @@ -0,0 +1,105 @@ +// --------------------------------------------------------------------- +// $Id: graph_coloring_02.cc 30045 2013-07-18 19:18:00Z maier $ +// +// Copyright (C) 2003 - 2013 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. +// +// --------------------------------------------------------------------- + + + +// Check that graph coloring works on adapted mesh with a uniform polynomial +// order. + + +#include "../tests.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +template +std::vector get_conflict_indices_cfem( + typename DoFHandler::active_cell_iterator const &it) +{ + std::vector local_dof_indices(it->get_fe().dofs_per_cell); + it->get_dof_indices(local_dof_indices); + + return local_dof_indices; +} + +template +void check() +{ + // Create the Triangulation and the DoFHandler + Triangulation triangulation; + GridGenerator::hyper_cube(triangulation); + triangulation.refine_global(2); + FE_Q fe(2); + DoFHandler dof_handler(triangulation); + dof_handler.distribute_dofs(fe); + + // Create an adapted mesh + typename DoFHandler::active_cell_iterator + cell = dof_handler.begin_active(); + for (; cellcenter()[0]==0.625) && (cell->center()[1]==0.625)) + cell->set_refine_flag(); + } + triangulation.execute_coarsening_and_refinement(); + dof_handler.distribute_dofs(fe); + + // Create the coloring + std::vector::active_cell_iterator> > coloring( + graph_coloring::make_graph_coloring(dof_handler.begin_active(),dof_handler.end(), + std_cxx1x::function (typename + DoFHandler::active_cell_iterator const &)> (&get_conflict_indices_cfem))); + + // Check that a color does not contain a conflict index twice + for (unsigned int color=0; color color_set; + for (unsigned int i=0; i dofs = get_conflict_indices_cfem(coloring[color][i]); + for (unsigned int j=0; j (); + + return 0; +} diff --git a/tests/base/graph_coloring_05.output b/tests/base/graph_coloring_05.output new file mode 100644 index 0000000000..0fd8fc12f0 --- /dev/null +++ b/tests/base/graph_coloring_05.output @@ -0,0 +1,2 @@ + +DEAL::OK