User Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 14

DownloadUser Guide
Open PDF In BrowserView PDF
User’s guide of EDRIXS code
Yilin Wang
December 13, 2018

Contents
1 Installation
1.1 Get EDRIXS . . . . . . . . . . . . . . . . .
1.2 Requirement of tools and libraries . . . . . .
1.3 Tips for compiling Arpack library . . . . . .
1.4 Compile the fortran source code . . . . . . .
1.5 Compile the documentation of Python API

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

3
3
3
3
4
4

2 Inputs and outputs
2.1 config.in . . . . . . . . . . . . . . . . . . . .
2.1.1 integer :: ed_solver . . . . . . . . . .
2.1.2 integer :: num_val_orbs . . . . . . .
2.1.3 integer :: num_core_orbs . . . . . .
2.1.4 integer :: neval . . . . . . . . . . . .
2.1.5 integer :: nvector . . . . . . . . . . .
2.1.6 integer :: ncv . . . . . . . . . . . . .
2.1.7 integer :: num_gs . . . . . . . . . .
2.1.8 integer :: maxiter . . . . . . . . . . .
2.1.9 integer :: min_ndim . . . . . . . . .
2.1.10 integer :: nkryl . . . . . . . . . . . .
2.1.11 integer :: linsys_max . . . . . . . . .
2.1.12 logical :: idump . . . . . . . . . . . .
2.1.13 real(kind=8) :: linsys_tol . . . . . .
2.1.14 real(kind=8) :: eigval_tol . . . . . .
2.1.15 real(kind=8) :: omega_in . . . . . .
2.1.16 real(kind=8) :: gamma_in . . . . . .
2.2 fock_x.in (x=i,n,f) . . . . . . . . . . . . . .
2.3 hopping_x.in (x=i,n) . . . . . . . . . . . . .
2.4 coulomb_x.in (x=i,n) . . . . . . . . . . . .
2.5 transop_xas.in & transop_rixs_x.in (x=i,f)
2.6 eigvals.dat . . . . . . . . . . . . . . . . . . .
2.7 denmat.dat . . . . . . . . . . . . . . . . . .
2.8 eigvec.i . . . . . . . . . . . . . . . . . . . .
2.9 xas_poles.i & rixs_poles.i . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

5
5
5
5
6
6
6
6
6
6
7
7
7
7
7
7
8
8
8
8
9
9
10
10
11
11

1

CONTENTS

2

3 Conventions used in the code
13
3.1 orbital orders . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Chapter 1

Installation
1.1

Get EDRIXS

Type the following command in a terminal to get the latest version of
EDRIXS code,
$ cd ${EDRIXS_DIR}
$ git clone https://github.com/shenmidelin/edrixs.git

1.2

Requirement of tools and libraries

