From: Wolfgang Bangerth Date: Wed, 25 Feb 2004 21:28:41 +0000 (+0000) Subject: Check the solvers we have. X-Git-Tag: v8.0.0~15748 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4fc1918b8640e86592c8c749bcda5a929440dc2b;p=dealii.git Check the solvers we have. git-svn-id: https://svn.dealii.org/trunk@8547 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/bits/Makefile b/tests/bits/Makefile index 5492e761d5..5199180e4f 100644 --- a/tests/bits/Makefile +++ b/tests/bits/Makefile @@ -49,7 +49,8 @@ tests_x = anna_? \ find_cell_* \ sparse_matrix_* \ full_matrix_vector_* \ - solver_selector + solver_selector \ + deal_solver_* ifeq ($(USE_CONTRIB_PETSC),yes) tests_x += vector_* petsc_* diff --git a/tests/bits/deal_solver_01.cc b/tests/bits/deal_solver_01.cc new file mode 100644 index 0000000000..35e9b1e0bf --- /dev/null +++ b/tests/bits/deal_solver_01.cc @@ -0,0 +1,92 @@ +//---------------------------- deal_solver_01.cc --------------------------- +// deal_solver_01.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_01.cc --------------------------- + +// test the CG solver + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + abort (); + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_01.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + SolverControl control(100, 1.e-3); + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverCG<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} + diff --git a/tests/bits/deal_solver_02.cc b/tests/bits/deal_solver_02.cc new file mode 100644 index 0000000000..8685f62f7f --- /dev/null +++ b/tests/bits/deal_solver_02.cc @@ -0,0 +1,94 @@ + +//---------------------------- deal_solver_02.cc --------------------------- +// deal_solver_02.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_02.cc --------------------------- + +// test the BiCGStab solver + + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + abort (); + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_02.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + SolverControl control(100, 1.e-3); + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverBicgstab<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} + diff --git a/tests/bits/deal_solver_03.cc b/tests/bits/deal_solver_03.cc new file mode 100644 index 0000000000..82b81b3f8a --- /dev/null +++ b/tests/bits/deal_solver_03.cc @@ -0,0 +1,94 @@ + +//---------------------------- deal_solver_03.cc --------------------------- +// deal_solver_03.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_03.cc --------------------------- + +// test the GMRES solver + + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + abort (); + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_03.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + SolverControl control(100, 1.e-3); + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverGMRES<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} + diff --git a/tests/bits/deal_solver_04.cc b/tests/bits/deal_solver_04.cc new file mode 100644 index 0000000000..9d6c5f71d2 --- /dev/null +++ b/tests/bits/deal_solver_04.cc @@ -0,0 +1,94 @@ + +//---------------------------- deal_solver_04.cc --------------------------- +// deal_solver_04.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_04.cc --------------------------- + +// test the MINRES solver + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + abort (); + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_04.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + SolverControl control(100, 1.e-3); + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverMinRes<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} + diff --git a/tests/bits/deal_solver_05.cc b/tests/bits/deal_solver_05.cc new file mode 100644 index 0000000000..4d74120844 --- /dev/null +++ b/tests/bits/deal_solver_05.cc @@ -0,0 +1,93 @@ + +//---------------------------- deal_solver_05.cc --------------------------- +// deal_solver_05.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_05.cc --------------------------- + +// test the QMRS solver + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + abort (); + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_05.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + SolverControl control(100, 1.e-3); + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverQMRS<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} + diff --git a/tests/bits/deal_solver_06.cc b/tests/bits/deal_solver_06.cc new file mode 100644 index 0000000000..f39e04ac4f --- /dev/null +++ b/tests/bits/deal_solver_06.cc @@ -0,0 +1,92 @@ + +//---------------------------- deal_solver_06.cc --------------------------- +// deal_solver_06.cc,v 1.33 2003/05/30 19:19:16 guido Exp +// Version: +// +// Copyright (C) 2004 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. +// +//---------------------------- deal_solver_06.cc --------------------------- + +// test the Richardson solver + + +#include "../tests.h" +#include "../lac/testmatrix.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +void +check_solve( SOLVER& solver, const MATRIX& A, + VECTOR& u, VECTOR& f, const PRECONDITION& P) +{ + deallog << "Solver type: " << typeid(solver).name() << std::endl; + + u = 0.; + f = 1.; + try + { + solver.solve(A,u,f,P); + } + catch (std::exception& e) + { + deallog << e.what() << std::endl; + } + + deallog << "Solver stopped after " << solver.control().last_step() + << " iterations" << std::endl; +} + + +int main() +{ + std::ofstream logfile("deal_solver_06.output"); + logfile.precision(4); + deallog.attach(logfile); + deallog.depth_console(0); + + GrowingVectorMemory<> mem; + + const unsigned int size = 32; + unsigned int dim = (size-1)*(size-1); + SolverControl control(10000, 1.e-3); + + deallog << "Size " << size << " Unknowns " << dim << std::endl; + + // Make matrix + FDMatrix testproblem(size, size); + SparsityPattern structure(dim, dim, 5); + testproblem.five_point_structure(structure); + structure.compress(); + SparseMatrix A(structure); + testproblem.five_point(A); + + Vector f(dim); + Vector u(dim); + f = 1.; + + SolverRichardson<> solver(control, mem); + PreconditionIdentity preconditioner; + check_solve (solver, A,u,f, preconditioner); +} +