Help file for the optic utility of the ABINIT package.

This file explains the i/o parameters needed for the calculation of the frequency dependent linear optical dielectric function and second order nonlinear optical susceptibility, thanks to the Optic utility of the ABINIT package.


The user is advised to be familiar with the main ABINIT help file before reading the present file.

A knowledge of the computation of the linear response d/dk perturbation, explained in the ABINIT (respfn) help file, is also requested. Actually, a full understanding of the ABINIT treatment of perturbation (respfn) should NOT be requested in order to use Optic, but with the present ordering of the help files and tutorial, this is not obvious. In a future version, the tutorials and help files will be reorder and modified.

It will be easier to discover the present file with the help of the Optic tutorial.
It is worthwhile to print this help file, for ease of reading.

Copyright (C) 2005-2017 ABINIT group (SS,XG,YG)
This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
For the initials of contributors, see ~abinit/doc/developers/contributors.txt .

Content of the help file.


 

1. Introduction

Optic allows to compute the frequency dependent linear optical dielectric function and second order nonlinear optical susceptibility. An introduction to such computations is given in the following paper : The following are also very useful references : Before going to the detailed explanation of the Optic utility, the user is advised to get familiar to the theory behind it, explained in these references. So, either you know this theory and you continue the tutorial, or you should stop the tutorial here, and read at least Ref. 1.

The specific purpose of the Optic utility is to read in the position matrix elements generated by ABINIT (also giving the momentum matrix elements), and then use Eq. 46 in Ref. 1 to determine the linear and Eqs. 49, 50 and 51 in Ref. 1 to determine the nonlinear optical response of the material under investigation.


2. How to run Optic ?

The use of Optic is quite simple :

optic < optic.files > optic.log
where the optic.files file contains three information : the name of the input file, the name of an output file (actually unused), and the root name for all other output files. These input files will be described in the next section.

However, before being able to use Optic, you must have obtained, from the main abinit program, four different files, corresponding to the physical system that you want to study:

Supposing you have read the main ABINIT help file, the production of the first file should not require any additional explanation. However, the way to obtain the matrix elements is worth explaining.
The long-wave method as well as the Berry-phase treatment of electric field, allow to establish the equivalence between the off-diagonal matrix elements of the position operator, and the off-diagonal matrix elements of the derivative with respect to the wavevector (d/dk), for the periodic part of the Bloch functions, see for example section VI of X. Gonze, Phys. Rev. B 55, 10337 (1997), or Nunes and Gonze, Phys. Rev. B 63, 155107 (2001), and references therein. Moreover, a straightforward relationship exists between these matrix elements, and the matrix elements of the momentum operator.

The main abinit program has the capability to compute derivatives of wavefunctions with respect to their wavevector. This is explained in the ABINIT (respfn) help file. Such a calculation implies treating three d/dk perturbations, with numbers 3*natom+1, 3*natom+2 and 3*natom+3 (that is, for a unit cell with 2 atoms, perturbations number 7, 8 and 9). In the 2-atom case, the associated files needed for Optic have the index _1WF7 , _1WF8 , and _1WF9 .

The formalism implemented in Optic treats explicitly the eigenstates lying in the range of energy between the lowest occupied wavefunction and the highest one plus the maximal excitation energy (chosen by the user). All the other ones are neglected. This has two important consequences for the preliminary runs :

Because of the latter, the computation of the response to d/dk perturbations is much shorter than usual : indeed, the matrix elements between the explicitly ground-state wavefunctions are computed at the very beginning of the abinit(respfn) run. It is not worth to make a full calculation of the modification of the wavefunctions due to a change of wavevector.

3. Optic input file and input variables

A typical optic.files file is presented below :
optic.in     ! Name of input file
optic.out    ! Unused
optic        ! Root name for all files that will be produced
Please note that the format of input files for Optic has changed from Abinit v8.0 Since very few input parameters are required for Optic, the optic.in file contains them with the namelist format. The order of the three parts, namely FILES, PARAMETERS and COMPUTATIONS must be kept unaltered.
&FILES
 ddkfile_1 = 'toptic_1o_DS4_1WF7',
 ddkfile_2 = 'toptic_1o_DS5_1WF8',
 ddkfile_3 = 'toptic_1o_DS6_1WF9',
 wfkfile = 'toptic_1o_DS3_WFK'
/
&PARAMETERS
 broadening = 0.002,
 domega = 0.0003,
 maxomega = 0.3,
 scissor = 0.000,
 tolerance = 0.002
/
&COMPUTATIONS
 num_lin_comp = 1,
 lin_comp = 11,
 num_nonlin_comp = 2,
 nonlin_comp = 123,222,
/


ddkfile_X : name of the ddk file on the direction X (no default)
Variable type: string with the filename

Specify the filename that has been produced by the preparatory Abinit run. This file must contain the matrix elements of the d/dk operator along direction X. It must not contain the first-order wavefunctions and may be generated using prtwf 3.
You should make sure that the number of bands, of spin channels and of k-points are the same in all the files.


