Update use of PSolver library
Octopus currently has several implementations of the PSolver library:
- an internal isf (in src/isf)
- linkage to the PSolver library, shipped with Octopus in external-libs/
- usage of the PSolver package as true 3rd party package, (in future used through the ESL bundle)
On top of that, the PSolver library has recently updated their API. For backwards-compatibility reasons, octopus needs to support both APIs for the next few years.
The goals for the far future are:
- remove the internal src/poisson/poisson_isf.F90 code
- use PSolver as an external dependency with a CMake fallback and make it mandatory
- make full use of the PSolver GPU implementation
In the intermediate time, we want to keep the external_libs/psolver implementation with the new API only, and allow to use the PSolver library with the old API through the explicit configure options and the external package.
Several steps towards that can be broken down into separate issues (and merge requests):
-
rename poisson_libisf_oct to poisson_psolver_oct (#278 (closed), !790 (merged)) -
update poisson_psolver_oct to allow for both the old and new API (choosen by preprocessor directives) and - [ ]update the build system (m4 macros) to detect installed version of PSOLVER (#279 (closed)) -
add new toolchain with PSOLVER 1.8 to the buildbot. (octopus-code/buildbot/buildbot-config#29, octopus-code/buildbot/buildbot-config#30) -
enable PSOLVER for sequential runs (#282 (closed), !795 (merged)). -
add Psolver and Futile to external_libs/ and update the included version of YAML. (#15 (closed)) -
add PSolver fallback in CMake (just like for libxc and spglib) -
remove internal isf code. -
enable GPU support for PSOLVER
Edited by Micael Oliveira