mirror of https://github.com/abinit/abinit.git
620 lines
28 KiB
Markdown
620 lines
28 KiB
Markdown
---
|
||
authors: JWZ, PhG, MVeithen, XG, NAP
|
||
---
|
||
|
||
# Static non-linear properties
|
||
|
||
## Electronic non-linear susceptibility, non-resonant Raman tensor, electro-optic effect.
|
||
|
||
This tutorial shows how to obtain the following non-linear physical properties, for an insulator:
|
||
|
||
* The non-linear optical susceptibilities
|
||
* The Raman tensor of TO and LO modes
|
||
* The electro-optic coefficients
|
||
|
||
We will study the compound AlP. During the preliminary steps needed to compute
|
||
non-linear properties, we will also obtain several linear response properties:
|
||
|
||
* The Born effective charges
|
||
* The dielectric constant
|
||
* The proper piezoelectric tensor (clamped and relaxed ions)
|
||
|
||
Finally, we will also compute the derivative of the susceptibility tensor with
|
||
respect to atomic positions (Raman tensor), using finite differences.
|
||
|
||
The user should have already completed several advanced tutorials, including:
|
||
[Response-Function 1](/tutorial/rf1), [Response-Function 2](/tutorial/rf2),
|
||
[Polarization and Finite electric fields](/tutorial/polarization), and the
|
||
[Elastic properties](/tutorial/elastic).
|
||
|
||
This tutorial should take about 1 hour and 30 minutes.
|
||
|
||
[TUTORIAL_README]
|
||
|
||
## 1 Ground-state properties of AlP and general parameters
|
||
|
||
*Before beginning, you might consider working in a different subdirectory, as for the other tutorials.
|
||
For example, create Work_NLO in \$ABI_TESTS/tutorespfn/Input*.
|
||
|
||
In order to save some time, you might immediately start running a calculation.
|
||
Copy the file *tnlo_2.abi* from *\$ABI_TESTS/tutorespfn/Input* to *Work_NLO*.
|
||
Run `abinit` on this file; it will take several minutes on a desktop PC.
|
||
|
||
In this tutorial we will assume that the ground-state properties of AlP have
|
||
been previously obtained, and that the corresponding convergence studies have
|
||
been done. Let us emphasize that, from our experience, accurate and trustable
|
||
results for third order energy derivatives usually require a extremely high
|
||
level of convergence. So, even if it is not always very apparent here, careful
|
||
convergence studies must be explicitly performed in any practical study you
|
||
attempt after this tutorial. As usual, convergence tests must be done on
|
||
the property of interest (thus it is insufficient to determine parameters giving
|
||
proper convergence only on the total energy, and to use them blindly for non-linear
|
||
properties).
|
||
|
||
We will adopt the following set of generic parameters (quite similar to those
|
||
in the
|
||
[tutorial on Polarization and finite electric field](/tutorial/polarization)):
|
||
```
|
||
acell 3*7.1391127387E+00
|
||
rprim 0.0000000000E+00 7.0710678119E-01 7.0710678119E-01
|
||
7.0710678119E-01 0.0000000000E+00 7.0710678119E-01
|
||
7.0710678119E-01 7.0710678119E-01 0.0000000000E+00
|
||
ecut 2.8
|
||
ecutsm 0.5
|
||
dilatmx 1.05
|
||
nband 4 (=number of occupied bands)
|
||
ngkpt 6 6 6
|
||
nshiftk 4
|
||
shiftk 0.5 0.5 0.5
|
||
0.5 0.0 0.0
|
||
0.0 0.5 0.0
|
||
0.0 0.0 0.5
|
||
|
||
pseudopotentials Pseudodojo_nc_sr_04_pw_standard_psp8/P.psp8
|
||
Pseudodojo_nc_sr_04_pw_standard_psp8/Al.psp8
|
||
```
|
||
|
||
In principle, the [[acell]] to be used should be the one corresponding to the
|
||
optimized structure at the [[ecut]], and [[ngkpt]] combined with [[nshiftk]]
|
||
and [[shiftk]], chosen for the calculations. Unfortunately, for the purpose of
|
||
this tutorial, in order to limit the duration of the runs, we have to work at
|
||
an unusually low cutoff of 2.8 Ha for which the optimized lattice constant is
|
||
unrealistic and equal to 7.139 Bohr (instead of the converged value of 7.251).
|
||
In what follows, the lattice constant has been arbitrarily fixed to 7.139.
|
||
Bohr. For comparison, results with [[ecut]] = 5 and 30 are also reported and, in those
|
||
cases, were obtained at the optimized lattice constants of 7.273 and 7.251 Bohr. For those
|
||
who would like to try later, convergence tests and structural optimizations
|
||
can be done using the file *\$ABI_TESTS/tutorespfn/Input/tnlo_1.abi*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_1.abi %}
|
||
|
||
Before going further, you might refresh your memory concerning the other variables:
|
||
[[ecutsm]], [[dilatmx]], and [[nbdbuf]].
|
||
|
||
## 2 Linear and non-linear responses from density functional perturbation theory (DFPT)
|
||
|
||
As a theoretical support to this section of the tutorial, you might consider
|
||
reading [[cite:Veithen2005]].
|
||
|
||
In the first part of this tutorial, we will describe how to compute various
|
||
linear and non-linear responses directly connected to second-order and third-
|
||
order derivatives of the energy, using DFPT. From the $(2n+1)$ theorem,
|
||
computation of energy derivatives up to third order only requires the
|
||
knowledge of the ground-state and first-order wavefunctions, see
|
||
[[cite:Gonze1989]] and [[cite:Gonze1995]].
|
||
Our study will therefore include the following steps : (i) computation of the
|
||
ground-state wavefunctions and density; (ii) determination of
|
||
wavefunctions derivatives and construction of the related databases for second and third-
|
||
order energy derivatives, (iii) combination of the different databases and
|
||
analysis to get the physical properties of interest.
|
||
|
||
These steps are closely related to what was done for the dielectric and dynamical
|
||
properties, except that an additional database for third-order energy
|
||
derivatives will now be computed during the run. Only selected third-order
|
||
derivatives are implemented at present in ABINIT, and concern responses to electric
|
||
field and atomic displacements:
|
||
|
||
* non-linear optical susceptibilities
|
||
(related to a third-order derivative of the energy
|
||
with respect to electric fields at clamped nuclei positions)
|
||
|
||
* Raman susceptibilities (mixed third-order derivative of the energy, twice with respect
|
||
to electric fields at clamped nuclei positions, and once with respect to atomic displacement)
|
||
|
||
* Electro-optic coefficients (related to a third-order derivative of the energy with respect to electric fields,
|
||
two of them being optical fields, that is, for clamped ionic positions, and one of them being a static field,
|
||
for which the ionic positions are allowed to relax)
|
||
|
||
The various steps are combined into a single input file.
|
||
|
||
There are two implementations available in ABINIT for the computation of third-order derivatives which includes at least one electric field perturbation (so all tensors mentioned above).
|
||
First we will present the *PEAD* method, as described in [[cite:Veithen2005]],
|
||
then we will present the *full DFPT* method, as described in [[cite:Gonze2020]] and [[cite:Romero2020]].
|
||
In the latter case, the input file is slightly modified so the reader interested in *full DFPT* should read the *PEAD* part first.
|
||
Only the *full DFPT* implementation is available for PAW pseudopotentials.
|
||
|
||
**Responses to electric fields, atomic displacements, and strains (with PEAD)**
|
||
|
||
Let us examine the file *tnlo_2.abi*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_2.abi %}
|
||
|
||
Its purpose is to build databases for
|
||
second and third energy derivatives with respect to electric fields, atomic
|
||
displacements, and strains. You can edit it. It is made of 5 datasets. The first four data
|
||
sets are nearly the same as for a typical linear response calculation: (1)
|
||
a self-consistent calculation of the ground state in the irreducible Brillouin Zone;
|
||
(2) non self-consistent calculation of the ground state
|
||
to get the wavefunctions over the full Brillouin Zone; (3) Computation of the derivatives of the
|
||
wavefunctions with respect to k points, using DFPT; (4)
|
||
second derivatives of the energy and related first-order wavefunctions
|
||
with respect to electric field, atomic displacements, and strains; and
|
||
finally (5) the third derivative calculations. Some
|
||
specific features must however be explicitly specified in order to prepare for the
|
||
non-linear response step (dataset 5). First, it is mandatory to specify:
|
||
```
|
||
nbdbuf 0
|
||
nband 4 (= number of valence bands)
|
||
```
|
||
so that only filled bands are treated.
|
||
Also, in dataset 4, it is required to impose [[prtden]], and [[prepanl]]
|
||
```
|
||
prtden4 1
|
||
prepanl4 1
|
||
```
|
||
The purpose for [[prtden]] is to obtain the first order densities (in
|
||
addition to the first order wavefunctions). The purposes
|
||
of [[prepanl]] are (i) to constrain [[kptopt]] = 2 even in the
|
||
computation of phonons where ABINIT usually take advantages of symmetry
|
||
irrespective of kptopt and (ii) compute the electric field derivatives in the
|
||
3 directions of space, irrespective of the symmetry.
|
||
|
||
Note also that while the strain perturbation is not used in dataset 5, the information
|
||
it provides is necessary to obtain some of the relaxed ion properties that
|
||
will be examined later.
|
||
|
||
The input to dataset 5 trigger the various third-order derivatives to be
|
||
computed. This section includes the following:
|
||
```
|
||
getwfk5 2
|
||
get1den5 4
|
||
get1wf5 4
|
||
kptopt5 2
|
||
optdriver5 5
|
||
d3e_pert1_elfd5 1
|
||
d3e_pert1_phon5 1
|
||
d3e_pert1_atpol5 1 2
|
||
d3e_pert2_elfd5 1
|
||
d3e_pert3_elfd5 1
|
||
```
|
||
The first three lines retrieve the ground state and first-order densities and wavefunctions.
|
||
[[optdriver]] 5 triggers the 3rd-order energy calculation.
|
||
|
||
The `d3e` input
|
||
variables determine the 3 perturbations of the 3rd order derivatives, and their
|
||
directions. Notice that we compute three derivatives with respect to electric field:
|
||
[[d3e_pert1_elfd]], [[d3e_pert2_elfd]], and [[d3e_pert3_elfd]]. These will be combined
|
||
to give the necessary data for the nonlinear optical susceptibility. We also
|
||
include [[d3e_pert1_phon]], for both atoms in the unit cell (see [[d3e_pert1_atpol]], for which we stick to the default).
|
||
When combined
|
||
later with the electric field perturbations 2 and 3, this will yield the necessary
|
||
information for the Raman tensor. Finally, for all three perturbation classes, we compute
|
||
the perturbations in all three spatial directions
|
||
(see [[d3e_pert1_dir]], [[d3e_pert2_dir]] and [[d3e_pert3_dir]], for which we stick to the default).
|
||
|
||
If it was not done at the beginning of this tutorial, you can now make the
|
||
run. You can have a quick look to the output file to verify that everything is
|
||
OK. It contains the values of second and third energy derivatives. It has
|
||
however no immediate interest since the information is not presented in a very
|
||
convenient format. The relevant information is in fact also stored in the
|
||
database files (DDB) generated independently for second and third energy
|
||
derivatives at the end of run steps 4 and 5. Keep these databases, as they will be
|
||
used later for a global and convenient analysis of the results using ANADDB.
|
||
|
||
**Responses to electric fields, atomic displacements, and strains (with full DFPT)**
|
||
|
||
If not already done, the reader should read the part on the *PEAD* method.
|
||
|
||
Contrary to *PEAD*, with *full DFPT* the electric field is treated analytically,
|
||
the same way it is done for the computation of second-order derivatives of the energy (see [Response-Function 1](/tutorial/rf1)).
|
||
One needs first order wavefunctions derivatives with respect to k-points (dataset 3 of *tnlo_2.abi*).
|
||
to compute second order energy derivatives with an electric field perturbation (dataset 4 of *tnlo_2.abi*).
|
||
It turns out that third-order derivatives of the energy, in this context, needs *second* derivatives of wavefunctions with respect to electric fields and k-points.
|
||
To compute the latter one also needs *second* derivatives of wavefunctions with respect to k-points only, so in total we need two additional sets of wavefunctions derivatives.
|
||
|
||
Now you can compare the files *tnlo_2.abi* and *tnlo_6.abi*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_6.abi %}
|
||
|
||
The first four datasets are identical, so we produce ground state quantities, first-order WF derivatives and second derivatives of the energy exactly the same way.
|
||
Before computing the non-linear terms, there are two additional datasets to compute the needed second-order WF derivatives, see dataset 5 and 6.
|
||
They are very similar to dataset 3 (computation of d/dk WF derivatives), except for the keywords activating second-order WF derivatives computation ([[rf2_dkdk]] and [[rf2_dkde]])
|
||
and the reading of the needed files:
|
||
```
|
||
rf2_dkdk5 1
|
||
getddk5 3
|
||
prepanl5 1
|
||
```
|
||
and
|
||
```
|
||
rf2_dkde6 1
|
||
getddk6 3
|
||
getdkdk6 5
|
||
get1den6 4
|
||
getdelfd6 4
|
||
prepanl6 1
|
||
```
|
||
The use of [[prepanl]] here makes use of crystal symmetries to compute only directions that will be needed for non-linear terms.
|
||
The latter are computed in dataset 7. Compared to *tnlo_2.abi*, it contains three additional lines:
|
||
```
|
||
getddk7 3
|
||
getdkde7 6
|
||
usepead7 0
|
||
```
|
||
The first two arguments specify which files to read to get d/dk and d/dkde WF derivatives.
|
||
[[usepead]] is the keyword controlling which implementation to use, which has to be 0 to use *full DFPT*.
|
||
|
||
If not already done, you can now run the code with *tnlo_6.abi*.
|
||
Even with a very small cutoff of 2.8 Ha, the non-linear susceptibility tensor differs only by few percents comparing *PEAD* and *full DFPT*,
|
||
and the first-order change in the electronic dielectric susceptibility tensor differs by less than one percent.
|
||
These differences come from convergence effects which can be reduced increasing the cutoff energy and most importantly the number of k-points.
|
||
|
||
!!! note
|
||
With the same set of parameters, the *full DFPT* method takes obviously more CPU times than *PEAD*,
|
||
as we have to compute second-order WF derivatives.
|
||
However, it is expected that the *full DFPT* method converges faster with the number of k-points,
|
||
so one could actually save CPU time and memory using *full DFPT* to get a converged result.
|
||
|
||
|
||
As in the *PEAD* case, the code produced DDB files that can be used for the rest of this tutorial.
|
||
|
||
**Merge of the DDB.**
|
||
|
||
At this stage, using either the *PEAD* or *full DFPT* method, all the relevant energy derivatives have been obtained and are
|
||
stored in individual databases.
|
||
In the following we use the data produced with *PEAD*, but one can use *full DFPT* instead and compare.
|
||
|
||
The individual databases must be combined with the
|
||
[[help:mrgddb|MRGDDB]] merge
|
||
utility in order to get a complete database *tnlo_3.ddb.out*. Explicitly, you
|
||
should merge the files *tnlo_2o_DS4_DDB* and *tnlo_2o_DS5_DDB*.
|
||
An input file that can be piped into MRGDDB is provided as *tnlo_3.abi*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_3.abi %}
|
||
You
|
||
can use it to perform the merge via *\$ABI_HOME/src/98_main/mrgddb < tnlo_3.abi*.
|
||
|
||
**Analysis of the DDB.**
|
||
|
||
We are now ready for the analysis of the results using [[help:anaddb|ANADDB]]. You can copy
|
||
the files *\$ABI_TESTS/tutorespfn/Input/tnlo_4.abi* and
|
||
*\$ABI_TESTS/tutorespfn/Input/tnlo_4.files* to *Work_NLO*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_4.files tests/tutorespfn/Input/tnlo_4.abi %}
|
||
|
||
You already used
|
||
ANADDB previously. It is located in the same directory as *abinit* and *mrgddb*.
|
||
You might copy it, or make an alias. The present input is in
|
||
very similar to the one you have used for the analysis of dynamical
|
||
and dielectric responses except that some new flags need to be activated.
|
||
|
||
For the strain perturbation you need to specify [[anaddb:elaflag]], [[anaddb:piezoflag]], and [[anaddb:instrflag]]:
|
||
```
|
||
elaflag 3
|
||
piezoflag 3
|
||
instrflag 1
|
||
```
|
||
For the non-linear responses you need
|
||
```
|
||
nlflag 1
|
||
ramansr 1
|
||
alphon 1
|
||
prtmbm 1
|
||
```
|
||
[[anaddb:nlflag]]=1 activates the non-linear response.
|
||
|
||
[[anaddb:ramansr]] = 1 will impose the sum rule on the first-order change of the
|
||
electronic dielectric susceptibility under atomic displacement, hereafter
|
||
referred to as $\frac{d \chi}{d \tau}$. It is a condition of invariance of $\chi$ under
|
||
translation of the whole crystal, similar to the acoustic sum rules for
|
||
phonons at Gamma or the charge neutrality sum rule on the effective charge $Z^*$.
|
||
|
||
[[anaddb:prtmbm]]=1 will allow to get the mode by mode phonon contributions of
|
||
the ions to the electro-optic coefficients.
|
||
|
||
[[anaddb:alphon]]=1 will allow to get the previous mode by mode contribution
|
||
when aligning the eigenvectors with the cartesian axis of coordinates (in the
|
||
input, the principal axis should always be aligned with z for a convenient
|
||
analysis of the results).
|
||
|
||
Finally, the second list of phonon, specified with [[anaddb:nph2l]] and
|
||
[[anaddb:qph2l]], must also be explicitly considered to obtain the Raman
|
||
efficiencies of longitudinal modes (in a way similar to the computation of
|
||
frequencies of longitudinal mode frequencies at Gamma):
|
||
```
|
||
# Wave vector list no. 2
|
||
#***********************
|
||
nph2l 1
|
||
qph2l 1.0 0.0 0.0 0.0
|
||
```
|
||
You can now run the code `anaddb` as
|
||
*\$ABI_HOME/src/98_main/anaddb < tnlo_4.files*.
|
||
The results are in the file tnlo_4.abo.
|
||
Various interesting physical properties are now directly accessible in this
|
||
output in meaningful units. You can go through the file and
|
||
identify the results mentioned below. Note that the order in which they are
|
||
given below is not the same than the order in which they appear in the
|
||
tnlo_4.abo. You will have to jump between different sections of tnlo_4.abo to find them.
|
||
|
||
For comparison, we report in parenthesis (...) the values obtained with ecut =
|
||
5, and for nonlinear responses in brackets [...] the results from [[cite:Veithen2005]].
|
||
|
||
* Born effective charge of Al:
|
||
```
|
||
Z*_Al = 2.207969 (2.233928)
|
||
```
|
||
* Optical phonon frequencies at Gamma :
|
||
```
|
||
w_TO (cm^-1) = 463.2713 (417.4934)
|
||
w_LO (cm^-1) = 534.6882 (493.4411)
|
||
```
|
||
* Linear optical dielectric constant :
|
||
```
|
||
Electronic dielectric tensor = 6.12216718 (6.10643103)
|
||
```
|
||
* Static dielectric constant :
|
||
```
|
||
Relaxed ion dielectric tensor = 8.15521897 (8.53019279)
|
||
```
|
||
Some other quantities, such as the piezoelectric coefficients, are related to the
|
||
strain response, and are more extensively discussed in the tutorial on the strain perturbation.
|
||
|
||
* Proper piezoelectric coefficients :
|
||
```
|
||
clamped ion (C/m^2) = -0.58864089 (-0.58710170)
|
||
relaxed ion (C/m^2) = 0.26741085 ( 0.11459002)
|
||
```
|
||
Finally, different quantities are related to non-linear responses.
|
||
|
||
* Nonlinear optical susceptibility :
|
||
They are directly provided in the output in pm/V. As you can see the value
|
||
computed here at ecut = 2.8 is far from the well converged result.
|
||
```
|
||
d_36 (pm/V) = 8.934453 (10.174996) [21]
|
||
```
|
||
* Electro-optic coefficients:
|
||
As we asked for mode by mode decomposition the output provides individual
|
||
contributions. We report below a summary of the results. They concern the
|
||
clamped r_63 coefficient.
|
||
```
|
||
Electronic EO constant (pm/V): -0.953493194 (-1.091488899)
|
||
Full Ionic EO constant (pm/V): 0.536131045 ( 0.662692165)
|
||
Total EO constant (pm/V): -0.417362150 (-0.428796933)
|
||
```
|
||
|
||
* Raman properties
|
||
|
||
The code directly report the Raman susceptibilities $\alpha$ for both transverse (TO)
|
||
and longitudinal (LO) optic modes at Gamma:
|
||
```
|
||
alpha(TO) = 0.004315217 (0.004379774)
|
||
alpha(LO) = 0.006863765 (0.007243040)
|
||
```
|
||
|
||
The basic quantity to derive the Raman susceptibilities are the $\partial\chi/\partial\tau$ that
|
||
are also reported separately:
|
||
```
|
||
d chi_23/d tau_1 (Bohr^-1, Al) = -0.043617186 (-0.043054192)
|
||
```
|
||
|
||
In *cubic semiconductors* it is common to report the Raman polarizability of
|
||
optical phonon modes at Gamma by the following expression [[cite:Veithen2005]]:
|
||
$$
|
||
a = \Omega_0 \partial\chi/\partial\tau = \sqrt{\mu \Omega_0}\alpha
|
||
$$
|
||
where $\Omega_0$ is the primitive unit cell volume (reported as `ucvol` in for
|
||
example *tnlo_2.abo*),
|
||
$\mu$ the reduced mass of
|
||
the system, so here $1/\mu = 1/m_{Al} + 1/m_{P}$, and $\alpha$ the Raman susceptibility
|
||
tensor. The Raman polarizability $a$ has units of length$^2$. Using alpha(TO) and
|
||
alpha(LO) from above, along with $\mu$ and $\Omega_0$, all in atomic units, and then
|
||
converting length (Bohr) to Angstroms, we find:
|
||
```
|
||
a(TO) (Unit: Ang^2)= 3.1424 (3.2794) [4.30]
|
||
a(LO) (Unit: Ang^2)= 4.9983 (5.4234) [7.46]
|
||
```
|
||
## 3 Finite difference calculation of the Raman tensor
|
||
|
||
For comparison with the DFPT calculation, we can compute $\frac{d \chi}{d \tau}$ for the Al
|
||
nucleus from finite differences. In practice, this is achieved by computing
|
||
the linear optical susceptibility for 3 different positions of the Al nucleus.
|
||
This is done with the file *\$ABI_TESTS/tutorespfn/Input/tnlo_5.abi*.
|
||
|
||
{% dialog tests/tutorespfn/Input/tnlo_5.abi %}
|
||
|
||
This file
|
||
uses again the unrealistically low cutoff energy [[ecut]] of 2.8 Ha.
|
||
The calculation takes about 2 or 3 minutes on a standard desktop PC.
|
||
To run this calculation, copy
|
||
*\$ABI_TESTS/tutorespfn/Input/tnlo_5.abi* to your working directory and run
|
||
with `abinit`. If you have time,
|
||
modify the cutoff to [[ecut]] = 5 Ha, in order to obtain
|
||
more realistic results. This run will take about twice as along as the
|
||
2.8 Ha version.
|
||
|
||
The input file *tnlo_5.abi* contains 12 datasets, arranged in a double loop.
|
||
```
|
||
ndtset 12
|
||
udtset 3 4
|
||
```
|
||
Input variable [[ndtset]] indicates 12 total sets, as usual, while
|
||
the [[udtset]] variable indicates an outer loop of 3 sets, and for each
|
||
of these, an inner loop of four sets.
|
||
|
||
The outer loop is over three sets of atomic positions, set by [[xcart]].
|
||
The first is the equilibrium, and the second two have aluminum shifted by
|
||
+0.01 and -0.01 Bohr along x:
|
||
```
|
||
# tau = 0.0 equilibrium
|
||
xcart1? 2.5240575146E+00 2.5240575146E+00 2.5240575146E+00
|
||
0.0000000000E+00 0.0000000000E+00 0.0000000000E+00
|
||
|
||
# tau = 0.01: aluminum shifted along x by 0.01 Bohr
|
||
xcart2? 2.5240575146E+00 2.5240575146E+00 2.5240575146E+00
|
||
0.0100000000E+00 0.0000000000E+00 0.0000000000E+00
|
||
|
||
# tau = -0.01: aluminum shifted along x by -0.01 Bohr
|
||
xcart3? 2.5240575146E+00 2.5240575146E+00 2.5240575146E+00
|
||
-0.0100000000E+00 0.0000000000E+00 0.0000000000E+00
|
||
```
|
||
Then for each of three sets of positions, a standard four-set DFPT
|
||
calculation of the electric field response at clamped ion positions
|
||
is executed: (1) ground state wavefunctions in the irreducible Brillouin
|
||
zone; (2) ground state wavefunctions in the full Brillouin zone; (3)
|
||
response to change in k vectors; and (4) response to the electric field,
|
||
yielding the dielectric tensor.
|
||
|
||
After running the calculation, the following is available in the output
|
||
file *tnlo_5.abo*. Quoted here are the results at [[ecut]] of 2.8.
|
||
|
||
For tau = 0:
|
||
```
|
||
Dielectric tensor, in cartesian coordinates,
|
||
j1 j2 matrix element
|
||
dir pert dir pert real part imaginary part
|
||
|
||
1 4 1 4 6.1221671827 -0.0000000000
|
||
1 4 2 4 -0.0000000000 -0.0000000000
|
||
1 4 3 4 -0.0000000000 -0.0000000000
|
||
|
||
2 4 1 4 -0.0000000000 -0.0000000000
|
||
2 4 2 4 6.1221671827 -0.0000000000
|
||
2 4 3 4 -0.0000000000 -0.0000000000
|
||
|
||
3 4 1 4 -0.0000000000 -0.0000000000
|
||
3 4 2 4 -0.0000000000 -0.0000000000
|
||
3 4 3 4 6.1221671827 -0.0000000000
|
||
```
|
||
For tau = +0.01 :
|
||
```
|
||
Dielectric tensor, in cartesian coordinates,
|
||
j1 j2 matrix element
|
||
dir pert dir pert real part imaginary part
|
||
|
||
1 4 1 4 6.1223310904 -0.0000000000
|
||
1 4 2 4 -0.0000000000 -0.0000000000
|
||
1 4 3 4 -0.0000000000 -0.0000000000
|
||
|
||
2 4 1 4 -0.0000000000 -0.0000000000
|
||
2 4 2 4 6.1222249248 -0.0000000000
|
||
2 4 3 4 -0.0055063835 -0.0000000000
|
||
|
||
3 4 1 4 -0.0000000000 -0.0000000000
|
||
3 4 2 4 -0.0055063835 -0.0000000000
|
||
3 4 3 4 6.1222249248 -0.0000000000
|
||
```
|
||
For tau = -0.01 :
|
||
```
|
||
Dielectric tensor, in cartesian coordinates,
|
||
j1 j2 matrix element
|
||
dir pert dir pert real part imaginary part
|
||
|
||
1 4 1 4 6.1223310830 -0.0000000000
|
||
1 4 2 4 -0.0000000000 -0.0000000000
|
||
1 4 3 4 -0.0000000000 -0.0000000000
|
||
|
||
2 4 1 4 -0.0000000000 -0.0000000000
|
||
2 4 2 4 6.1222249159 -0.0000000000
|
||
2 4 3 4 0.0055063810 -0.0000000000
|
||
|
||
3 4 1 4 -0.0000000000 -0.0000000000
|
||
3 4 2 4 0.0055063810 -0.0000000000
|
||
3 4 3 4 6.1222249159 -0.0000000000
|
||
```
|
||
You can extract the value of dchi_23/dtau_1 for Al from the dielectric tensor
|
||
(hereafter called eps) above using the following finite-difference formula [unit of bohr^-1] :
|
||
```
|
||
dchi_23/dtau_1= (1/4 pi) (eps_23[tau=+0.01] - eps_23[tau=-0.01])/2*tau
|
||
= (1/4 pi) (-0.0055063835 - 0.0055063810)/(0.02)
|
||
= -0.0438184
|
||
```
|
||
This value is close to that obtained at [[ecut]]=2.8 from DFPT (-0.043617186).
|
||
When convergence is reached (beware, the k point convergence is extremely
|
||
slow, much slower than for other properties), both approaches yield the same result.
|
||
You might therefore ask which approach is the most convenient
|
||
and should be used in practice.
|
||
|
||
As a guide, we note that the finite-difference approach give results
|
||
very similar to the DFPT ones for a similar cutoff and k-point grid. It is
|
||
however more tedious because individual atomic displacement must be
|
||
successively considered (which becomes cumbersome for complex crystals)
|
||
and the results must then
|
||
be converted into appropriate units with risk of error of manipulations.
|
||
|
||
The DFPT approach is the most convenient and avoids considerable operator intervention.
|
||
Everything is reported together (not only $d\chi / d\tau$ but also the full Raman
|
||
polarizability tensors) and in appropriate units. It should therefore be
|
||
considered as the better choice.
|
||
|
||
## 4 Plotting the Raman Spectrum
|
||
|
||
The output of an ANADDB analysis, for example *tnlo_4.abo* as performed here, can be
|
||
used to plot a simulated Raman spectrum, including both peak positions and intensities,
|
||
which can be compared to experiment. Many details of the process are outlined in [[cite:Caracas2006]].
|
||
|
||
A post-processing script, written in Python, is available in the ABINIT package:
|
||
see *$ABI_HOME/scripts/post_processing/Raman_spec.py*. If you have not installed the whole ABINIT package, but only are using
|
||
compiled executables and the documentation on the web, you should make the extra effort of downloading the full package, as mentioned in the ABINIT install notes.
|
||
|
||
This program reads an input file
|
||
that sets the ANADDB file to read, the output file base name, and various processing
|
||
parameters. To continue, we suggest copying this script into your working directory, or making
|
||
a link to it.
|
||
|
||
Running *python Raman_spec.py --help* gives an outline of the input file format,
|
||
but don't be afraid to open and read the Raman_spec.py file itself for further details on the
|
||
file input.
|
||
As a start, here is a minimal input file to Raman_spec.py for the tnlo_4.abo run:
|
||
```
|
||
# filename from anaddb run that created raman tensors
|
||
filename tnlo_4.abo
|
||
|
||
# base name for Raman_spec.py output files
|
||
outname AlP.out
|
||
|
||
# temperature in Kelvin for spectrum (default is zero K)
|
||
temp 298.0
|
||
|
||
# number frequencies (default is 1000)
|
||
n_freq 400
|
||
|
||
# min and max frequencies
|
||
# (default is 0.95 and 1.05 of bands found; default unit is cm^-1, user can instead specify Ha or Hz)
|
||
min_freq 200.0
|
||
max_freq 800.0
|
||
|
||
# Lorentzian broadening to apply
|
||
# (default is zero; default unit is cm^-1, user can instead specify Ha or Hz)
|
||
spread 1.0
|
||
|
||
# calculation type: 1 is powder
|
||
calctype 1
|
||
```
|
||
You can copy this into an editor and save as for example *AlP.input*. Then execute
|
||
```
|
||
python Raman_spec.py AlP.input
|
||
```
|
||
Once complete, examine the various output files produced, which will all be named starting with AlP.out. They are all human readable
|
||
ASCII files and well-documented. For example, to visualize the powder spectrum of the TO mode
|
||
predicted by your ANADDB run, plot the first two
|
||
columns of AlP.out_spec, which give the frequencies and intensities of the powder-averaged Raman spectrum.
|
||
|
||
The resulting powder-average spectra, plotted here with Gnuplot, is shown below. For the cubic structure calculated here,
|
||
the resulting spectra contains a single Raman TO mode corresponding to an XY polarization.
|
||
|
||

|
||
|
||
Finally, if one includes a calculation of the frequency-dependent dielectric tensor during the ANADDB calculation
|
||
(see [[anaddb:dieflag]]),
|
||
this program extracts that dielectric tensor and prints it to its own file.
|