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, &