dune-istl merge requestshttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests2024-03-04T19:35:45Zhttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests/253[VariableBlockVector] Use std::vector for memory management2024-03-04T19:35:45ZLasse Hinrichsen-Bischofflh1887@mi.fu-berlin.de[VariableBlockVector] Use std::vector for memory managementThe manual memory management used before looks a bit scary and also leads to lots of repeated code. In this MR, both the actual vector entries and the vector windows are now held in `std::vector`s.
When @joe did something similar for th...The manual memory management used before looks a bit scary and also leads to lots of repeated code. In this MR, both the actual vector entries and the vector windows are now held in `std::vector`s.
When @joe did something similar for the normal `BlockVector`, he used scope guards in some cases to call `syncBaseArray()`. I failed, however, to fully understand when/why they would be necessary.
By coincident, this MR also patches a bug in the `VariableBlockVector`. When copying from another vector, the copied-to vector would always have the state `initialized = true`, independent of the actual state of the copied-from vector. For an uninitialized source, this would give you a vector that is flagged initialized but is actually not.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/468Let ISTLError derive from Dune::Exception2024-03-04T19:25:11ZPatrick JaapLet ISTLError derive from Dune::ExceptionFor a discussion see https://gitlab.dune-project.org/core/dune-istl/-/issues/101For a discussion see https://gitlab.dune-project.org/core/dune-istl/-/issues/101https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/476WIP: Create DUNE_PROJECT_TARGET2024-03-04T19:15:50ZSimon PraetoriusWIP: Create DUNE_PROJECT_TARGETThis MR is associated to the core/dune-common!944This MR is associated to the core/dune-common!944https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/555Cherry-pick deterministic-indicesSyncer2024-01-25T14:42:20ZLisa Julia Nebellisa.nebel@dr-blatt.deCherry-pick deterministic-indicesSyncer@markus.blatt: I've cherry-picked the commits from https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/553 and moved the entry in the CHANGELOG.md to 2.9. Can you have a look and then also merge this one https://gitlab.dune-p...@markus.blatt: I've cherry-picked the commits from https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/553 and moved the entry in the CHANGELOG.md to 2.9. Can you have a look and then also merge this one https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/554?https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/554Move entry on flag 'useFixedOrder' in the coarsen method of AMGs...2024-01-24T07:04:42ZLisa Julia Nebellisa.nebel@dr-blatt.deMove entry on flag 'useFixedOrder' in the coarsen method of AMGs...Move entry on flag 'useFixedOrder' in the coarsen method of AMGs ParallelIndicesCoarsener in CHANGELOG.md to Release 2.9.Move entry on flag 'useFixedOrder' in the coarsen method of AMGs ParallelIndicesCoarsener in CHANGELOG.md to Release 2.9.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/519Draft: Improve support on BCRS custom allocators2023-10-11T12:48:14ZSantiago Ospina De Los Ríossospinar@gmail.comDraft: Improve support on BCRS custom allocatorsCurrently, allocators in the BCRS matrix do not allow certain operations desired when using custom allocators:
* An allocator that models a [standard Allocator requirements](https://en.cppreference.com/w/cpp/named_req/Allocator) will fa...Currently, allocators in the BCRS matrix do not allow certain operations desired when using custom allocators:
* An allocator that models a [standard Allocator requirements](https://en.cppreference.com/w/cpp/named_req/Allocator) will fail to compile in BCRSMatrix and Blocked vectors due to `using size_type = A::size_type`. This is changed in this MR by invoking the allocator traits `using size_type = std::allocator_traits<A>::size_type`.
* The allocator cannot be set a priory. This is unfortunate because stateful allocators would allow contiguous allocation on different BCRS matrices (e.g. sub-blocks of a bigger BCRS matrix) by sharing the allocator between the different matrices. This is changed in this MR by allowing to get and set the allocator and by copying them during matrix copies. Naturally, this does not change the behavior on stateless allocators like `std::allocator<B>`.
This MR is part of #107 to improve performance on matrices with low number of entries per rows and nested blocking of `BCRSMatrix`.
Stateful allocators are out of scope of this MR, thus, I cannot provide tests that check correct behavior on other than `std::allocator<B>`. If you want this functionality, let me know and I can push a MR with an implementation.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/522Merge branch 'bugfix/suitesparse' into 'master'2023-08-21T22:08:31ZAndreas DednerMerge branch 'bugfix/suitesparse' into 'master'[bugfix][SuiteSparse] Fix index type conversion problem.
See merge request core/dune-istl!521
(cherry picked from commit 2f45f8d0fdee2d5dd3f5a614e3d972faf0d6b066)
4c01ff41 [bugfix][SuiteSparse] Fix index type conversion problem.[bugfix][SuiteSparse] Fix index type conversion problem.
See merge request core/dune-istl!521
(cherry picked from commit 2f45f8d0fdee2d5dd3f5a614e3d972faf0d6b066)
4c01ff41 [bugfix][SuiteSparse] Fix index type conversion problem.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/525Add a method-chooser to switch index type in Cholmod2023-05-25T18:59:43ZSimon PraetoriusAdd a method-chooser to switch index type in CholmodInstead of switching manually for each individual method, a global `CholmodMethodChooser` is introduced, similar to the `UmfpackMethodChooser`.
This is an alternative to !485Instead of switching manually for each individual method, a global `CholmodMethodChooser` is introduced, similar to the `UmfpackMethodChooser`.
This is an alternative to !485Oliver Sanderoliver.sander@tu-dresden.deOliver Sanderoliver.sander@tu-dresden.dehttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests/518Draft: Remove deep-copy operation from CompressedBlockVectorWindow2023-02-01T11:31:54ZSimon PraetoriusDraft: Remove deep-copy operation from CompressedBlockVectorWindowCloses #106Closes #106https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/511Draft: Protect calls to ParMETIS by HAVE_PARMETIS2022-12-13T16:57:22ZSimon PraetoriusDraft: Protect calls to ParMETIS by HAVE_PARMETIS### Summary
ParMETIS can only be used if 1. the parmetis header `parmetis.h` is included and 2. the parmetis library is linked. IF this is the case, the compile definition `HAVE_PARMETIS` is set. This MR check for this define on all ParM...### Summary
ParMETIS can only be used if 1. the parmetis header `parmetis.h` is included and 2. the parmetis library is linked. IF this is the case, the compile definition `HAVE_PARMETIS` is set. This MR check for this define on all ParMETIS calls.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/487Makes SPQR solve LSQ problems for blocked matrices2022-10-21T12:49:24ZJosé Eduardo Chiarelli Bueno FilhoMakes SPQR solve LSQ problems for blocked matricesThis merge request makes two additions:
- Fix a segfault that was happening when calling SPQR for solving least squares problems
- Adapts SPQR to work with blocked (BCRS) matrices and right hand sides composed of vectors with matrix-val...This merge request makes two additions:
- Fix a segfault that was happening when calling SPQR for solving least squares problems
- Adapts SPQR to work with blocked (BCRS) matrices and right hand sides composed of vectors with matrix-valued entrieshttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests/498[bugfix] dune-common module version dependency.2022-10-20T15:56:45ZRobert K[bugfix] dune-common module version dependency.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/486Use new python package configuration2022-10-10T11:11:44ZSantiago Ospina De Los Ríossospinar@gmail.comUse new python package configurationUse new python configuration of bindings from https://gitlab.dune-project.org/core/dune-common/-/merge_requests/1148Use new python configuration of bindings from https://gitlab.dune-project.org/core/dune-common/-/merge_requests/1148Santiago Ospina De Los Ríossospinar@gmail.comSantiago Ospina De Los Ríossospinar@gmail.comhttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests/428[solverfactory] enable direct solvers for parallel operators if only one proc...2022-04-28T08:53:09ZNils-Arne Dreier[solverfactory] enable direct solvers for parallel operators if only one process is involvedThis MR enables direct solvers in the solver factory if only one process is involved. This is in particular use full for !422 .This MR enables direct solvers in the solver factory if only one process is involved. This is in particular use full for !422 .https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/414WIP: Block Krylov methods2022-04-27T12:52:21ZNils-Arne DreierWIP: Block Krylov methodsThis MR contains a cleaned up version of the code from my PhD thesis.
It introduces the infrastructure for block Krylov methods and three block Krylov methods, namely block CG, block GMRes and block BiCGSTAB. It builds up on the multi ri...This MR contains a cleaned up version of the code from my PhD thesis.
It introduces the infrastructure for block Krylov methods and three block Krylov methods, namely block CG, block GMRes and block BiCGSTAB. It builds up on the multi right-hand side support with SIMD data types.
The solvers can be constructed via the `SolverFactory`. For that the code of the `SolverFactory` must be slightly adapted to provide a `InnerBlockProduct` to the solver, which is a extension of a `ScalarProduct`. The rest of the code is non-invasive.
For good performance it is crucial to use proper implementations of the axpy and dot kernels in the `ParallelMatrixAlgebra`. This depends on the used SIMD type. To make it configurable I introduced a CMake variable `DUNE_BLOCKKRYLOV_BLAS_PRIORITY`. I'm not sure whether this is a proper way for that.
I'm looking forward to you feedback and comments.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/462fix some problems of the intel compiler (rebase)2021-12-03T21:53:23ZMarkus Blattfix some problems of the intel compiler (rebase)rebased version of !407rebased version of !407https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/256[!250] Fix VariableBlockVector's CreateIterator2021-12-03T21:42:23ZSteffen Müthingsteffen.muething@iwr.uni-heidelberg.de[!250] Fix VariableBlockVector's CreateIteratorBackport [!250] to releases/2.6.Backport [!250] to releases/2.6.DUNE 2.6.1Steffen Müthingsteffen.muething@iwr.uni-heidelberg.deSteffen Müthingsteffen.muething@iwr.uni-heidelberg.dehttps://gitlab.dune-project.org/core/dune-istl/-/merge_requests/26[WIP] Add/refactore conjugate gradient methods2021-12-03T20:16:23ZLars Lubkoll[WIP] Add/refactore conjugate gradient methodsContains
- conjugate gradient method (CG), truncated CG, regularized CG, truncated regularized CG
- relative termination criteria based on the relative residual resp. an estimate on the relative energy error
- a generic iterative met...Contains
- conjugate gradient method (CG), truncated CG, regularized CG, truncated regularized CG
- relative termination criteria based on the relative residual resp. an estimate on the relative energy error
- a generic iterative method that requires a termination criterion and a step implementation
- gtest unit and functional tests in folder tests/
- some elementary template meta-functions in fglue/
- mixins for common algorithmic parameters in mixins/
I took care to keep the interface of the previous implementation of the conjugate gradient method. At one point I did not do this. The default termination criterion is based on the relative energy error and not on the relative residual error. Since this termination criterion is more robust it was my preferred default choice. If you prefer the residual based termination criterion as default criterion I will change this.
Minor changes:
- added operator<< for InverseOperatorResult
- changed type of the static member category (in solvers and preconditioners) from anonymous enum to SolverCategory::Category (I think here it would be nice to replace SolverCategory with an enum class)https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/279Set upper bounds on dune module dependencies2021-12-03T20:15:03ZLinus SeelingerSet upper bounds on dune module dependenciesEnsure no incompatible future releases of dependencies are mixed with this module.Ensure no incompatible future releases of dependencies are mixed with this module.https://gitlab.dune-project.org/core/dune-istl/-/merge_requests/434[matrixmarket][cleanup] Remove unused typedefs2021-07-23T13:21:13ZTimo Koch[matrixmarket][cleanup] Remove unused typedefsChristoph GrüningerChristoph Grüninger