From: bangerth Date: Fri, 3 Jun 2011 00:08:37 +0000 (+0000) Subject: New test, signal/connection style. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=16551da0f83d93739028c730d733cccea0b2e7e1;p=dealii-svn.git New test, signal/connection style. git-svn-id: https://svn.dealii.org/trunk@23776 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/deal.II/refinement_listener_02.cc b/tests/deal.II/refinement_listener_02.cc new file mode 100644 index 0000000000..9aa96ea249 --- /dev/null +++ b/tests/deal.II/refinement_listener_02.cc @@ -0,0 +1,158 @@ +//---------------------------- refinement_listener_02.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_02.cc --------------------------- + + +// test the various refinement listener functions. do this new-style, +// i.e. through the signals mechanism + + +#include "../tests.h" +#include +#include +#include + +#include +#include +#include + +std::ofstream logfile("refinement_listener_02/output"); + + + +template +void +pre_refinement_notification (const std::string &prefix, + const Triangulation &tria) +{ + deallog << prefix << ' ' << "Pre-refinement: " << tria.n_active_cells() << std::endl; +} + + +template +void +post_refinement_notification (const std::string &prefix, + const Triangulation &tria) +{ + deallog << prefix << ' ' << "Post-refinement: " << tria.n_active_cells() << std::endl; +} + + +template +void +copy_notification (const std::string &prefix, + const Triangulation &old_tria, + const Triangulation &new_tria) +{ + deallog << prefix << ' ' << "Copy: " + << old_tria.n_active_cells() << ' ' + << new_tria.n_active_cells() << std::endl; +} + + +template +void +create_notification (const std::string &prefix, + const Triangulation &tria) +{ + deallog << prefix << ' ' << "Create: " << tria.n_active_cells() << std::endl; +} + + +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); + + boost::signals2::connection connections_1[4] + = {tria_1.signals.pre_refinement + .connect (std_cxx1x::bind (&pre_refinement_notification, + "tria_1", + std_cxx1x::cref(tria_1))), + tria_1.signals.post_refinement + .connect (std_cxx1x::bind (&post_refinement_notification, + "tria_1", + std_cxx1x::cref(tria_1))), + tria_1.signals.create + .connect (std_cxx1x::bind (&create_notification, + "tria_1", + std_cxx1x::cref(tria_1))), + tria_1.signals.copy + .connect (std_cxx1x::bind (©_notification, + "tria_1", + std_cxx1x::_1, + std_cxx1x::cref(tria_1))) + }; + boost::signals2::connection connections_2[4] + = {tria_2.signals.pre_refinement + .connect (std_cxx1x::bind (&pre_refinement_notification, + "tria_2", + std_cxx1x::cref(tria_2))), + tria_2.signals.post_refinement + .connect (std_cxx1x::bind (&post_refinement_notification, + "tria_2", + std_cxx1x::cref(tria_2))), + tria_2.signals.create + .connect (std_cxx1x::bind (&create_notification, + "tria_2", + std_cxx1x::cref(tria_2))), + tria_2.signals.copy + .connect (std_cxx1x::bind (©_notification, + "tria_2", + std_cxx1x::_1, + std_cxx1x::cref(tria_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 + for (unsigned int i=0; i<4; ++i) + connections_1[i].disconnect (); + + 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_02/cmp/generic b/tests/deal.II/refinement_listener_02/cmp/generic new file mode 100644 index 0000000000..7c274b6557 --- /dev/null +++ b/tests/deal.II/refinement_listener_02/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