From dba3eb0cf7d27a6bf384da03b0cdb29005fa2b7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 28 Dec 2022 17:39:38 -0500 Subject: [PATCH] make AWPMD compatible with MSVC and c++-linalg on Windows --- lib/awpmd/ivutils/include/erf.h | 19 ------ lib/awpmd/ivutils/include/lapack_inter.h | 67 +++++++------------ lib/awpmd/systems/interact/TCP/wpmd.h | 2 - lib/awpmd/systems/interact/TCP/wpmd_split.cpp | 2 - 4 files changed, 25 insertions(+), 65 deletions(-) delete mode 100644 lib/awpmd/ivutils/include/erf.h diff --git a/lib/awpmd/ivutils/include/erf.h b/lib/awpmd/ivutils/include/erf.h deleted file mode 100644 index b1cdbcb9dc..0000000000 --- a/lib/awpmd/ivutils/include/erf.h +++ /dev/null @@ -1,19 +0,0 @@ -# ifndef ERF_H -# define ERF_H - -# ifdef _WIN32 - -# ifdef __cplusplus -extern "C" { -# endif - -double erf(double x); -double erfc(double x); - -# ifdef __cplusplus -} -# endif - -# endif - -# endif diff --git a/lib/awpmd/ivutils/include/lapack_inter.h b/lib/awpmd/ivutils/include/lapack_inter.h index ac3e062b5b..a48ea5d821 100644 --- a/lib/awpmd/ivutils/include/lapack_inter.h +++ b/lib/awpmd/ivutils/include/lapack_inter.h @@ -1,53 +1,36 @@ // Interface for LAPACK function -# ifndef LAPACK_INTER_H -# define LAPACK_INTER_H +#ifndef LAPACK_INTER_H +#define LAPACK_INTER_H #include typedef int lapack_int; typedef complex lapack_complex_float; typedef complex lapack_complex_double; -#if defined(_WIN32) && !defined(__MINGW32__) +#define DGETRF dgetrf_ +#define DGETRS dgetrs_ +#define DGETRI dgetri_ +#define ZPPTRF zpptrf_ +#define ZPPTRI zpptri_ - //#define MKL_Complex8 lapack_complex_float - //#define MKL_Complex16 lapack_complex_double - #include "mkl.h" - - inline void ZPPTRF( char* uplo, const lapack_int* n, lapack_complex_double* ap, lapack_int* info ) { - ZPPTRF(uplo, (int*)n, (MKL_Complex16*)ap, (int*)info); - } - inline void ZPPTRI( char* uplo, const lapack_int* n, lapack_complex_double* ap, lapack_int* info ){ - ZPPTRI(uplo, (int*)n, (MKL_Complex16*)ap, (int*)info); - } - -#else - - #define DGETRF dgetrf_ - #define DGETRS dgetrs_ - #define DGETRI dgetri_ - #define ZPPTRF zpptrf_ - #define ZPPTRI zpptri_ - - #ifdef __cplusplus - extern "C" { - #endif /* __cplusplus */ - void dgetrf_( const lapack_int* m, const lapack_int* n, double* a, const lapack_int* lda, - lapack_int* ipiv, lapack_int* info ); - void dgetrs_( const char* trans, const lapack_int* n, const lapack_int* nrhs, - const double* a, const lapack_int* lda, const lapack_int* ipiv, - double* b, const lapack_int* ldb, lapack_int* info ); - void dgetri_( const lapack_int* n, double* a, const lapack_int* lda, - const lapack_int* ipiv, double* work, const lapack_int* lwork, - lapack_int* info ); - void zpptrf_( const char* uplo, const lapack_int* n, lapack_complex_double* ap, - lapack_int* info ); - void zpptri_( const char* uplo, const lapack_int* n, lapack_complex_double* ap, - lapack_int* info ); - #ifdef __cplusplus - } - #endif /* __cplusplus */ - -#endif +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +void dgetrf_(const lapack_int *m, const lapack_int *n, double *a, + const lapack_int *lda, lapack_int *ipiv, lapack_int *info); +void dgetrs_(const char *trans, const lapack_int *n, const lapack_int *nrhs, + const double *a, const lapack_int *lda, const lapack_int *ipiv, + double *b, const lapack_int *ldb, lapack_int *info); +void dgetri_(const lapack_int *n, double *a, const lapack_int *lda, + const lapack_int *ipiv, double *work, const lapack_int *lwork, + lapack_int *info); +void zpptrf_(const char *uplo, const lapack_int *n, lapack_complex_double *ap, + lapack_int *info); +void zpptri_(const char *uplo, const lapack_int *n, lapack_complex_double *ap, + lapack_int *info); +#ifdef __cplusplus +} +#endif /* __cplusplus */ #endif /* lapack_intER_H */ diff --git a/lib/awpmd/systems/interact/TCP/wpmd.h b/lib/awpmd/systems/interact/TCP/wpmd.h index 4c65440014..06ac5886c3 100644 --- a/lib/awpmd/systems/interact/TCP/wpmd.h +++ b/lib/awpmd/systems/interact/TCP/wpmd.h @@ -149,10 +149,8 @@ # include "pairhash.h" # include "TCP/tcpdefs.h" # include "wavepacket.h" -# include "erf.h" # include "cerf.h" - using namespace std; # include "lapack_inter.h" diff --git a/lib/awpmd/systems/interact/TCP/wpmd_split.cpp b/lib/awpmd/systems/interact/TCP/wpmd_split.cpp index f85b1ebf59..46a5776fef 100644 --- a/lib/awpmd/systems/interact/TCP/wpmd_split.cpp +++ b/lib/awpmd/systems/interact/TCP/wpmd_split.cpp @@ -1,6 +1,4 @@ # include "wpmd_split.h" -//# include "erf.h" - void AWPMD_split::resize(int flag){ for(int s=0;s<2;s++){