Skip to content
Snippets Groups Projects
Commit 2422d219 authored by Markus Blatt's avatar Markus Blatt
Browse files

Merge branch 'feature/superlu5' into 'master'

Feature/superlu5



See merge request !41
parents e1689391 52ddac69
No related branches found
No related tags found
1 merge request!41Feature/superlu5
......@@ -50,7 +50,7 @@ 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"
NAMES "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"
PATHS ${SUPERLU_PREFIX} ${SUPERLU_ROOT}
PATH_SUFFIXES "lib" "lib32" "lib64"
NO_DEFAULT_PATH
......@@ -58,7 +58,7 @@ 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"
NAMES "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"
PATH_SUFFIXES "lib" "lib32" "lib64"
)
......@@ -90,15 +90,30 @@ int main(void)
return SLU_DOUBLE;
}"
SUPERLU_MIN_VERSION_4_3)
CHECK_C_SOURCE_COMPILES("
typedef int int_t;
#include <supermatrix.h>
#include <slu_util.h>
int main(void)
{
GlobalLU_t glu;
return 0;
}"
SUPERLU_MIN_VERSION_5)
cmake_pop_check_state()
if(SUPERLU_MIN_VERSION_4_3)
if(SUPERLU_MIN_VERSION_5)
set(SUPERLU_WITH_VERSION "SuperLU >= 5.0" CACHE STRING
"Human readable string containing SuperLU version information.")
elseif(SUPERLU_MIN_VERSION_4_3)
set(SUPERLU_WITH_VERSION "SuperLU >= 4.3" CACHE STRING
"Human readable string containing SuperLU version information.")
else()
set(SUPERLU_WITH_VERSION "SuperLU <= 4.2 and >= 4.0" CACHE STRING
"Human readable string containing SuperLU version information.")
endif(SUPERLU_MIN_VERSION_4_3)
endif()
# behave like a CMake module is supposed to behave
include(FindPackageHandleStandardArgs)
......
......@@ -40,6 +40,9 @@
/* define to 1 if SuperLU header slu_ddefs.h contains SLU_DOUBLE */
#cmakedefine SUPERLU_MIN_VERSION_4_3 @SUPERLU_MIN_VERSION_4_3@
/* define to 1 if SuperLU dgssvx takes a GlobalLU_t parameter */
#cmakedefine SUPERLU_MIN_VERSION_5 @SUPERLU_MIN_VERSION_5@
/* Define to the version of dune-istl */
#define DUNE_ISTL_VERSION "${DUNE_ISTL_VERSION}"
......
......@@ -105,9 +105,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
}
};
......@@ -146,9 +153,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;
dgssvx(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
dgssvx(options, mat, perm_c, perm_r, etree, equed, R, C,
L, U, work, lwork, B, X, rpg, rcond, ferr, berr,
memusage, stat, info);
#endif
}
};
......@@ -186,9 +200,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
}
};
......@@ -226,9 +247,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
}
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment