CASL / Futility

VERA Fortran Utilities
Other
44 stars 20 forks source link

New preconditioners #224

Closed mattkab2 closed 4 years ago

mattkab2 commented 4 years ago

This code adds new preconditioners (most notably Yunlin's RSOR) in serial and parallel It also slightly changes how they are used and called in the LinearSolverTypesIterative class.

mattkab2 commented 4 years ago

Pull request is now sane again. Merging/rebasing was tricky because it was built upon the multiple commits that lead to the NativeParallelDatatypes Branch, which were squashed. So merging or rebasing would try to apply all changes from that branch twice.

mattkab2 commented 4 years ago

I've run the nightly tests on MPACT compiled with this branch of Futility, and they all pass (except for the single test that requires COBRATF). Log attached. ctest.log

mattkab2 commented 4 years ago

Regarding the optional matrix question, the answer is that unfortunately one of the preconditioner types implemented in Futility is a Shell preconditioner for PETSc, which does not have a Futility matrix but a PETSc one. Since these are not type-compatible, we cannot make the matrix a requirement.