From: bangerth Date: Fri, 6 Feb 2009 04:10:21 +0000 (+0000) Subject: Add one more testcase. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfeb48e6b5d1e84428e39d66207ebc4f935d1813;p=dealii-svn.git Add one more testcase. git-svn-id: https://svn.dealii.org/trunk@18340 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/bits/count_dofs_per_block_02.cc b/tests/bits/count_dofs_per_block_02.cc new file mode 100644 index 0000000000..eadcbeb071 --- /dev/null +++ b/tests/bits/count_dofs_per_block_02.cc @@ -0,0 +1,141 @@ +//---------------------------- count_dofs_per_block_02.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2009 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- count_dofs_per_block_02.cc --------------------------- + +// like the _01 testcase, but with a non-primitive element that actually +// defines blocks of non-unit size + + +#include "../tests.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +std::string output_file_name = "count_dofs_per_block_02/output"; + + + +void print (const std::vector &v) +{ + deallog << v.size(); + for (unsigned int i=0; i +void +check () +{ + // create tria and dofhandler + // objects. set different boundary + // and sub-domain ids + Triangulation tria; + GridGenerator::hyper_cube(tria, 0., 1.); + tria.refine_global (1); + for (int i=0; i<2; ++i) + { + tria.begin_active()->set_refine_flag(); + tria.execute_coarsening_and_refinement (); + } + + FESystem fe (FE_RaviartThomas(0), 1, FE_DGQ(0), 1); + DoFHandler dof_handler (tria); + dof_handler.distribute_dofs (fe); + + // no grouping + { + std::vector dpc(dim+1); + DoFTools::count_dofs_per_component (dof_handler, dpc); + print (dpc); + } + + { + std::vector dpc(2); + DoFTools::count_dofs_per_block (dof_handler, dpc); + print (dpc); + } + + + // grouping into less groups than + // components + { + std::vector group(dim+1, 0); + group[dim] = 1; + std::vector dpc(2); + DoFTools::count_dofs_per_component (dof_handler, dpc, false, group); + Assert (dpc.size() == 2, ExcInternalError()); + print (dpc); + } + + { + std::vector group(2, 0); + group[1] = 1; + std::vector dpc(2); + DoFTools::count_dofs_per_block (dof_handler, dpc, group); + Assert (dpc.size() == 2, ExcInternalError()); + print (dpc); + } + + // grouping into more groups than + // components + { + std::vector group(dim+1, 2*dim); + group[dim] = 0; + std::vector dpc(2*dim+1); + DoFTools::count_dofs_per_component (dof_handler, dpc, false, group); + Assert (dpc.size() == 2*dim+1, ExcInternalError()); + print (dpc); + } + + { + std::vector group(2, 2*dim); + group[1] = 0; + std::vector dpc(2*dim+1); + DoFTools::count_dofs_per_block (dof_handler, dpc, group); + Assert (dpc.size() == 2*dim+1, ExcInternalError()); + print (dpc); + } +} + + + +int main() +{ + std::ofstream logfile(output_file_name.c_str()); + logfile << std::setprecision (2); + deallog << std::setprecision (2); + deallog.attach(logfile); + deallog.depth_console(0); + deallog.threshold_double(1.e-10); + + check<2> (); + check<3> (); +} diff --git a/tests/bits/count_dofs_per_block_02/cmp/generic b/tests/bits/count_dofs_per_block_02/cmp/generic new file mode 100644 index 0000000000..32daed286f --- /dev/null +++ b/tests/bits/count_dofs_per_block_02/cmp/generic @@ -0,0 +1,13 @@ + +DEAL::3 29 29 10 +DEAL::2 29 10 +DEAL::2 58 10 +DEAL::2 29 10 +DEAL::5 10 0 0 0 58 +DEAL::5 10 0 0 0 29 +DEAL::4 97 97 97 22 +DEAL::2 97 22 +DEAL::2 291 22 +DEAL::2 97 22 +DEAL::7 22 0 0 0 0 0 291 +DEAL::7 22 0 0 0 0 0 97