We only test the code using Intel’s fortran compiler (ifort), so we strongly recommend it. A MPI library such as OpenMPI or MPICH3 is needed. For lapack library, we recommend Intel’s MKL. For Arpack library, we recommend
arpack-ng (https://github.com/opencollab/arpack-ng). Python3, Numpy,
Scipy, Sympy, Matplotlib, Sphinx and Numpydoc are required. We recommend to install the latest Anacona package (https://www.anaconda.com/)
for the Python3 enviroment and the libraries.

1.3

Tips for compiling Arpack library

Get the latest version of arpack-ng by typing,
$ git clone https://github.com/opencollab/arpack-ng.git
Compile it by typing,
$ sh bootstrap
$ ./configure --prefix=${ARPACK_DIR} --enable-mpi \
> --with-blas="-L${MKLROOT}/lib/intel64 -lmkl_core -lmkl_sequential -lmkl_rt" \
3

CHAPTER 1. INSTALLATION

4

> --with-lapack="-L${MKLROOT}/lib/intel64 -lmkl_core -lmkl_sequential -lmkl_rt" \
> FC=ifort F77=ifort MPIFC=mpif90 MPIF77=mpif90
$ make
$ make install
You may need to install autotools: autoconf, automake, libtool.

1.4

Compile the fortran source code

Go to the fortran source directory and edit the make.sys file to set the Fotran
compiler and Lapack and Arpack libraries.
$ cd edrixs/src/fortran
$ vim make.sys
F90 = mpif90 or F90 = mpiifort
LIBS = -L${MKLROOT}/lib/intel64 -lmkl_core -lmkl_sequential -lmkl_rt \\
${ARPACK_DIR}/lib/libparapck.a ${ARPACK_DIR}/lib/libarpack.a
where, MKLROOT is the root directory of MKL library and
ARPACK_DIR is the root directory of the Arpack libraries. Then, type
$ make
$ make install
to compile and install the executable files (.x) to edrixs/bin directory.
After that, please add the following two lines in .bashrc or .bash_profile,
export PATH=${EDRIXS_DIR}/edrixs/bin:$PATH
export PYTHONPATH=${EDRIXS_DIR}/edrixs/src/python:$PYTHONPATH

1.5
$
$
$
$

Compile the documentation of Python API

cd edrixs/docs
mkdir build
sphinx-build -b html source build
make html

Open the file
${EDRIXS_DIR}/edrixs/docs/build/index.html
in a browser to read the Python API documentation.

Chapter 2

Inputs and outputs
2.1

config.in

2.1.1

integer :: ed_solver

For ed.x
Default: 1
The type of ED solver:
ed_solver = 0, full diagonalization, all the eigenvalues can be obtained, for
small size problem n < 1000.
ed_solver = 1, standard Lanczos algorithm without re-orthogonalization,
for roughly finding one ground state.
ed_solver = 2, use parallel Arpack library, for finding a few lowest excited
states.

2.1.2

integer :: num_val_orbs

For ed.x, xas.x and rixs.x
Default : 2
Number of valence orbitals (including spin).

5

CHAPTER 2. INPUTS AND OUTPUTS

2.1.3

integer :: num_core_orbs

For xas.x and rixs.x
Default : 2
Number of deep core orbitals (including spin).

2.1.4

integer :: neval

For ed.x
Default : 1
Number of eigenvalues are obtained.

2.1.5

integer :: nvector

For ed.x
Default : 1
Number of eigenvectors are obtained.

2.1.6

integer :: ncv

For ed.x
Default : neval + 2
Used by ed_solver = 2, control the converged speed, ncv≥ neval +2.

2.1.7

integer :: num_gs

For xas.x and rixs.x
Default : 1
Number of ground states are used in XAS or RIXS calculations.

2.1.8

integer :: maxiter

For ed.x
Default : 500
Maximum Lanczos iterations.

6

CHAPTER 2. INPUTS AND OUTPUTS

2.1.9

integer :: min_ndim

For ed.x
Default : 1000
If the dimension of the Hamitlonian is smaller than min_ndim, ed_solver
will be automatically set to be 0, Lapack will be used.

2.1.10

integer :: nkryl

For xas.x and rixs.x
Default : 500
Maximum iterations of building Krylov subspace.

2.1.11

integer :: linsys_max

For rixs.x
Default : 500
Maximum iterations for solving the linear equations by using MINRES.

2.1.12

logical :: idump

For ed.x
Default : .false.
Whether to write out the eigenvectors to file eigvec.xxx.

2.1.13

real(kind=8) :: linsys_tol

For rixs.x
Default : 1E-8
Tolerance for solving the linear equations.

2.1.14

real(kind=8) :: eigval_tol

For ed.x
Default : 1E-8
Tolerance for finding eigenvalues.

7

CHAPTER 2. INPUTS AND OUTPUTS

2.1.15

real(kind=8) :: omega_in

For rixs.x
Default : 0.0
The energy of incident x-ray at which the RIXS spectrum is measured.

2.1.16

real(kind=8) :: gamma_in

For rixs.x
Default : 0.1
The broadening factor of the core-hole life-time (eV).

2.2

fock_x.in (x=i,n,f)

Input for ed.x, xas.x and rixs.x
Use decimal numbers to represent the Fock basis. The following is an
example,
220
511
767
895
959
991
...

The number “220” in the first line is the total number of Fock basis, and
the decimal numbers in the following lines are the Fock basis. Please note
that these numbers should be in an ascending order.

2.3

hopping_x.in (x=i,n)

Input for ed.x, xas.x and rixs.x
The nonzeros elments of the two-fermion terms tα,β in Hamiltonians Ĥi
and Ĥn or any other operators Ô. The following is an example,

8

CHAPTER 2. INPUTS AND OUTPUTS

1
1
1
1
1
1
1
1
1
1
...

112
0.175000000000
−0.021213203436
−0.247487373415
−0.000000000000
−0.000000000000
−0.073484692232
−0.103923048381
0.000000000219
−0.029393876893
0.014696938508

1
3
4
5
7
8
9
10
11
12

9

0.000000000000
−0.021213203436
0.000000000000
0.030000000000
0.146969384464
−0.073484692541
0.103923048381
−0.103923048600
−0.000000000000
−0.014696938446

The number in the first line is the number of the nonzeros of tα,β , the
following lines are the nonzero elements. The first column is the first index
α and the second column is the second index β. The third and fourth
columns are the real and imaginary parts of the element tα,β .

2.4

coulomb_x.in (x=i,n)

Input for ed.x, xas.x and rixs.x
The nonzeros elments of the four-fermion terms Uα,β,γ,δ in Hamiltonians Ĥi
and Ĥn or any other operators Ô. The following is an example,
152
1
1
1
1
1
1
1
1
1
1
...

1
2
3
3
4
4
5
5
5
6

1
2
1
3
2
4
1
3
5
2

1
1
3
1
3
1
5
3
1
5

0.850000000000
0.850000000000
0.150000000000
0.700000000000
0.150000000000
0.700000000000
0.300000000000
−0.150000000000
0.850000000000
0.300000000000

0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000

The number in the first line is the number of the nonzeros of Uα,β,γ,δ , the
following lines are the nonzero elements. The first to the fourth columns
are the indices α, β, γ, δ, respectively. The last two columns are the real
and imaginary parts of the element Uα,β,γ,δ .

2.5

transop_xas.in & transop_rixs_x.in (x=i,f)

Input for xas.x and rixs.x

CHAPTER 2. INPUTS AND OUTPUTS

10

The nonzeros elments of the transition operators Dα,β in XAS and RIXS
calculations. The following is an example,

1
1
2
2
3
3
4
4
...

15
17
16
18
13
17
14
18

24
0.080393652075
0.000000000000
0.080393652075
0.000000000000
0.080393652075
−0.080393652075
0.080393652075
−0.080393652075

0.488641941854
0.097631072228
0.488641941854
0.097631072228
−0.488641941854
−0.488641941854
−0.488641941854
−0.488641941854

The number in the first line is the number of the nonzeros Dα,β . The
following lines are the nonzero elements. The first column is the first index
α and the second column is the second index β. The third and fourth
columns are the real and imaginary parts of the element Dα,β .

2.6

eigvals.dat

Output from ed.x
The eigenvalues obtained from ED solver. The following is an example,
1
2
3
4
5
6
7
8
9
10
...

−64.3102435734
−64.3102435734
−64.3102435734
−64.3102435734
−63.5680930356
−63.5680930355
−63.5680930355
−63.3445562508
−63.3445562508
−63.3445562508

The first column is the index, and the second column is the eigenvalues
(eV).

2.7

denmat.dat

Output from ed.x
E
D
The density matrix Γi fˆα† fˆβ Γi obtained from ED solver. The following
is an example,

CHAPTER 2. INPUTS AND OUTPUTS
1
1
1
1
1
1
1
1
1
1
...

1
1
1
1
1
1
1
1
1
1

1
2
3
4
5
6
7
8
9
10

11
−0.0000000000
−0.0110465040
0.0280312207
0.0000000000
0.0082840204
−0.0076967959
0.0000000000
−0.0036560575
0.0100115957
0.0000000000

0.3970514690
0.0492650492
0.1641162863
−0.0428648754
−0.1046733922
−0.0047905834
−0.2227170168
0.0163052360
0.0615741278
−0.0136551480

The first column are the indices of the eigenstates |Γi i. The second and
third column are the orbital indices α, β, respectively. The last two column
are the real and imaginary parts of the elments of the densiy matrix.

2.8

eigvec.i

Output from ed.x, binary file
The wavefunction of each eigenvector obtatined from ED solver, used later
by xas.x and rixs.x.

2.9

xas_poles.i & rixs_poles.i

Output from xas.x and rixs.x
Parameters α, β of the tridiagonal matrix generated by Lanczos process,


α1 β2
 β2 α2



β3





β3
α3
..
.

..
..

.

. βn
βn αn









The following is an example,
# number_of_poles :
# enegry :
# normalization :
1
−69.6522949784
2
−63.8752918165
3
−58.1138926713
4
−54.7529810716
5
−58.0794041399

500
-64.3102435734
0.6460959156
2.3222847588
2.9676823607
5.9882311024
8.2661269876
10.2511871133

CHAPTER 2. INPUTS AND OUTPUTS
6
7
8
9
...

−50.5589161715
−48.8412482141
−45.6761682831
−37.4086274742

12

10.0207070382
10.8058123445
12.7882369948
15.3864546117

The first line is the total number of α, β. The second line is the energy of
the ground state. The third line is a normalization factor. The following
lines are α, β, where, the first column are incides, the second and third
column are α, β, respectively.

Chapter 3

Conventions used in the code
3.1

orbital orders

All the valence orbitals should be put in front of all the core orbitals. For
example, for single atom 2p → 5d transition,
1−10

11−16

z
}|
{ z }| {
1101001100 111011

(3.1.1)

where, 1-10 are 5d valence orbitals and 11-16 are 2p core orbitals; for
two-site 2p → 5d transition, 1-20 are 5d valence orbitals and 21-32 are 2p
core orbitals.
When building Fock basis, only valence orbitals are considered. xas.x
and rixs.x will take care of the core orbitals internally.

13



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 14
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.17
Create Date                     : 2018:12:13 15:19:49-05:00
Modify Date                     : 2018:12:13 15:19:49-05:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2
EXIF Metadata provided by EXIF.tools

Navigation menu