From: Wolfgang Bangerth Date: Mon, 16 Aug 2004 18:14:09 +0000 (+0000) Subject: Add tests for the HSL MAXX solvers. X-Git-Tag: v8.0.0~14916 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6599906f29bffa7914bc1b6460689a134f5c207b;p=dealii.git Add tests for the HSL MAXX solvers. git-svn-id: https://svn.dealii.org/trunk@9552 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/bits/Makefile b/tests/bits/Makefile index b22a149976..37f3067f49 100644 --- a/tests/bits/Makefile +++ b/tests/bits/Makefile @@ -70,10 +70,17 @@ tests_x = anna_? \ ifeq ($(USE_CONTRIB_PETSC),yes) tests_x += petsc_* endif + ifeq ($(USE_CONTRIB_METIS),yes) tests_x += metis_* endif +ifeq ($(USE_CONTRIB_HSL),yes) + tests_x += hsl_* +endif + + + # from above list of regular expressions, generate the real set of # tests expand = $(shell echo $(addsuffix .cc,$(1)) \ diff --git a/tests/bits/hsl_ma27_01.cc b/tests/bits/hsl_ma27_01.cc new file mode 100644 index 0000000000..3db27e9422 --- /dev/null +++ b/tests/bits/hsl_ma27_01.cc @@ -0,0 +1,111 @@ +//---------------------------- hsl_ma27_01.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2002, 2003, 2004 by the deal.II authors and Brian Carnes +// +// 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. +// +//---------------------------- hsl_ma27_01.cc --------------------------- + +// test the hsl_ma27 sparse direct solver on a mass matrix + +#include "../tests.h" +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + + + +template +void test () +{ + deallog << dim << 'd' << std::endl; + + Triangulation tria; + GridGenerator::hyper_cube (tria,0,1); + tria.refine_global (1); + + // destroy the uniformity of the matrix by + // refining one cell + tria.begin_active()->set_refine_flag (); + tria.execute_coarsening_and_refinement (); + + FE_Q fe (1); + DoFHandler dof_handler (tria); + dof_handler.distribute_dofs (fe); + + SparsityPattern sparsity_pattern; + sparsity_pattern.reinit (dof_handler.n_dofs(), + dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern); + sparsity_pattern.compress (); + + SparseMatrix B; + B.reinit (sparsity_pattern); + + QGauss qr (2); + MatrixTools::create_mass_matrix (dof_handler, qr, B); + + // for a number of different solution + // vectors, make up a matching rhs vector + // and check what the MA27 solver finds + for (unsigned int i=0; i<3; ++i) + { + Vector solution (dof_handler.n_dofs()); + Vector x (dof_handler.n_dofs()); + Vector b (dof_handler.n_dofs()); + + for (unsigned int j=0; j (); + test<2> (); + test<3> (); +} diff --git a/tests/bits/hsl_ma27_02.cc b/tests/bits/hsl_ma27_02.cc new file mode 100644 index 0000000000..41f85a9771 --- /dev/null +++ b/tests/bits/hsl_ma27_02.cc @@ -0,0 +1,117 @@ +//---------------------------- hsl_ma27_02.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2002, 2003, 2004 by the deal.II authors and Brian Carnes +// +// 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. +// +//---------------------------- hsl_ma27_02.cc --------------------------- + +// test the hsl_ma27 sparse direct solver on a mass matrix; test that the +// functions that allow for repeated solves yield the correct result even +// though the matrix is decomposed only once + +#include "../tests.h" +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + + + +template +void test () +{ + deallog << dim << 'd' << std::endl; + + Triangulation tria; + GridGenerator::hyper_cube (tria,0,1); + tria.refine_global (1); + + // destroy the uniformity of the matrix by + // refining one cell + tria.begin_active()->set_refine_flag (); + tria.execute_coarsening_and_refinement (); + + FE_Q fe (1); + DoFHandler dof_handler (tria); + dof_handler.distribute_dofs (fe); + + SparsityPattern sparsity_pattern; + sparsity_pattern.reinit (dof_handler.n_dofs(), + dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern); + sparsity_pattern.compress (); + + SparseMatrix B; + B.reinit (sparsity_pattern); + + QGauss qr (2); + MatrixTools::create_mass_matrix (dof_handler, qr, B); + + // compute a decomposition of the matrix + SparseDirectMA27 Binv; + Binv.factorize (B); + + // for a number of different solution + // vectors, make up a matching rhs vector + // and check what the MA27 solver finds + for (unsigned int i=0; i<3; ++i) + { + Vector solution (dof_handler.n_dofs()); + Vector x (dof_handler.n_dofs()); + Vector b (dof_handler.n_dofs()); + + for (unsigned int j=0; j (); + test<2> (); + test<3> (); +} diff --git a/tests/bits/hsl_ma47_01.cc b/tests/bits/hsl_ma47_01.cc new file mode 100644 index 0000000000..6d849278f6 --- /dev/null +++ b/tests/bits/hsl_ma47_01.cc @@ -0,0 +1,111 @@ +//---------------------------- hsl_ma47_01.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2002, 2003, 2004 by the deal.II authors and Brian Carnes +// +// 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. +// +//---------------------------- hsl_ma47_01.cc --------------------------- + +// test the hsl_ma47 sparse direct solver on a mass matrix + +#include "../tests.h" +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + + + +template +void test () +{ + deallog << dim << 'd' << std::endl; + + Triangulation tria; + GridGenerator::hyper_cube (tria,0,1); + tria.refine_global (1); + + // destroy the uniformity of the matrix by + // refining one cell + tria.begin_active()->set_refine_flag (); + tria.execute_coarsening_and_refinement (); + + FE_Q fe (1); + DoFHandler dof_handler (tria); + dof_handler.distribute_dofs (fe); + + SparsityPattern sparsity_pattern; + sparsity_pattern.reinit (dof_handler.n_dofs(), + dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern); + sparsity_pattern.compress (); + + SparseMatrix B; + B.reinit (sparsity_pattern); + + QGauss qr (2); + MatrixTools::create_mass_matrix (dof_handler, qr, B); + + // for a number of different solution + // vectors, make up a matching rhs vector + // and check what the MA47 solver finds + for (unsigned int i=0; i<3; ++i) + { + Vector solution (dof_handler.n_dofs()); + Vector x (dof_handler.n_dofs()); + Vector b (dof_handler.n_dofs()); + + for (unsigned int j=0; j (); + test<2> (); + test<3> (); +} diff --git a/tests/bits/hsl_ma47_02.cc b/tests/bits/hsl_ma47_02.cc new file mode 100644 index 0000000000..6e005c9950 --- /dev/null +++ b/tests/bits/hsl_ma47_02.cc @@ -0,0 +1,117 @@ +//---------------------------- hsl_ma47_02.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2002, 2003, 2004 by the deal.II authors and Brian Carnes +// +// 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. +// +//---------------------------- hsl_ma47_02.cc --------------------------- + +// test the hsl_ma47 sparse direct solver on a mass matrix; test that the +// functions that allow for repeated solves yield the correct result even +// though the matrix is decomposed only once + +#include "../tests.h" +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + + + +template +void test () +{ + deallog << dim << 'd' << std::endl; + + Triangulation tria; + GridGenerator::hyper_cube (tria,0,1); + tria.refine_global (1); + + // destroy the uniformity of the matrix by + // refining one cell + tria.begin_active()->set_refine_flag (); + tria.execute_coarsening_and_refinement (); + + FE_Q fe (1); + DoFHandler dof_handler (tria); + dof_handler.distribute_dofs (fe); + + SparsityPattern sparsity_pattern; + sparsity_pattern.reinit (dof_handler.n_dofs(), + dof_handler.n_dofs(), + dof_handler.max_couplings_between_dofs()); + DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern); + sparsity_pattern.compress (); + + SparseMatrix B; + B.reinit (sparsity_pattern); + + QGauss qr (2); + MatrixTools::create_mass_matrix (dof_handler, qr, B); + + // compute a decomposition of the matrix + SparseDirectMA47 Binv; + Binv.factorize (B); + + // for a number of different solution + // vectors, make up a matching rhs vector + // and check what the MA47 solver finds + for (unsigned int i=0; i<3; ++i) + { + Vector solution (dof_handler.n_dofs()); + Vector x (dof_handler.n_dofs()); + Vector b (dof_handler.n_dofs()); + + for (unsigned int j=0; j (); + test<2> (); + test<3> (); +}