Go to the top
wfkfile : name of the wfk file (no default)
Variable type: string with the filename

Specify the filename that has been produced by the preparatory Abinit run. This file must contain the eigenenergies on the set of k-points and bands to be included in the calculation.
You should make sure that the number of bands, of spin channels and of k-points are the same in all the files.


Go to the top
broadening (default = 1.0d-3 Ha)
Variable type: real parameter, given in Hartree

In Eq. 46 of Ref. 1, it is clear that when ever wnm(k) is equal to w, there is a resonance. Numerically this would lead to an infinity. In order to avoid this one could do two things. You could change the sum over k-points to integration and then use linear tetrahedron method (see Ref. 2 for details). Another way to get around the problem is, like we do in the present case, avoid this singularity by adding a small complex number to the denominator. This prevents the denominator from ever going to 0 and acts as a broadening to the spectrum. The broadening should not be too large as this would wash out the features in the spectrum.

Go to the top
domega : Frequency grid step (default = 1.0d-3 Ha)
Variable type: two real parameters, given in Hartree

The step and maximum sets your energy grid for the calculation using the formula number of energy mesh points=maximum/step (zero excluded). So in order to capture more features you can decrease the step size to get a finer energy grid. In order to go to higher frequency, increase the maximum.

Go to the top
maxomega : Maximum of frequency grid (default = 1 Ha)
Variable type: two real parameters, given in Hartree

The step and maximum sets your energy grid for the calculation using the formula number of energy mesh points=maximum/step (zero excluded). So in order to capture more features you can decrease the step size to get a finer energy grid. In order to go to higher frequency, increase the maximum.

Go to the top
scissor : Scissors shift (default = 0.0 [ no scissor ])
Variable type: real parameter, given in Hartree

LDA/GGA are well known to underestimate the band-gap by up to 100%. In order to get the optical spectrum and make a realistic comparison with experiments one needs to correct for this. This can be achieved in two ways. The scissors shift is normally chosen to be the difference between the experimental and theoretical band-gap and is used to shift the conduction bands only. Another way in which you do not have to rely on experimental data is to determine the self energy using the GW approach. In this case the opening of the gap due to the GW correction can be used as scissor shift.

Go to the top
tolerance (default = 1.0d-3 Ha)
Variable type: real parameter, given in Hartree

When energy denominators are smaller than tolerance, the term is discarded from the sum.

Go to the top
num_lin_comp: Number of components for linear response
Variable type: integer

How many components out of 9 of the linear optical dielectric tensor do you want to calculate. Most of these are either equal or zero depending upon the symmetry of the material (for detail see Ref. 3).
Note that the directions are along the Cartesian axis.


Go to the top
lin_comp: Components of the linear response
Variable type: integers(num_lin_comp)

This tells which component of the dielectric tensor you want to calculate. These numbers are called a and b Eqs. 46 in Ref. 1. 1 2 3 represent x y and z respectively. For example 11 would be xx and 32 would mean zy.

Go to the top
num_nonlin_comp: Number of components for nonlinear response
Variable type: integer

How many components out of 27 of the non-linear optical dielectric tensor do you want to calculate. Most of these are either equal or zero depending upon the symmetry of the material (for detail see Ref. 3).
Note that the directions are along the Cartesian axis.


Go to the top
nonlin_comp: Components of the nonlinear response
Variable type: integers(num_nonlin_comp)

This tells which component of the dielectric tensor you want to calculate. These numbers are called a, b and c in Ref. 1. 1 2 3 represent x y and z respectively. For example 111 would be xxx and 321 would mean zyx.

Go to the top

4. Optic output files

4.1. Linear optical response data files

Name: case_a_b-linopt.out
Contains the following 3 data sets

In the header of the file you can find information about the calculation. Some results for GaAs(LiF???) are presented in this document to show what can be expected.

4.2. Non-linear optical response data files

Name: case_a_b_c-ChiKIND1.out
KIND1:This can be TotIm, TotRe or TotAbs
Contains: column 1 - energy(eV), column 2 and 3 - imaginary (KIND1=TotIm), real (KIND1=TotRe) or absolute (KIND1=TotAbs) value of the abc component of the nonlinear optical susceptibility. Second column contains values in electro-static units (esu) and third column contains values in the SI units.

Name: case_a_b_c-ChiKIND2.out
KIND2:This can be Im, Re or abs
Contains: column 1 - energy(eV), column 2, 3 inter and column 4, 5 intra band contributions to the imaginary (KIND2=Im), real (KIND2=Re) or absolute (KIND2=Abs) value of the abc component of the nonlinear optical susceptibility. These components are labeled as inter and intra in Eqs. 49-51 in Ref. 1.

All the values are in electro-static units (esu). In the header of all the above files you can find information about the calculation. Some results of nonlinear optical spectrum for GaAs(LiF???) are presented in this document to show what can be expected.


5. Trouble shooting

1) All I get is zeros in my *-linopt.out file. Why?

There are several possibilities.
Let us explore some of them here:

2) All I get is zeros in my *-ChiKIND.out file. Why?

Two most common mistakes are: