From: bangerth Date: Wed, 1 Jun 2011 15:10:53 +0000 (+0000) Subject: Add new test. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7388c0e0ddfd11e3dc6b2c55e9da8d6aa1c0836d;p=dealii-svn.git Add new test. git-svn-id: https://svn.dealii.org/trunk@23757 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/deal.II/refinement_listener_01.cc b/tests/deal.II/refinement_listener_01.cc new file mode 100644 index 0000000000..b6743d2144 --- /dev/null +++ b/tests/deal.II/refinement_listener_01.cc @@ -0,0 +1,120 @@ +//---------------------------- refinement_listener_01.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2006, 2008, 2011 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. +// +//---------------------------- refinement_listener_01.cc --------------------------- + + +// test the various refinement listener functions + + +#include "../tests.h" +#include +#include +#include + +#include +#include +#include + +std::ofstream logfile("refinement_listener_01/output"); + + +template +class RefinementListener : + public Triangulation::RefinementListener +{ + public: + RefinementListener (const std::string &prefix) + : + prefix(prefix) + {} + + virtual + void + pre_refinement_notification (const Triangulation &tria) + { + deallog << prefix << ' ' << "Pre-refinement: " << tria.n_active_cells() << std::endl; + } + + virtual + void + post_refinement_notification (const Triangulation &tria) + { + deallog << prefix << ' ' << "Post-refinement: " << tria.n_active_cells() << std::endl; + } + + virtual + void + copy_notification (const Triangulation &old_tria, + const Triangulation &new_tria) + { + deallog << prefix << ' ' << "Copy: " + << old_tria.n_active_cells() << ' ' + << new_tria.n_active_cells() << std::endl; + } + + virtual + void + create_notification (const Triangulation &tria) + { + deallog << prefix << ' ' << "Create: " << tria.n_active_cells() << std::endl; + } + + private: + std::string prefix; +}; + + +template +void test () +{ + deallog << dim << "D" << std::endl; + + Triangulation tria_1, tria_2; + + GridGenerator::hyper_cube(tria_2); + + RefinementListener rl_1 ("tria_1"); + RefinementListener rl_2 ("tria_2"); + tria_1.add_refinement_listener (rl_1); + tria_2.add_refinement_listener (rl_2); + + // this should print the create note + GridGenerator::hyper_cube(tria_1); + + // this should print the pre- and + // post-refinement note + tria_1.refine_global (1); + + // this should print the copy note + tria_1.clear (); + tria_1.copy_triangulation (tria_2); + + // no longer print anything + tria_1.remove_refinement_listener (rl_1); + tria_1.refine_global (2); +} + + +int main () +{ + deallog << std::setprecision(2); + logfile << std::setprecision(2); + deallog.attach(logfile); + deallog.depth_console(0); + deallog.threshold_double(1.e-10); + + test<1> (); + test<2> (); + test<3> (); + + return 0; +} diff --git a/tests/deal.II/refinement_listener_01/cmp/generic b/tests/deal.II/refinement_listener_01/cmp/generic new file mode 100644 index 0000000000..7c274b6557 --- /dev/null +++ b/tests/deal.II/refinement_listener_01/cmp/generic @@ -0,0 +1,16 @@ + +DEAL::1D +DEAL::tria_1 Create: 1 +DEAL::tria_1 Pre-refinement: 1 +DEAL::tria_1 Post-refinement: 2 +DEAL::tria_2 Copy: 1 1 +DEAL::2D +DEAL::tria_1 Create: 1 +DEAL::tria_1 Pre-refinement: 1 +DEAL::tria_1 Post-refinement: 4 +DEAL::tria_2 Copy: 1 1 +DEAL::3D +DEAL::tria_1 Create: 1 +DEAL::tria_1 Pre-refinement: 1 +DEAL::tria_1 Post-refinement: 8 +DEAL::tria_2 Copy: 1 1