# Polarization¶

Spontaneous polarization of ferroelectric BaTiO3

## 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) displaying giant electroresistance effects  .

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 theoretical concepts first.

## Modern theory of polarization¶

The theoretical understanding of FE materials is described by the so-called modern theory of polarization . 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

$\mathbf{P}_i = \frac{|e|}{\Omega}\sum_\nu Z^\nu_\mathrm{ion} \mathbf{r}^\nu,$

where $$Z^\nu_\mathrm{ion}$$ and $$\mathbf{r}^\nu$$ are the valence charge and position vector of atom $$\nu$$, $$\Omega$$ 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 

$\mathbf{P}_e = -\frac{2|e|i}{(2\pi)^3}\int_A d\mathbf{k}_\bot\sum_{n=1}^M\int_0^{G_\parallel}\langle u_{\mathbf{k},n}| \frac{\partial}{\partial k_\parallel}|u_{\mathbf{k},n}\rangle dk_\parallel,$

where the sum runs over occupied bands, and where $$k_\parallel$$ is parallel to the direction of polarization, and $$G_\parallel$$ is a reciprocal lattice vector in the same direction. The states $$|u_{\mathbf{k},n}\rangle$$ are the cell-periodic parts of the Bloch functions, $$\psi_{\mathbf{k},n}(\mathbf{r}) = u_{n,\mathbf{k}}(\mathbf{r})e^{i\mathbf{k}\cdot\mathbf{r}}$$. 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,

$\mathbf{P}_t = \mathbf{P}_i + \mathbf{P}_e.$

An important finding in Ref.  was that the polarization is a multivalued quantity, and in fact forms a lattice. The reason is that the electronic polarization $$\mathbf{P}_e$$ is determined by the Berry phase, which is only defined modulo $$2\pi$$. Likewise, the ionic contribution $$\mathbf{P}_i$$ would attain a different value if all ionic positions were displaced by a lattice constant in either direction.

The polarization is thus a periodic function, and the period is called the polarization quantum, $$\mathbf{P}_q^j=\frac{|e|\mathbf{R}^j}{\Omega}$$, where $$|e|$$ is the electronic charge, $$\mathbf{R}^j$$ is the lattice vector $$j$$, and $$\Omega$$ is the unit cell volume.

Given the multivalued nature of the polarization, it is perhaps not surprising that only differences in polarization, $$\Delta \mathbf{P}$$, 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

Note that the implementation does not work for metallic systems and orthogonal cells should be preferred when possible. Usage in 2D systems and with non-orthogonal unitcells should be done with thorough testing of the used settings and results.

## 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 coordinates 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 QuantumATK format below 

# Set up lattice
lattice = SimpleTetragonal(3.9945*Angstrom, 4.0335*Angstrom)

# Define elements
elements = [Barium, Titanium, Oxygen, Oxygen, Oxygen]

# Define coordinates
fractional_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 configuration
bulk_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 QuantumATK for the calculation, and it is recommended that you go through the Basic QuantumATK Tutorial to be familiar with the basic work flow.

Start up QuantumATK and create a new project for this tutorial. Use a new, empty directory. Select the text for the BaTiO3 structure in the python script above and drag it onto the Script Generator icon . The tool will interpret the script and open up with the imported geometry

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 QuantumATK main window.

Next do the following steps:

Now double-click the New Calculator block in the “Script” panel to open the calculator widget.

Set the k-point sampling to 5x5x5; the other default settings are fine.

The next step is to adjust the settings for the polarization analysis. Double-click the Polarization block.

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”. Send the script to the Job Manager and run the job. After a few minutes the calculation has finished and you can inspect the results.

### 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 “BaTiO3_lda.hdf5” on the LabFloor and clicking Show Text Representation...