From 8256d4a2484063c635942af4636224efb3080e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Wed, 5 Oct 2011 10:23:49 +0200 Subject: [PATCH] Move tests to a separate directory, 'tests'. Add a test to demonstrate features of the 'JacobianSystem'. --- tests/test_jacsys.cpp | 151 +++++++++++++++++++++++++++++++++++ {src => tests}/test_sf2p.cpp | 0 2 files changed, 151 insertions(+) create mode 100644 tests/test_jacsys.cpp rename {src => tests}/test_sf2p.cpp (100%) diff --git a/tests/test_jacsys.cpp b/tests/test_jacsys.cpp new file mode 100644 index 00000000..60929877 --- /dev/null +++ b/tests/test_jacsys.cpp @@ -0,0 +1,151 @@ +#include + +#include +#include +#include +#include + +template +Ostream& +operator<<(Ostream& os, const Coll& c) { + typedef typename Coll::value_type VT; + + os << "[ "; + std::copy(c.begin(), c.end(), std::ostream_iterator(os, " ")); + os << "]"; + + return os; +} + +#if 0 +int +main() { + std::vector a; + + a.push_back(0); + a.push_back(1); + + std::cerr << "a[0] = " << a << '\n'; + + for (::std::size_t i = 1; i < 7; ++i) { + a.reserve(2 * a.size()); + a.insert(a.end(), a.begin(), a.end()); + + std::cerr << "a[" << i << "] = " << a << '\n'; + } +} +#endif + + +#if 0 +#include "VectorBlockAssembler.hpp" + +using namespace Opm::LinAlgSupport; + +int +main() { + typedef std::vector stvd; + + typedef AccumulationNorm OneNorm; + typedef AccumulationNorm TwoNorm; + typedef AccumulationNorm MaxNorm; + + typedef NumericVector VectorOne; + typedef NumericVector VectorTwo; + typedef NumericVector VectorInf; + + VectorOne v1; + + v1.resize(10, 1.0); + + std::cerr << v1 << '\n'; + std::cerr << "Norm = " << v1.norm() << '\n'; + + VectorTwo v2; + + v2.resize(10, 1.0); + + std::cerr << v2 << '\n'; + std::cerr << "Norm = " << v2.norm() << '\n'; + + VectorInf vi; + + vi.resize(10, 1.0); + + std::cerr << vi << '\n'; + std::cerr << "Norm = " << vi.norm() << '\n'; +} +#endif + +#if 0 +#include "JacobianSystem.hpp" + +//using namespace Opm::LinAlgSupport; +using namespace Opm::ImplicitTransportDefault; + +int +main() { + typedef std::vector STVD; + + NewtonVectorCollection nvcoll; + + STVD blk(2, 1.0); + + nvcoll.setSize(blk.size(), 1); + nvcoll.assembleBlock(blk.size(), 0, blk); + + std::cerr << "Residual = " << nvcoll.residual () << '\n'; + std::cerr << "Increment = " << nvcoll.increment() << '\n'; + std::cerr << "Solution = " << nvcoll.solution () << '\n'; +} +#endif + +#if 1 +#include + +#include +#include +#include + +using namespace Opm::ImplicitTransportDefault; + +int +main() { + typedef std::vector STVD; + typedef NewtonVectorCollection NVecColl; + + JacobianSystem< struct CSRMatrix, NVecColl > JS; + JS.setSize(1, 2, 2); + std::cerr << "Residual = " << JS.vector().residual() << '\n'; + + std::vector conn(1); + conn[0] = 0; + JS.matasm().createBlockRow(0, conn, 1); + + double blk[] = { 1.0 }; + JS.matasm().assembleBlock(1, 0, 0, blk); + JS.vector().assembleBlock(1, 0, blk); + + conn[0] = 1; + JS.matasm().createBlockRow(1, conn, 1); + JS.matasm().assembleBlock(1, 1, 1, blk); + JS.vector().assembleBlock(1, 1, blk); + + const CSRMatrix& A = JS.matrix(); + csrmatrix_write_stream(&A, stderr); + + std::cerr << "Residual = " << JS.vector().residual() << '\n'; + + Opm::ImplicitTransportLinAlgSupport::CSRMatrixUmfpackSolver linsolve; + + std::cerr << "Increment = " << JS.vector().increment() << '\n'; + linsolve.solve(A, JS.vector().residual(), + JS.vector().writableIncrement()); + + std::cerr << "Increment = " << JS.vector().increment() << '\n'; + + std::cerr << "Solution = " << JS.vector().solution() << '\n'; + JS.vector().addIncrement(); + std::cerr << "Solution = " << JS.vector().solution() << '\n'; +} +#endif diff --git a/src/test_sf2p.cpp b/tests/test_sf2p.cpp similarity index 100% rename from src/test_sf2p.cpp rename to tests/test_sf2p.cpp