diff --git a/cmake/modules/FindSuperLU.cmake b/cmake/modules/FindSuperLU.cmake index 340ffb46f64cd1a1870ecd4086eaf778ee898a0b..0c64d57c7b1971dc45bdc69448342f1685b8d815 100644 --- a/cmake/modules/FindSuperLU.cmake +++ b/cmake/modules/FindSuperLU.cmake @@ -38,7 +38,10 @@ find_path(SUPERLU_INCLUDE_DIR # look for library, only at positions given by the user find_library(SUPERLU_LIBRARY - NAMES "superlu_4.3" "superlu_4.2" "superlu_4.1" "superlu_4.0" "superlu_3.1" "superlu_3.0" "superlu" + NAMES "superlu" + "superlu_5.2.1" "superlu_5.2" "superlu_5.1.1" "superlu_5.1" "superlu_5.0" + "superlu_4.3" "superlu_4.2" "superlu_4.1" "superlu_4.0" + "superlu_3.1" "superlu_3.0" PATHS ${SUPERLU_PREFIX} ${SUPERLU_ROOT} PATH_SUFFIXES "lib" "lib32" "lib64" NO_DEFAULT_PATH @@ -46,7 +49,10 @@ find_library(SUPERLU_LIBRARY # look for library files, including default paths find_library(SUPERLU_LIBRARY - NAMES "superlu_4.3" "superlu_4.2" "superlu_4.1" "superlu_4.0" "superlu_3.1" "superlu_3.0" "superlu" + NAMES "superlu" + "superlu_5.2.1" "superlu_5.2" "superlu_5.1.1" "superlu_5.1" "superlu_5.0" + "superlu_4.3" "superlu_4.2" "superlu_4.1" "superlu_4.0" + "superlu_3.1" "superlu_3.0" PATH_SUFFIXES "lib" "lib32" "lib64" ) diff --git a/dune/istl/superlu.hh b/dune/istl/superlu.hh index 1c6b2de15b1c4838fe0b7a7d1b175e1a5c768f35..6f2a9d2affc9bbf3b55bd42710cc48d370c04877 100644 --- a/dune/istl/superlu.hh +++ b/dune/istl/superlu.hh @@ -126,9 +126,16 @@ namespace Dune float *rpg, float *rcond, float *ferr, float *berr, mem_usage_t *memusage, SuperLUStat_t *stat, int *info) { +#if SUPERLU_MIN_VERSION_5 + GlobalLU_t gLU; + sgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, + L, U, work, lwork, B, X, rpg, rcond, ferr, berr, + &gLU, memusage, stat, info); +#else sgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, rpg, rcond, ferr, berr, memusage, stat, info); +#endif } }; @@ -167,7 +174,7 @@ namespace Dune double *rpg, double *rcond, double *ferr, double *berr, mem_usage_t *memusage, SuperLUStat_t *stat, int *info) { -#if SUPERLU_MIN_VER_5 +#if SUPERLU_MIN_VERSION_5 GlobalLU_t gLU; dgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, rpg, rcond, ferr, berr, @@ -214,9 +221,16 @@ namespace Dune double *rpg, double *rcond, double *ferr, double *berr, mem_usage_t *memusage, SuperLUStat_t *stat, int *info) { +#if SUPERLU_MIN_VERSION_5 + GlobalLU_t gLU; + zgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, + L, U, work, lwork, B, X, rpg, rcond, ferr, berr, + &gLU, memusage, stat, info); +#else zgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, rpg, rcond, ferr, berr, memusage, stat, info); +#endif } }; @@ -254,9 +268,16 @@ namespace Dune float *rpg, float *rcond, float *ferr, float *berr, mem_usage_t *memusage, SuperLUStat_t *stat, int *info) { +#if SUPERLU_MIN_VERSION_5 + GlobalLU_t gLU; + cgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, + L, U, work, lwork, B, X, rpg, rcond, ferr, berr, + &gLU, memusage, stat, info); +#else cgssvx(options, mat, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, rpg, rcond, ferr, berr, memusage, stat, info); +#endif } };