From ac3c74d33f280dccf124cf00919386edd13349b1 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Mon, 8 Oct 2012 02:38:53 +0000 Subject: [PATCH] New, failing test. git-svn-id: https://svn.dealii.org/trunk@26995 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/fail/anisotropic_crash.cc | 68 +++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/fail/anisotropic_crash.cc diff --git a/tests/fail/anisotropic_crash.cc b/tests/fail/anisotropic_crash.cc new file mode 100644 index 0000000000..dc7084c4dd --- /dev/null +++ b/tests/fail/anisotropic_crash.cc @@ -0,0 +1,68 @@ +//---------------------------- anisotropic_crash.cc --------------------------- +// anisotropic_crash.cc,v 1.1 2003/06/09 15:59:07 wolf Exp +// Version: +// +// Copyright (C) 2012 by the deal.II authors and Abner Salgado +// +// 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. +// +//---------------------------- anisotropic_crash.cc --------------------------- + + +// Trying to catch a bug in the construction of patches when +// there is anisotropic refinement + + +#include +#include +#include +#include + +#include +#include + +/// to generate random numbers +#include + +using namespace dealii; + +int main(){ + /// Create triangulation, DOF handler and finite element space + Triangulation<2> tri; + DoFHandler<2> dh( tri ); + FE_Q<2> fe(1); + GridGenerator::hyper_cube( tri ); + tri.refine_global( 2 ); + const unsigned n_cycles = 8; + for( unsigned i=0; i > vertices = tri.get_vertices(); + for( unsigned v=0; v< n_vert; ++v ){ + std::vector< DoFHandler<2>::active_cell_iterator > patch + = GridTools::find_cells_adjacent_to_vertex( dh, v ); + } + /// loop over cells and randomly refine + DoFHandler<2>::active_cell_iterator cell = dh.begin_active(), end = dh.end(); + for( ; cell != end; ++cell ){ + int random = rand()%4; + /// If random is 0 or 1 we cut x or y, resp. + if( random < 2 ) + cell->set_refine_flag( RefinementCase<2>::cut_axis( random ) ); + /// If random is 2 we refine isotropically + if( random == 2 ) + cell->set_refine_flag(); + /// If random is 3 we don't refine + } + /// refine the mesh + tri.prepare_coarsening_and_refinement(); + tri.execute_coarsening_and_refinement(); + } + dh.clear(); + return 0; +} -- 2.39.5