83 lines
3.2 KiB
Diff
83 lines
3.2 KiB
Diff
|
Fix build of dune-istl's tests
|
||
|
|
||
|
Patch copied from upstream source repository:
|
||
|
|
||
|
https://gitlab.dune-project.org/core/dune-istl/-/commit/9eee3462df5a64881c08574f9291e76db398de0a
|
||
|
|
||
|
From 9eee3462df5a64881c08574f9291e76db398de0a Mon Sep 17 00:00:00 2001
|
||
|
From: Felix Gruber <felgru@posteo.net>
|
||
|
Date: Sat, 4 Apr 2020 15:27:09 +0200
|
||
|
Subject: [PATCH] make tests succeed when MPI is disabled
|
||
|
|
||
|
When MPI is not available or explicitly disabled with the CMake build
|
||
|
option -DCMAKE_IDSABLE_FIND_PACKAGE_MPI=TRUE, some tests were unable to
|
||
|
build.
|
||
|
|
||
|
The tests created from solverfactorytest.cc.in and part of
|
||
|
scalarproductstest.cc use Dune::OwnerOverlapCopyCommunication which is
|
||
|
defined behind `#if HAVE_MPI` and is thus not available in a non-MPI
|
||
|
build. I've thus disabled those tests when MPI is unavailable.
|
||
|
|
||
|
The matrixmarkettest did not work without MPI, as it contained some code
|
||
|
using the wrong template parameters when HAVE_MPI was not set. Those
|
||
|
template paramters have been fixed now.
|
||
|
|
||
|
I've confirmed, that after my changes `make build_tests` succeeds to
|
||
|
build all tests and that those tests run without failure.
|
||
|
---
|
||
|
dune/istl/test/CMakeLists.txt | 3 ++-
|
||
|
dune/istl/test/matrixmarkettest.cc | 2 +-
|
||
|
dune/istl/test/scalarproductstest.cc | 2 ++
|
||
|
3 files changed, 5 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
|
||
|
index ffd87969..2c7b2387 100644
|
||
|
--- a/dune/istl/test/CMakeLists.txt
|
||
|
+++ b/dune/istl/test/CMakeLists.txt
|
||
|
@@ -77,7 +77,8 @@ set(DUNE_TEST_FACTORY_BLOCK_SIZES
|
||
|
function(add_factory_test BLOCK)
|
||
|
STRING(REGEX REPLACE "[^a-zA-Z0-9]" "" BLOCK_CLEAN ${BLOCK})
|
||
|
configure_file(solverfactorytest.cc.in solverfactorytest_${BLOCK_CLEAN}.cc)
|
||
|
- dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc)
|
||
|
+ dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc
|
||
|
+ CMAKE_GUARD HAVE_MPI)
|
||
|
endfunction(add_factory_test)
|
||
|
|
||
|
foreach(FIELD_TYPE ${DUNE_TEST_FACTORY_FIELD_TYPES})
|
||
|
diff --git a/dune/istl/test/matrixmarkettest.cc b/dune/istl/test/matrixmarkettest.cc
|
||
|
index b335afe6..ce30e8ae 100644
|
||
|
--- a/dune/istl/test/matrixmarkettest.cc
|
||
|
+++ b/dune/istl/test/matrixmarkettest.cc
|
||
|
@@ -52,7 +52,7 @@ int testMatrixMarket(int N)
|
||
|
storeMatrixMarket(mat, std::string("testmat"), comm);
|
||
|
storeMatrixMarket(bv, std::string("testvec"), comm, false);
|
||
|
#else
|
||
|
- typedef Dune::MatrixAdapter<BCRSMat,BVector,BVector> Operator;
|
||
|
+ typedef Dune::MatrixAdapter<Matrix,Vector,Vector> Operator;
|
||
|
Operator op(mat);
|
||
|
op.apply(bv, cv);
|
||
|
|
||
|
diff --git a/dune/istl/test/scalarproductstest.cc b/dune/istl/test/scalarproductstest.cc
|
||
|
index 452b1d89..f46ce2a9 100644
|
||
|
--- a/dune/istl/test/scalarproductstest.cc
|
||
|
+++ b/dune/istl/test/scalarproductstest.cc
|
||
|
@@ -115,6 +115,7 @@ int main(int argc, char** argv)
|
||
|
scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
|
||
|
}
|
||
|
|
||
|
+#if HAVE_MPI
|
||
|
// Test the ParallelScalarProduct class
|
||
|
{
|
||
|
using Vector = BlockVector<FieldVector<double,BlockSize> >;
|
||
|
@@ -139,6 +140,7 @@ int main(int argc, char** argv)
|
||
|
ScalarProduct scalarProduct(communicator,SolverCategory::nonoverlapping);
|
||
|
scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
|
||
|
}
|
||
|
+#endif
|
||
|
|
||
|
return t.exit();
|
||
|
}
|
||
|
--
|
||
|
2.25.1
|
||
|
|