spontaneous polarization of ferroelectric...
TRANSCRIPT
Spontaneous polarization of ferroelectric
BaTiO3
Tutorial on how to use ATK for polarization calcu-
lations
Version 2015.2
Spontaneous polarization of ferroelectric BaTiO3: Tutorial on how to use
ATK for polarization calculations
Version 2015.2
Copyright © 2008–2015 QuantumWise A/S
Atomistix ToolKit Copyright Notice
All rights reserved.
This publication may be freely redistributed in its full, unmodified form. No part of this publication may be incorporated or used in other publications
without prior written permission from the publisher.
TABLE OF CONTENTS
1. Introduction ............................................................................................................ 1
Modern theory of polarization .............................................................................. 1
2. Spontaneous polarization of ferroelectric BaTiO3 ....................................................... 3
The BaTiO3 crystal structure ................................................................................. 3
Setting up the calculation ..................................................................................... 3
Performing the calculation .................................................................................... 5
Analyzing the results ............................................................................................ 6
3. Born effective charges .............................................................................................. 8
Theory and definition ........................................................................................... 8
Calculation script ................................................................................................ 8
Running the calculation ..................................................................................... 10
Bibliography ............................................................................................................. 12
Index ........................................................................................................................ 13
iii
CHAPTER 1. INTRODUCTION
Ferroelectric (FE) materials have a spontaneous electric polarization that can be reversed by the
application of an external electric field. FE materials find applications in capacitors, ferroelectric
random access memory (RAM), and more recently in ferroelectric tunnel junction (FTJ) display-
ing giant electroresistance effects [4], [5].
One of the most studied FE materials is barium titanate (BaTiO3), which is the topic for this
tutorial. Before continuing with the calculations, let us briefly summarize some central theo-
retical concepts first.
MODERN THEORY OF POLARIZATION
The theoretical understanding of FE materials is described by the so-called modern theory of
polarization [1]. It is common to divide the polarization of a material into electronic and ionic
parts. The latter is calculated using a simple classical electrostatic sum of point charges
where and are the valence charge and position vector of atom , is the unit cell
volume, and the sum runs over all ions in the unit cell.
The electronic contribution to the polarization is obtained as [1]
where the sum runs over occupied bands, and where is parallel to the direction of polariza-
tion, and is a reciprocal lattice vector in the same direction. The states are the cell-
periodic parts of the Bloch functions, . The last integral is known as the
Berry phase. The integral over the perpendicular directions can easily be converged with a few
number of k-points. The number of k-points in the parallel direction should be larger, however.
The total polarization is simply the sum of the electronic and ionic contributions,
An important finding in Ref. [1] was that the polarization is a multivalued quantity, and in fact
forms a lattice. The reason is that the electronic polarization is determined by the Berry
phase, which is only defined modulo . Likewise, the ionic contribution would attain a
different value if all ionic positions were displaced by a lattice constant in either direction.
1
The polarization is thus a periodic function, and the period is called the polarization quantum,
, where is the electronic charge, is the lattice vector , and is the unit cell
volume.
Given the multivalued nature of the polarization, it is perhaps not surprising that only differen-
ces in polarization, , between two different structures is a well-defined property.
ATK computes and reports the electronic and ionic contributions separately, and also reports
the polarization quantum.
Important
In the current implementation of polarization in ATK, the unit cell must be orthogonal
(simple cubic, tetragonal, or orthorhombic). There is no explicit check for this in the
code, but the results cannot be expected to be correct if a non-orthogonal cell is used.
2
CHAPTER 2. SPONTANEOUS POLARIZATION OF
FERROELECTRIC BATIO3
THE BATIO3 CRYSTAL STRUCTURE
Barium titanate (BaTiO3) has a tetragonal crystal structure at room temperature, where the unit
cell is slightly elongated in the c-direction. An internal stress further shifts the fractional coor-
dinates in the c-direction away from their high symmetry positions. In this tutorial we use the
experimental lattice constants and coordinates as obtained from the Inorganic Crystal Structure
Database (ICSD). The structure is given in the ATK format below [2]
# Set up latticelattice = SimpleTetragonal(3.9945*Angstrom, 4.0335*Angstrom)
# Define elementselements = [Barium, Titanium, Oxygen, Oxygen, Oxygen]
# Define coordinatesfractional_coordinates = [[ 0. , 0. , 0. ], [ 0.5 , 0.5 , 0.51427 ], [ 0.5 , 0.5 , 0.974477], [ 0.5 , 0. , 0.487618], [ 0. , 0.5 , 0.487618]]
# Set up configurationbulk_configuration = BulkConfiguration( bravais_lattice=lattice, elements=elements, fractional_coordinates=fractional_coordinates )
SETTING UP THE CALCULATION
You will in this section set up a DFT calculation using the local density approximation (LDA)
for the BaTiO3 crystal and calculate the polarization. You will use VNL for the calculation, and
it is recommended that you go through the VNL tutorial to be familiar with the basic work flow.
Start up VNL and create a new project for this tutorial. Use a new, empty directory. Select the
text in the BaTiO3.py script above and drag it onto the Script Generator . The tool will
interpret the script and open up with the imported geometry
3
Tip
Alternatively you can save the script to a file in the project directory and drag and drop
the file to the Script Generator from the VNL main window.
Next do the following steps:
• Change the Default output file to BaTiO3_lda.nc.
• double-click New Calculator.
• double-click Analysis and select Polarization.
ADJUSTING THE SCRIPT COMPONENTS
Now double-click the “New Calculator” block in the “Script” panel to open the calculator
widget.
Select a 5x5x5 k-point sampling; the other default settings are fine.
4
The next step is to adjust the settings for the polarization analysis. Double-click the “Polariza-
tion” block in the “Script” panel.
Increase the number of k-points on the diagonal to 20. This is the number of k-points along the
lines of integration and needs to be relatively high. You should always check for convergence
by comparing calculations with different numbers of k-points. The other k-points with values
of 5 correspond to the number of transverse k-points used for averaging over the Brillouin zone.
The polarization values converge relatively fast with respect to the number of transverse k-points
and we thus use the default value.
You have now finished the script setup. Save the script as BaTiO3_lda.py .
PERFORMING THE CALCULATION
To start the calculation, left-click the icon located in the lower-right of the script Generator
tool and select Job Manager from the pop-up menu.
The Job Manager will now pop up; press "Run Queue" to run the script. You should see a log
window pop up with the output of the calculation. After a few minutes the calculation has
finished and you can inspect the results.
5
ANALYZING THE RESULTS
To inspect the calculated polarization reported in the log file, scroll down to the end of the log
file and you will find a report as shown below.
+------------------------------------------------------------------------------+ | Polarization | +------------------------------------------------------------------------------+ | Electronic fractional polarization. | | Values wrapped to the interval [-0.5,0.5] | | [ -1.25164671e-15 ] | | Pe= [ -6.42868666e-16 ] | | [ -4.71901310e-01 ] | +------------------------------------------------------------------------------+ | Ionic fractional polarization. | | Values wrapped to the interval [-0.5,0.5] | | [ 0.00000000e+00 ] | | Pi= [ 0.00000000e+00 ] | | [ -2.44642000e-01 ] | +------------------------------------------------------------------------------+ | Total fractional polarization. Pt = Pe + Pi. | | Values wrapped to the interval [-0.5,0.5] | | [ -1.25164671e-15 ] | | Pt= [ -6.42868666e-16 ] | | [ 2.83456690e-01 ] | +------------------------------------------------------------------------------+ | Total cartesian polarization. | | [ -1.24465114e-15 ] | | Pt= [ -6.39275613e-16 ] C/Meter**2 | | [ 2.84624464e-01 ] | +------------------------------------------------------------------------------+ | Polarization quantum. | | [ 9.94410906e-01 ] | | Pq= [ 9.94410906e-01 ] C/Meter**2 | | [ 1.00411976e+00 ] | +------------------------------------------------------------------------------+
Tip
The results can also be inspected by selecting the polarization object in the file Ba-
TiO3_lda.nc on the VNL LabFloor and clicking “Show Text Representation...”
6
NOTES
The output contains five calculated quantities:
• First, the electronic fractional polarization is calculated from the Berry phase obtained
from the occupied bands, as described in Modern theory of polarization. The three values
correspond to the x, y, and z directions.
• The second quantity is the purely ionic fractional polarization , where
and are the valence charge and fractional coordinate of of atom .
• The third quantity, , is the total fractional polarization, which is the sum of the electronic
and ionic parts. As discussed in the section called “Modern theory of polarization”, the po-
larization is a multivalued quantity, and therefore all fractional polarizations are wrapped to
the interval [-0.5,0.5], which explains the sign change of the polarization in the z-direction.
The sum is outside the range and is thus wrapped by adding a
fractional quantization quantum (equal to 1), i.e. .
• The fourth quantity is the total polarization in Cartesian coordinates, expressed in units of
C/m2.
• The fifth quantity is the polarization quantum introduced in the section called “Modern
theory of polarization”. It is relevant that is small compared to .
According to the modern theory of polarization [1], only the difference in polarization between
two configurations is a well-defined property. In order to calculate the spontaneous polarization
of tetragonal BaTiO3, it is thus necessary to also compute the polarization of the centrosym-
metric, undistorted structure given below:
# Set up latticelattice = SimpleTetragonal(3.9945*Angstrom, 4.0335*Angstrom)
# Define elementselements = [Barium, Titanium, Oxygen, Oxygen, Oxygen]
# Define coordinatesfractional_coordinates = [[ 0.0 , 0. , 0. ], [ 0.5 , 0.5 , 0.5 ], [ 0.5 , 0.5 , 1.0 ], [ 0.5 , 0. , 0.5 ], [ 0.0 , 0.5 , 0.5 ]]
# Set up configurationbulk_configuration = BulkConfiguration( bravais_lattice=lattice, elements=elements, fractional_coordinates=fractional_coordinates )
You may repeat the above steps to calculate the polarization for this structure. The results are
that all polarization components are zero. The spontaneous polarization of tetragonal BaTiO3,
thus corresponds to the values reported above for the distorted structure.
The calculated value for the total Cartesian polarization in the z-direction C/
m2 compares very well with the experimental value 0.26 C/m2 [3].
7
CHAPTER 3. BORN EFFECTIVE CHARGES
THEORY AND DEFINITION
The concept of Born effective charges, denoted , is defined as the change in polarization
divided by the amount an ion (or rather the periodic sublattice of equivalent ions) is displaced:
where is the unit cell volume, is the total (Cartesian) polarization in direction , and is
the coordinate of ion in direction . The Born effective charge is a tensor. When an ion is
displaced in direction it clearly affects the polarization in direction , but it may also lead to
a change in polarization in a perpendicular direction .
In the calculations below the derivative will be approximated using finite differences, such that
e.g.
where is the polarization along the -direction when atom has been displaced
by the amount in the positive/negative -direction.
The Born effective charges are useful for analyzing spontaneous polarization results, and are
central to the LO-TO optical phonon splitting in polar crystals. Sometimes the Born effective
charge is referred to as the effective charge or dynamical charge.
CALCULATION SCRIPT
Below is a Python script for calculating the Born effective charges for BaTiO3. Read through
the script and try to understand it.
# Read saved configurationconfiguration0 = nlread('BaTiO3_lda.nc', object_id='gID000')[0]
# Get the fractional coordinates of read configurationR0 = configuration0.fractionalCoordinates()
# Get the elementselements = configuration0.elements()
# Get the latticelattice = configuration0.bravaisLattice()
8
# From the lattice extract unit cell volume and length of lattice vector in z-directionvolume = lattice.unitCellVolume()
vectors = lattice.primitiveVectors()c = vectors[2][2]
# Get the calculatorcalculator = configuration0.calculator()
# Number of atomsnumberOfAtoms = len(R0)
# Fractional displacement in the +/- z directiondelta_z = 0.01
# Array for storing the calculated Born ChargesbornCharges = numpy.zeros(numberOfAtoms)
# Loop over atoms in unit cellfor nAtom in range(numberOfAtoms): # Loop over displacement in positive/negative z-direction # List with polarization values Pz = [] for s in [1,-1]: # Make a copy of the initial coordinates R = R0.copy() # Displace z-coordinate if atom 'nAtom' R[nAtom,2] += s*delta_z # Make a new configuration with the displaced atom configuration = BulkConfiguration(bravais_lattice=lattice, elements=elements, fractional_coordinates=R) # Set the calculator using the saved configuration as initial state configuration.setCalculator(calculator,initial_state=configuration0) # Update the configuration (DFT calculation) configuration.update() # Calculate polarization. Only use fine k-sampling in the z-direction polarization = Polarization(configuration=configuration, kpoints_a=MonkhorstPackGrid(2,2,2), kpoints_b=MonkhorstPackGrid(2,2,2), kpoints_c=MonkhorstPackGrid(5,5,20), ) # Print polarization nlprint(polarization) # Get the total cartesian polarization Pt = polarization.totalCartesianPolarization() # Append the z-component to the Pz list Pz.append(Pt[2]) # Make a finite difference approximation for the derivative dP = (Pz[0]-Pz[1])/(2*delta_z*c) # Calculate Born charge born_charge = volume*dP # Add the value (in units of electron charge) to the list 'bornCharges' bornCharges[nAtom] = born_charge.inUnitsOf(elementary_charge)
9
# Finally print out the resultsprint ''print '+------------------------------+'print '| Born effective charges (e) |'print '+------------------------------+'
for nAtom in range(numberOfAtoms): print ' %2s' %elements[nAtom].symbol() + ' : %4.4f ' %bornCharges[nAtom]
print '+------------------------------+'print ' Sum : %4.4f ' %numpy.sum(bornCharges)print '+------------------------------+'
• The script starts with reading the results from the previous calculation. This will serve as a
good starting guess for the DFT calculations to be performed later in the script (where the
atoms are displaced).
• Extract the fractional coordinates, the list of elements, the lattice, and the calculator from the
configuration, and define a few convenient variables such as the unit cell volume and the
length of the C lattice vector.
• The parameter delta_z is the fractional displacement when calculating the derivatives.
• There are two for loops in the script. The outer one loops over the atoms in the unit cell, and
the inner one (over the variable s) performs the displacements in the positive and negative z-
direction.
• Notice that when the calculator is attached to the configuration
configuration.setCalculator(calculator,initial_state=configuration0)
we use the calculation from the previous chapter as an initial guess. This speeds up the cal-
culations (also see the tutorial Initializing a calculation from another one.)
• In the end, the results are printed out.
RUNNING THE CALCULATION
Download the BaTiO3_born_charge.py script above and save it in the tutorial project folder.
To start the calculation, drag the script to the Job Manager and run it.
You should see the log window pop up with the output of the calculation. The calculation will
approximately take 10 times longer than the single polarization calculation in the previous
chapter.
When the job is finished, the calculated Born effective charges are written in the log file.
+------------------------------+ | Born effective charges (e) | +------------------------------+ Ba : 2.4334 Ti : 5.9442 O : -4.8053 O : -1.7822 O : -1.7822 +------------------------------+
10
Sum : 0.0080 +------------------------------+
NOTES
• The obtained valued compare well with previous calculations
[6] as well as experimental values
[7].
• As indicated by the calculated sum of the Born effective charges, the calculated values fulfill
the acoustic sum rule with only a small error.
• You can easily use the same script to calculate the Born effective charges for other structures,
by simply changing the filename on the first line.
11
BIBLIOGRAPHY
[1] R. D. King-Smith, and D. Vanderbilt, Phys. Rev. B, 47, 1651, 1993
[2] H. D. Megaw, Acta Crystallographica, 15, 972, 1962
[3] H. H. Wieder, Phys. Rev. , 99, 1161, 1955
[4] A. Chanthbouala, A. Crassous, V. Garcia, K. Bouzehouane, S. Fusil , X. Moya , J. Allibe , B. Dlu-
bak, J. Grollier , S. Xavier , C. Deranlot , A. Moshar , R. Proksch , N. D. Mathur , M. Bibes,and
A. Barthélémy, Nature Nanotechnology, 7, 101, 2012
[5] X. Lou, Y. Zheng, and B. Wang, J. Appl. Phys., 111, 074102, 2012
[6] P. Ghosez, J. P. Michenaud, and X. Gonze, Phys. Rev. B, 58, 6224, 1998
[7] J. D. Axe, Phys. Rev., 157, 429, 1967
12
INDEX
13