diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/maths.scm | 5 | ||||
-rw-r--r-- | gnu/packages/patches/dune-istl-fix-solver-playground.patch | 61 |
3 files changed, 65 insertions, 2 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 2947f3ac6a..fb52930201 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1057,6 +1057,7 @@ dist_patch_DATA = \ %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \ %D%/packages/patches/dstat-skip-devices-without-io.patch \ %D%/packages/patches/dune-grid-add-missing-include-cassert.patch \ + %D%/packages/patches/dune-istl-fix-solver-playground.patch \ %D%/packages/patches/dvd+rw-tools-add-include.patch \ %D%/packages/patches/dynaconf-unvendor-deps.patch \ %D%/packages/patches/efivar-211.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 7cf1308368..fda2bc5cd4 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -6963,7 +6963,7 @@ This package contains the basic DUNE grid classes.") (define-public dune-istl (package (name "dune-istl") - (version "2.7.1") + (version "2.9.0") (source (origin (method url-fetch) @@ -6971,7 +6971,8 @@ This package contains the basic DUNE grid classes.") version "/dune-istl-" version ".tar.gz")) (sha256 (base32 - "1cy69s1266hvnh8blznlvvkrf8i2g640rc3mf7kp872wgvdz4nb9")))) + "0smghqr400xl84j0laabgwaj2p5jlj3n3s85bm7qp9m2vjz6rav6")) + (patches (search-patches "dune-istl-fix-solver-playground.patch")))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/patches/dune-istl-fix-solver-playground.patch b/gnu/packages/patches/dune-istl-fix-solver-playground.patch new file mode 100644 index 0000000000..b3df4b6ffa --- /dev/null +++ b/gnu/packages/patches/dune-istl-fix-solver-playground.patch @@ -0,0 +1,61 @@ +From fe929f17e98b577171f58ca520b5145be41730ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christoph=20Gr=C3=BCninger?= <gruenich@dune-project.org> +Date: Thu, 16 Mar 2023 19:48:40 +0100 +Subject: [PATCH] Adjust sequential and both parallel cases in + istl-solver-playground + +Do same thing, independent of paralellel, distributed, or +sequential. +This fixes the test in the sequential case. +--- + src/istl-solver-playground.hh | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/istl-solver-playground.hh b/src/istl-solver-playground.hh +index 0ff3abd5..11693cf5 100644 +--- a/src/istl-solver-playground.hh ++++ b/src/istl-solver-playground.hh +@@ -66,7 +66,11 @@ std::shared_ptr<OOCOMM> loadSystem(std::shared_ptr<Mat>& m, + std::shared_ptr<OOCOMM> oocomm; + if(distributed){ + oocomm = std::make_shared<OOCOMM>(MPI_COMM_WORLD); +- loadMatrixMarket(*m, matrixfilename, *oocomm); ++ if(matrixfilename != "laplacian"){ ++ loadMatrixMarket(*m, matrixfilename, *oocomm); ++ }else{ ++ setupLaplacian(*m, config.get("N", 20)); ++ } + if(config.get("random_rhs", false)){ + rhs->resize(m->N()); + srand(42); +@@ -98,16 +102,22 @@ template<class Mat, class Vec> + void loadSystem(std::shared_ptr<Mat>& m, + std::shared_ptr<Vec>& rhs, + const Dune::ParameterTree& config){ +- std::string matrixfilename = config.get<std::string>("matrix"); ++ // generate Laplacian or load matrix ++ std::string matrixfilename = config.get<std::string>("matrix", "laplacian"); ++ if(matrixfilename == "laplacian"){ ++ setupLaplacian(*m, config.get("N", 20)); ++ }else{ ++ loadMatrixMarket(*m, matrixfilename); ++ } ++ // use random values or load right-hand side + std::string rhsfilename; +- if(!config.get("random_rhs", false)) +- rhsfilename = config.get<std::string>("rhs"); +- loadMatrixMarket(*m, matrixfilename); + if(config.get("random_rhs", false)){ + rhs->resize(m->N()); + fillRandom(*rhs); +- }else ++ }else{ ++ rhsfilename = config.get<std::string>("rhs"); + loadMatrixMarket(*rhs, rhsfilename); ++ } + } + #endif + +-- +2.39.2 + |