Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
cbc34077
Commit
cbc34077
authored
Apr 19, 2017
by
Andreas Marek
Browse files
Make more internal stuff private
parent
c433fe71
Changes
82
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Makefile.am
View file @
cbc34077
...
@@ -13,9 +13,7 @@ libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@modules @FC_MODINC@
...
@@ -13,9 +13,7 @@ libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@modules @FC_MODINC@
libelpa@SUFFIX@
_public_la_SOURCES
=
\
libelpa@SUFFIX@
_public_la_SOURCES
=
\
src/elpa_driver/legacy_interface/elpa_legacy.F90
\
src/elpa_driver/legacy_interface/elpa_legacy.F90
\
src/elpa1/legacy_interface/elpa1_legacy.F90
\
src/elpa1/legacy_interface/elpa1_legacy.F90
\
src/elpa1/elpa1_new_interface.F90
\
src/elpa2/legacy_interface/elpa2_legacy.F90
\
src/elpa2/legacy_interface/elpa2_legacy.F90
\
src/elpa2/elpa2_new_interface.F90
\
src/elpa1/legacy_interface/elpa1_auxiliary_legacy.F90
\
src/elpa1/legacy_interface/elpa1_auxiliary_legacy.F90
\
src/elpa1/elpa1_auxiliary_new_interface.F90
\
src/elpa1/elpa1_auxiliary_new_interface.F90
\
src/elpa1/elpa1_utilities.F90
\
src/elpa1/elpa1_utilities.F90
\
...
@@ -50,6 +48,8 @@ libelpa@SUFFIX@_private_la_SOURCES = \
...
@@ -50,6 +48,8 @@ libelpa@SUFFIX@_private_la_SOURCES = \
src/elpa2/qr/elpa_qrkernels.F90
\
src/elpa2/qr/elpa_qrkernels.F90
\
src/elpa2/qr/elpa_pdlarfb.F90
\
src/elpa2/qr/elpa_pdlarfb.F90
\
src/elpa2/qr/elpa_pdgeqrf.F90
\
src/elpa2/qr/elpa_pdgeqrf.F90
\
src/elpa1/elpa1_new_interface.F90
\
src/elpa2/elpa2_new_interface.F90
\
src/elpa_options.c
src/elpa_options.c
EXTRA_libelpa@SUFFIX@
_private_la_DEPENDENCIES
=
\
EXTRA_libelpa@SUFFIX@
_private_la_DEPENDENCIES
=
\
...
...
src/elpa1/elpa1_auxiliary_new_interface.F90
View file @
cbc34077
...
@@ -54,36 +54,36 @@
...
@@ -54,36 +54,36 @@
#include "config-f90.h"
#include "config-f90.h"
!> \brief Fortran module which provides helper routines for matrix calculations
!> \brief Fortran module which provides helper routines for matrix calculations
module
ELPA1_AUXILIARY_new
module
elpa1_auxiliary_impl
use
elpa_utilities
use
elpa_utilities
implicit
none
implicit
none
public
::
elpa_mult_at_b_real_double_
new
!< Multiply double-precision real matrices A**T * B
public
::
elpa_mult_at_b_real_double_
impl
!< Multiply double-precision real matrices A**T * B
public
::
elpa_mult_ah_b_complex_double_
new
!< Multiply double-precision complex matrices A**H * B
public
::
elpa_mult_ah_b_complex_double_
impl
!< Multiply double-precision complex matrices A**H * B
public
::
elpa_invert_trm_real_double_
new
!< Invert double-precision real triangular matrix
public
::
elpa_invert_trm_real_double_
impl
!< Invert double-precision real triangular matrix
public
::
elpa_invert_trm_complex_double_
new
!< Invert double-precision complex triangular matrix
public
::
elpa_invert_trm_complex_double_
impl
!< Invert double-precision complex triangular matrix
public
::
elpa_cholesky_real_double_
new
!< Cholesky factorization of a double-precision real matrix
public
::
elpa_cholesky_real_double_
impl
!< Cholesky factorization of a double-precision real matrix
public
::
elpa_cholesky_complex_double_
new
!< Cholesky factorization of a double-precision complex matrix
public
::
elpa_cholesky_complex_double_
impl
!< Cholesky factorization of a double-precision complex matrix
public
::
elpa_solve_tridi_double_
new
!< Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method
public
::
elpa_solve_tridi_double_
impl
!< Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method
#ifdef WANT_SINGLE_PRECISION_REAL
#ifdef WANT_SINGLE_PRECISION_REAL
public
::
elpa_cholesky_real_single_
new
!< Cholesky factorization of a single-precision real matrix
public
::
elpa_cholesky_real_single_
impl
!< Cholesky factorization of a single-precision real matrix
public
::
elpa_invert_trm_real_single_
new
!< Invert single-precision real triangular matrix
public
::
elpa_invert_trm_real_single_
impl
!< Invert single-precision real triangular matrix
public
::
elpa_mult_at_b_real_single_
new
!< Multiply single-precision real matrices A**T * B
public
::
elpa_mult_at_b_real_single_
impl
!< Multiply single-precision real matrices A**T * B
public
::
elpa_solve_tridi_single_
new
!< Solve tridiagonal eigensystem for a single-precision matrix with divide and conquer method
public
::
elpa_solve_tridi_single_
impl
!< Solve tridiagonal eigensystem for a single-precision matrix with divide and conquer method
#endif
#endif
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#ifdef WANT_SINGLE_PRECISION_COMPLEX
public
::
elpa_cholesky_complex_single_
new
!< Cholesky factorization of a single-precision complex matrix
public
::
elpa_cholesky_complex_single_
impl
!< Cholesky factorization of a single-precision complex matrix
public
::
elpa_invert_trm_complex_single_
new
!< Invert single-precision complex triangular matrix
public
::
elpa_invert_trm_complex_single_
impl
!< Invert single-precision complex triangular matrix
public
::
elpa_mult_ah_b_complex_single_
new
!< Multiply single-precision complex matrices A**H * B
public
::
elpa_mult_ah_b_complex_single_
impl
!< Multiply single-precision complex matrices A**H * B
#endif
#endif
contains
contains
...
@@ -92,22 +92,22 @@ module ELPA1_AUXILIARY_new
...
@@ -92,22 +92,22 @@ module ELPA1_AUXILIARY_new
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
function
elpa_cholesky_real_double_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
function
elpa_cholesky_real_double_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
wantDebug
)
result
(
success
)
wantDebug
)
result
(
success
)
#include "elpa_cholesky_template_new_interface.X90"
#include "elpa_cholesky_template_new_interface.X90"
end
function
elpa_cholesky_real_double_
new
end
function
elpa_cholesky_real_double_
impl
#ifdef WANT_SINGLE_PRECISION_REAL
#ifdef WANT_SINGLE_PRECISION_REAL
#define REALCASE 1
#define REALCASE 1
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
function
elpa_cholesky_real_single_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
function
elpa_cholesky_real_single_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
wantDebug
)
result
(
success
)
wantDebug
)
result
(
success
)
#include "elpa_cholesky_template_new_interface.X90"
#include "elpa_cholesky_template_new_interface.X90"
end
function
elpa_cholesky_real_single_
new
end
function
elpa_cholesky_real_single_
impl
#endif /* WANT_SINGLE_PRECSION_REAL */
#endif /* WANT_SINGLE_PRECSION_REAL */
...
@@ -128,17 +128,17 @@ module ELPA1_AUXILIARY_new
...
@@ -128,17 +128,17 @@ module ELPA1_AUXILIARY_new
!> \param mpi_comm_cols MPI communicator for columns
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_invert_trm_real_double_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
function
elpa_invert_trm_real_double_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
mpi_comm_cols
,
wantDebug
)
result
(
success
)
#include "elpa_invert_trm_new_interface.X90"
#include "elpa_invert_trm_new_interface.X90"
end
function
elpa_invert_trm_real_double_
new
end
function
elpa_invert_trm_real_double_
impl
#if WANT_SINGLE_PRECISION_REAL
#if WANT_SINGLE_PRECISION_REAL
#define REALCASE 1
#define REALCASE 1
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_invert_trm_real_single_
new
: Inverts a single-precision real upper triangular matrix
!> \brief elpa_invert_trm_real_single_
impl
: Inverts a single-precision real upper triangular matrix
!> \details
!> \details
!> \param na Order of matrix
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
...
@@ -152,10 +152,10 @@ module ELPA1_AUXILIARY_new
...
@@ -152,10 +152,10 @@ module ELPA1_AUXILIARY_new
!> \param mpi_comm_cols MPI communicator for columns
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_invert_trm_real_single_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
function
elpa_invert_trm_real_single_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
mpi_comm_cols
,
wantDebug
)
result
(
success
)
#include "elpa_invert_trm_new_interface.X90"
#include "elpa_invert_trm_new_interface.X90"
end
function
elpa_invert_trm_real_single_
new
end
function
elpa_invert_trm_real_single_
impl
#endif /* WANT_SINGLE_PRECISION_REAL */
#endif /* WANT_SINGLE_PRECISION_REAL */
...
@@ -164,7 +164,7 @@ module ELPA1_AUXILIARY_new
...
@@ -164,7 +164,7 @@ module ELPA1_AUXILIARY_new
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_cholesky_complex_double_
new
: Cholesky factorization of a double-precision complex hermitian matrix
!> \brief elpa_cholesky_complex_double_
impl
: Cholesky factorization of a double-precision complex hermitian matrix
!> \details
!> \details
!> \param na Order of matrix
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be factorized.
!> \param a(lda,matrixCols) Distributed matrix which should be factorized.
...
@@ -179,11 +179,12 @@ module ELPA1_AUXILIARY_new
...
@@ -179,11 +179,12 @@ module ELPA1_AUXILIARY_new
!> \param mpi_comm_cols MPI communicator for columns
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_cholesky_complex_double_new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
)
result
(
success
)
function
elpa_cholesky_complex_double_impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
wantDebug
)
result
(
success
)
#include "elpa_cholesky_template_new_interface.X90"
#include "elpa_cholesky_template_new_interface.X90"
end
function
elpa_cholesky_complex_double_
new
end
function
elpa_cholesky_complex_double_
impl
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#ifdef WANT_SINGLE_PRECISION_COMPLEX
...
@@ -191,7 +192,7 @@ module ELPA1_AUXILIARY_new
...
@@ -191,7 +192,7 @@ module ELPA1_AUXILIARY_new
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_cholesky_complex_single_
new
: Cholesky factorization of a single-precision complex hermitian matrix
!> \brief elpa_cholesky_complex_single_
impl
: Cholesky factorization of a single-precision complex hermitian matrix
!> \details
!> \details
!> \param na Order of matrix
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be factorized.
!> \param a(lda,matrixCols) Distributed matrix which should be factorized.
...
@@ -206,11 +207,12 @@ module ELPA1_AUXILIARY_new
...
@@ -206,11 +207,12 @@ module ELPA1_AUXILIARY_new
!> \param mpi_comm_cols MPI communicator for columns
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_cholesky_complex_single_new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
)
result
(
success
)
function
elpa_cholesky_complex_single_impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
&
wantDebug
)
result
(
success
)
#include "elpa_cholesky_template_new_interface.X90"
#include "elpa_cholesky_template_new_interface.X90"
end
function
elpa_cholesky_complex_single_
new
end
function
elpa_cholesky_complex_single_
impl
#endif /* WANT_SINGLE_PRECISION_COMPLEX */
#endif /* WANT_SINGLE_PRECISION_COMPLEX */
...
@@ -218,7 +220,7 @@ module ELPA1_AUXILIARY_new
...
@@ -218,7 +220,7 @@ module ELPA1_AUXILIARY_new
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_invert_trm_complex_double_
new
: Inverts a double-precision complex upper triangular matrix
!> \brief elpa_invert_trm_complex_double_
impl
: Inverts a double-precision complex upper triangular matrix
!> \details
!> \details
!> \param na Order of matrix
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
...
@@ -233,17 +235,17 @@ module ELPA1_AUXILIARY_new
...
@@ -233,17 +235,17 @@ module ELPA1_AUXILIARY_new
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_invert_trm_complex_double_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
function
elpa_invert_trm_complex_double_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
mpi_comm_cols
,
wantDebug
)
result
(
success
)
#include "elpa_invert_trm_new_interface.X90"
#include "elpa_invert_trm_new_interface.X90"
end
function
elpa_invert_trm_complex_double_
new
end
function
elpa_invert_trm_complex_double_
impl
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#define COMPLEXCASE 1
#define COMPLEXCASE 1
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_invert_trm_complex_single_
new
: Inverts a single-precision complex upper triangular matrix
!> \brief elpa_invert_trm_complex_single_
impl
: Inverts a single-precision complex upper triangular matrix
!> \details
!> \details
!> \param na Order of matrix
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
...
@@ -258,27 +260,27 @@ module ELPA1_AUXILIARY_new
...
@@ -258,27 +260,27 @@ module ELPA1_AUXILIARY_new
!> \param wantDebug logical, more debug information on failure
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
!> \result succes logical, reports success or failure
function
elpa_invert_trm_complex_single_
new
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
function
elpa_invert_trm_complex_single_
impl
(
na
,
a
,
lda
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
mpi_comm_cols
,
wantDebug
)
result
(
success
)
#include "elpa_invert_trm_new_interface.X90"
#include "elpa_invert_trm_new_interface.X90"
end
function
elpa_invert_trm_complex_single_
new
end
function
elpa_invert_trm_complex_single_
impl
#endif /* WANT_SINGE_PRECISION_COMPLEX */
#endif /* WANT_SINGE_PRECISION_COMPLEX */
#define REALCASE 1
#define REALCASE 1
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
function
elpa_mult_at_b_real_double_
new
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
function
elpa_mult_at_b_real_double_
impl
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
#include "elpa_multiply_a_b_new_interface.X90"
#include "elpa_multiply_a_b_new_interface.X90"
end
function
elpa_mult_at_b_real_double_
new
end
function
elpa_mult_at_b_real_double_
impl
#if WANT_SINGLE_PRECISION_REAL
#if WANT_SINGLE_PRECISION_REAL
#define REALCASE 1
#define REALCASE 1
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_mult_at_b_real_single_
new
: Performs C : = A**T * B
!> \brief elpa_mult_at_b_real_single_
impl
: Performs C : = A**T * B
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> B is a (na,ncb) matrix
!> B is a (na,ncb) matrix
!> C is a (na,ncb) matrix where optionally only the upper or lower
!> C is a (na,ncb) matrix where optionally only the upper or lower
...
@@ -310,12 +312,12 @@ module ELPA1_AUXILIARY_new
...
@@ -310,12 +312,12 @@ module ELPA1_AUXILIARY_new
!> \param ldc leading dimension of matrix c
!> \param ldc leading dimension of matrix c
!> \result success
!> \result success
function
elpa_mult_at_b_real_single_
new
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
function
elpa_mult_at_b_real_single_
impl
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
#include "elpa_multiply_a_b_new_interface.X90"
#include "elpa_multiply_a_b_new_interface.X90"
end
function
elpa_mult_at_b_real_single_
new
end
function
elpa_mult_at_b_real_single_
impl
#endif /* WANT_SINGLE_PRECISION_REAL */
#endif /* WANT_SINGLE_PRECISION_REAL */
...
@@ -324,7 +326,7 @@ module ELPA1_AUXILIARY_new
...
@@ -324,7 +326,7 @@ module ELPA1_AUXILIARY_new
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_mult_ah_b_complex_double_
new
: Performs C : = A**H * B
!> \brief elpa_mult_ah_b_complex_double_
impl
: Performs C : = A**H * B
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> B is a (na,ncb) matrix
!> B is a (na,ncb) matrix
!> C is a (na,ncb) matrix where optionally only the upper or lower
!> C is a (na,ncb) matrix where optionally only the upper or lower
...
@@ -358,18 +360,18 @@ module ELPA1_AUXILIARY_new
...
@@ -358,18 +360,18 @@ module ELPA1_AUXILIARY_new
!> \param ldc leading dimension of matrix c
!> \param ldc leading dimension of matrix c
!> \result success
!> \result success
function
elpa_mult_ah_b_complex_double_
new
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
function
elpa_mult_ah_b_complex_double_
impl
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
#include "elpa_multiply_a_b_new_interface.X90"
#include "elpa_multiply_a_b_new_interface.X90"
end
function
elpa_mult_ah_b_complex_double_
new
end
function
elpa_mult_ah_b_complex_double_
impl
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#define COMPLEXCASE 1
#define COMPLEXCASE 1
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_mult_ah_b_complex_single_
new
: Performs C : = A**H * B
!> \brief elpa_mult_ah_b_complex_single_
impl
: Performs C : = A**H * B
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> B is a (na,ncb) matrix
!> B is a (na,ncb) matrix
!> C is a (na,ncb) matrix where optionally only the upper or lower
!> C is a (na,ncb) matrix where optionally only the upper or lower
...
@@ -403,12 +405,12 @@ module ELPA1_AUXILIARY_new
...
@@ -403,12 +405,12 @@ module ELPA1_AUXILIARY_new
!> \param ldc leading dimension of matrix c
!> \param ldc leading dimension of matrix c
!> \result success
!> \result success
function
elpa_mult_ah_b_complex_single_
new
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
function
elpa_mult_ah_b_complex_single_
impl
(
uplo_a
,
uplo_c
,
na
,
ncb
,
a
,
lda
,
ldaCols
,
b
,
ldb
,
ldbCols
,
nblk
,
&
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
mpi_comm_rows
,
mpi_comm_cols
,
c
,
ldc
,
ldcCols
)
result
(
success
)
#include "elpa_multiply_a_b_new_interface.X90"
#include "elpa_multiply_a_b_new_interface.X90"
end
function
elpa_mult_ah_b_complex_single_
new
end
function
elpa_mult_ah_b_complex_single_
impl
#endif /* WANT_SINGLE_PRECISION_COMPLEX */
#endif /* WANT_SINGLE_PRECISION_COMPLEX */
...
@@ -416,7 +418,7 @@ module ELPA1_AUXILIARY_new
...
@@ -416,7 +418,7 @@ module ELPA1_AUXILIARY_new
#define DOUBLE_PRECISION
#define DOUBLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_solve_tridi_double_
new
: Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method
!> \brief elpa_solve_tridi_double_
impl
: Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method
!> \details
!> \details
!>
!>
!> \param na Matrix dimension
!> \param na Matrix dimension
...
@@ -433,7 +435,7 @@ module ELPA1_AUXILIARY_new
...
@@ -433,7 +435,7 @@ module ELPA1_AUXILIARY_new
!> \param wantDebug logical, give more debug information if .true.
!> \param wantDebug logical, give more debug information if .true.
!> \result success logical, .true. on success, else .false.
!> \result success logical, .true. on success, else .false.
function
elpa_solve_tridi_double_
new
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
)
&
function
elpa_solve_tridi_double_
impl
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
)
&
result
(
success
)
result
(
success
)
#include "elpa_solve_tridi_new_interface.X90"
#include "elpa_solve_tridi_new_interface.X90"
...
@@ -446,7 +448,7 @@ module ELPA1_AUXILIARY_new
...
@@ -446,7 +448,7 @@ module ELPA1_AUXILIARY_new
#define SINGLE_PRECISION
#define SINGLE_PRECISION
#include "../general/precision_macros.h"
#include "../general/precision_macros.h"
!> \brief elpa_solve_tridi_single_
new
: Solve tridiagonal eigensystem for a single-precision matrix with divide and conquer method
!> \brief elpa_solve_tridi_single_
impl
: Solve tridiagonal eigensystem for a single-precision matrix with divide and conquer method
!> \details
!> \details
!>
!>
!> \param na Matrix dimension
!> \param na Matrix dimension
...
@@ -463,7 +465,7 @@ module ELPA1_AUXILIARY_new
...
@@ -463,7 +465,7 @@ module ELPA1_AUXILIARY_new
!> \param wantDebug logical, give more debug information if .true.
!> \param wantDebug logical, give more debug information if .true.
!> \result success logical, .true. on success, else .false.
!> \result success logical, .true. on success, else .false.
function
elpa_solve_tridi_single_
new
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
function
elpa_solve_tridi_single_
impl
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
mpi_comm_cols
,
wantDebug
)
result
(
success
)
#include "elpa_solve_tridi_new_interface.X90"
#include "elpa_solve_tridi_new_interface.X90"
...
@@ -475,5 +477,5 @@ module ELPA1_AUXILIARY_new
...
@@ -475,5 +477,5 @@ module ELPA1_AUXILIARY_new
end
module
elpa1_auxiliary_
new
end
module
elpa1_auxiliary_
impl
src/elpa1/elpa1_compute_private.F90
View file @
cbc34077
...
@@ -68,7 +68,7 @@ module ELPA1_COMPUTE
...
@@ -68,7 +68,7 @@ module ELPA1_COMPUTE
public
::
trans_ev_real
public
::
trans_ev_real
public
::
solve_tridi_double
public
::
solve_tridi_double
public
::
solve_tridi_double_
new
public
::
solve_tridi_double_
impl
interface
tridiag_real
interface
tridiag_real
module
procedure
tridiag_real_double
module
procedure
tridiag_real_double
...
@@ -82,7 +82,7 @@ module ELPA1_COMPUTE
...
@@ -82,7 +82,7 @@ module ELPA1_COMPUTE
public
::
tridiag_real_single
! Transform real single-precision symmetric matrix to tridiagonal form
public
::
tridiag_real_single
! Transform real single-precision symmetric matrix to tridiagonal form
public
::
trans_ev_real_single
! Transform real single-precision eigenvectors of a tridiagonal matrix back
public
::
trans_ev_real_single
! Transform real single-precision eigenvectors of a tridiagonal matrix back
public
::
solve_tridi_single
public
::
solve_tridi_single
public
::
solve_tridi_single_
new
public
::
solve_tridi_single_
impl
#endif
#endif
public
::
tridiag_complex_double
! Transform complex hermitian matrix to tridiagonal form
public
::
tridiag_complex_double
! Transform complex hermitian matrix to tridiagonal form
...
...
src/elpa1/elpa1_new_interface.F90
View file @
cbc34077
...
@@ -81,10 +81,10 @@
...
@@ -81,10 +81,10 @@
#include "config-f90.h"
#include "config-f90.h"
!> \brief Fortran module which provides the routines to use the one-stage ELPA solver
!> \brief Fortran module which provides the routines to use the one-stage ELPA solver
module
ELPA1_new
module
elpa1_impl
use
,
intrinsic
::
iso_c_binding
use
,
intrinsic
::
iso_c_binding
use
elpa_utilities
use
elpa_utilities
use
elpa1_auxiliary_
new
use
elpa1_auxiliary_
impl
use
elpa1_utilities
use
elpa1_utilities
implicit
none
implicit
none
...
@@ -92,46 +92,46 @@ module ELPA1_new
...
@@ -92,46 +92,46 @@ module ELPA1_new
! The following routines are public:
! The following routines are public:
private
private
public
::
elpa_get_communicators_
new
!< Sets MPI row/col communicators as needed by ELPA
public
::
elpa_get_communicators_
impl
!< Sets MPI row/col communicators as needed by ELPA
public
::
elpa_solve_evp_real_1stage_double_
new
!< Driver routine for real double-precision 1-stage eigenvalue problem
public
::
elpa_solve_evp_real_1stage_double_
impl
!< Driver routine for real double-precision 1-stage eigenvalue problem
#ifdef WANT_SINGLE_PRECISION_REAL
#ifdef WANT_SINGLE_PRECISION_REAL
public
::
elpa_solve_evp_real_1stage_single_
new
!< Driver routine for real single-precision 1-stage eigenvalue problem
public
::
elpa_solve_evp_real_1stage_single_
impl
!< Driver routine for real single-precision 1-stage eigenvalue problem
#endif
#endif
public
::
elpa_solve_evp_complex_1stage_double_
new
!< Driver routine for complex 1-stage eigenvalue problem
public
::
elpa_solve_evp_complex_1stage_double_
impl
!< Driver routine for complex 1-stage eigenvalue problem
#ifdef WANT_SINGLE_PRECISION_COMPLEX
#ifdef WANT_SINGLE_PRECISION_COMPLEX
public
::
elpa_solve_evp_complex_1stage_single_
new
!< Driver routine for complex 1-stage eigenvalue problem
public
::
elpa_solve_evp_complex_1stage_single_
impl
!< Driver routine for complex 1-stage eigenvalue problem
#endif
#endif
! imported from elpa1_auxilliary
! imported from elpa1_auxilliary
public
::
elpa_mult_at_b_real_double_
new
!< Multiply double-precision real matrices A**T * B
public
::
elpa_mult_at_b_real_double_
impl
!< Multiply double-precision real matrices A**T * B
public
::
elpa_mult_ah_b_complex_double_
new
!< Multiply double-precision complex matrices A**H * B
public
::
elpa_mult_ah_b_complex_double_
impl
!< Multiply double-precision complex matrices A**H * B
public
::
elpa_invert_trm_real_double_
new
!< Invert double-precision real triangular matrix
public
::
elpa_invert_trm_real_double_
impl
!< Invert double-precision real triangular matrix
public
::
elpa_invert_trm_complex_double_
new
!< Invert double-precision complex triangular matrix
public
::
elpa_invert_trm_complex_double_
impl
!< Invert double-precision complex triangular matrix
public
::
elpa_cholesky_real_double_
new
!< Cholesky factorization of a double-precision real matrix
public
::
elpa_cholesky_real_double_
impl
!< Cholesky factorization of a double-precision real matrix
public
::
elpa_cholesky_complex_double_
new
!< Cholesky factorization of a double-precision complex matrix
public
::
elpa_cholesky_complex_double_
impl
!< Cholesky factorization of a double-precision complex matrix