Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2015.11.001/html/index.html)
for each *ELPA* release is available.
### General concept to use ELPA ###
### General concept of the *ELPA* library ###
#### MPI version of ELPA ####
The *ELPA* library consists of two main parts:
-*ELPA 1stage* solver
-*ELPA 2stage* solver
Both variants of the *ELPA* solvers are available for real or complex valued matrices.
Thus *ELPA* provides the following user functions (see man pages or [online] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2015.11.001/html/index.html) for details):
- get_elpa_communicators : set the row / column communicators for *ELPA*
- solve_evp_complex_1stage : solve a complex valued eigenvale proplem with the *ELPA 1stage* solver
- solve_evp_real_1stage : solve a real valued eigenvale proplem with the *ELPA 1stage* solver
- solve_evp_complex_2stage : solve a complex valued eigenvale proplem with the *ELPA 2stage* solver
- solve_evp_real_2stage : solve a real valued eigenvale proplem with the *ELPA 2stage* solver
Furthermore *ELPA* provides the utility binary "print_available_elpa2_kernels": it tells the user
which *ELPA 2stage* compute kernels have been installed and which default kernels are set
If you want to solve an eigenvalue problem with *ELPA*, you have to decide whether you
want to use *ELPA 1stage* or *ELPA 2stage* solver. Normally, *ELPA 2stage* is the better
choice since it is faster, but there a matrix dimensions where *ELPA 1stage* is supperior.
Independent of the choice of the solver, the concept of calling *ELPA* is always the same:
#### MPI version of *ELPA* ####
In this case, *ELPA* relies on a BLACS distributed matrix.
To solve a Eigenvalue problem of this matrix with *ELPA*, one has
...
...
@@ -23,7 +46,7 @@ To solve a Eigenvalue problem of this matrix with *ELPA*, one has
2. to create row and column MPI communicators for ELPA (with "get_elpa_communicators")
3. to call *ELPA 1stage* or *ELPA 2stage* for the matrix.
Here is a very simple MPI code snippet for using *ELPA*: For the definition of all variables
Here is a very simple MPI code snippet for using *ELPA 1stage*: For the definition of all variables
please have a look at the man pages and/or the online documentation (see above)
...
...
@@ -51,8 +74,8 @@ please have a look at the man pages and/or the online documentation (see above)
print *
end if
success solve_evp_real_1stage(na, nev, a, na_rows, ev, z, na_rows, nblk, &