Skip to content
Snippets Groups Projects
Commit d873b0a1 authored by Tobias Leibner's avatar Tobias Leibner
Browse files

[test] fix compilation

parent ef665969
No related branches found
No related tags found
No related merge requests found
......@@ -69,11 +69,17 @@ struct VectorTest_{{T_NAME}} : public ::testing::Test
D_ScalarType d_dot = d_by_size.dot(d_by_size_and_value);
EXPECT_DOUBLE_OR_COMPLEX_EQ(D_RealType(0), d_dot);
D_ScalarType d_l1_norm = d_by_size.l1_norm();
D_ScalarType d_l1_norm2 = d_by_size.one_norm();
EXPECT_DOUBLE_OR_COMPLEX_EQ(D_RealType(0), d_l1_norm);
EXPECT_DOUBLE_OR_COMPLEX_EQ(d_l1_norm, d_l1_norm2);
D_ScalarType d_l2_norm = d_by_size.l2_norm();
D_ScalarType d_l2_norm2 = d_by_size.two_norm();
EXPECT_DOUBLE_OR_COMPLEX_EQ(D_RealType(0), d_l2_norm);
EXPECT_DOUBLE_OR_COMPLEX_EQ(d_l2_norm, d_l2_norm2);
D_ScalarType d_sup_norm = d_by_size.sup_norm();
D_ScalarType d_sup_norm2 = d_by_size.inf_norm();
EXPECT_DOUBLE_OR_COMPLEX_EQ(D_RealType(0), d_sup_norm);
EXPECT_DOUBLE_OR_COMPLEX_EQ(d_sup_norm, d_sup_norm2);
VectorImp d_ones(dim, D_ScalarType(1));
std::pair<size_t, D_ScalarType> d_amax = d_ones.amax();
EXPECT_EQ(0, d_amax.first);
......
......@@ -22,10 +22,9 @@ using namespace Dune;
// Data for saddle point system (A B; B^T C) (u; p) = (f; g) from Taylor-Hood P2-P1 continuous finite element
// discretization on a 2x2 cubic grid in 2 dimensions.
template <class Matrix, class Vector>
struct SaddlePointTestData
{
using Matrix = XT::LA::IstlRowMajorSparseMatrix<double>;
using Vector = XT::LA::IstlDenseVector<double>;
SaddlePointTestData()
: A_(XT::Common::from_string<Matrix>(
......@@ -155,9 +154,22 @@ struct SaddlePointTestData
GTEST_TEST(SaddlePointSolver, test_direct)
{
using Vector = typename SaddlePointTestData::Vector;
SaddlePointTestData data;
XT::LA::SaddlePointSolver<double> solver(data.A_, data.B_, data.B_, data.C_);
using Matrix = XT::LA::IstlRowMajorSparseMatrix<double>;
using Vector = XT::LA::IstlDenseVector<double>;
SaddlePointTestData<Matrix, Vector> data;
XT::LA::SaddlePointSolver<Vector, Matrix> solver(data.A_, data.B_, data.B_, data.C_);
Vector u(data.f_.size()), p(data.g_.size());
solver.apply(data.f_, data.g_, u, p, "direct");
DXTC_EXPECT_FLOAT_EQ(0., (u - data.expected_u_).l2_norm(), 1e-12, 1e-12);
DXTC_EXPECT_FLOAT_EQ(0., (p - data.expected_p_).l2_norm(), 1e-12, 1e-12);
}
GTEST_TEST(SaddlePointSolver, test_direct_eigen)
{
using Matrix = XT::LA::EigenRowMajorSparseMatrix<double>;
using Vector = XT::LA::EigenDenseVector<double>;
SaddlePointTestData<Matrix, Vector> data;
XT::LA::SaddlePointSolver<Vector, Matrix> solver(data.A_, data.B_, data.B_, data.C_);
Vector u(data.f_.size()), p(data.g_.size());
solver.apply(data.f_, data.g_, u, p, "direct");
DXTC_EXPECT_FLOAT_EQ(0., (u - data.expected_u_).l2_norm(), 1e-12, 1e-12);
......@@ -166,9 +178,23 @@ GTEST_TEST(SaddlePointSolver, test_direct)
GTEST_TEST(SaddlePointSolver, test_cg_direct_schurcomplement)
{
using Vector = typename SaddlePointTestData::Vector;
SaddlePointTestData data;
XT::LA::SaddlePointSolver<double> solver(data.A_, data.B_, data.B_, data.C_);
using Matrix = XT::LA::IstlRowMajorSparseMatrix<double>;
using Vector = XT::LA::IstlDenseVector<double>;
SaddlePointTestData<Matrix, Vector> data;
XT::LA::SaddlePointSolver<Vector, Matrix> solver(data.A_, data.B_, data.B_, data.C_);
Vector u(data.f_.size()), p(data.g_.size());
solver.apply(data.f_, data.g_, u, p, "cg_direct_schurcomplement");
DXTC_EXPECT_FLOAT_EQ(0., (u - data.expected_u_).l2_norm(), 1e-12, 1e-12);
DXTC_EXPECT_FLOAT_EQ(0., (p - data.expected_p_).l2_norm(), 1e-12, 1e-12);
}
GTEST_TEST(SaddlePointSolver, test_cg_direct_schurcomplement_eigen)
{
using Matrix = XT::LA::EigenRowMajorSparseMatrix<double>;
using Vector = XT::LA::EigenDenseVector<double>;
SaddlePointTestData<Matrix, Vector> data;
XT::LA::SaddlePointSolver<Vector, Matrix> solver(data.A_, data.B_, data.B_, data.C_);
Vector u(data.f_.size()), p(data.g_.size());
solver.apply(data.f_, data.g_, u, p, "cg_direct_schurcomplement");
DXTC_EXPECT_FLOAT_EQ(0., (u - data.expected_u_).l2_norm(), 1e-12, 1e-12);
......@@ -177,9 +203,10 @@ GTEST_TEST(SaddlePointSolver, test_cg_direct_schurcomplement)
GTEST_TEST(SaddlePointSolver, test_cg_cg_schurcomplement)
{
using Vector = typename SaddlePointTestData::Vector;
SaddlePointTestData data;
XT::LA::SaddlePointSolver<double> solver(data.A_, data.B_, data.B_, data.C_);
using Matrix = XT::LA::IstlRowMajorSparseMatrix<double>;
using Vector = XT::LA::IstlDenseVector<double>;
SaddlePointTestData<Matrix, Vector> data;
XT::LA::SaddlePointSolver<Vector, Matrix> solver(data.A_, data.B_, data.B_, data.C_);
Vector u(data.f_.size()), p(data.g_.size());
solver.apply(data.f_, data.g_, u, p, "cg_cg_schurcomplement");
DXTC_EXPECT_FLOAT_EQ(0., (u - data.expected_u_).l2_norm(), 1e-12, 1e-12);
......
......@@ -59,6 +59,8 @@ struct SolverTest_{{T_NAME}} : public ::testing::Test
for (auto type : types) {
out << "solving with type '" << type << "' and options" << std::endl;
Common::Configuration options = SolverType::options(type);
Common::Configuration options2 = SolverOptions<MatrixType>::options(type);
EXPECT_TRUE(options == options2);
options.report(out, " ");
// dynamic tests
......@@ -77,4 +79,4 @@ TEST_F(SolverTest_{{T_NAME}}, behaves_correctly)
this->produces_correct_results();
}
{% endfor %}
\ No newline at end of file
{% endfor %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment