Home Examples Screenshots User manual Bluesky logo YouTube ☰
OghmaNano Multiphysics simulation platform for optoelectronic devices and photonic systems DOWNLOAD Quick Start guide

Perovskite Band Structure (8-band k·p) — Cubic CsPbX3, MAPbX3 and Mixed-Halide Alloys

1. Introduction

Calculated MAPbI3 perovskite electronic band structure using an eight-band k-p Hamiltonian
Calculated electronic band structure of MAPbI3 (MAPI) using the eight-band k·p Hamiltonian, showing the valence band and spin–orbit-split conduction bands.

Calculating the band structure and charge carrier mobility of metal halide perovskites is important for understanding their performance in solar cells, LEDs and lasers. Materials such as CsPbI3, CsPbBr3 and MAPbI3 (MA = methylammonium) have unusual electronic structures, illustrated in ??. Unlike conventional III–V semiconductors such as GaAs, their valence band is predominantly s-like and their conduction bands p-like. Strong spin–orbit coupling splits the conduction bands by approximately 1.4–1.5 eV, with the lowest split-off conduction band forming the fundamental band gap at the R point of the Brillouin zone in the cubic phase.

These electronic bands determine important properties including effective mass, carrier statistics, optical gain and mobility. Although first-principles density functional theory (DFT) can calculate the electronic structure, evaluating dense wavevector grids for transport calculations can be expensive. The eight-band k·p method provides an efficient alternative using a compact Hamiltonian parameterised against DFT. Here we use the model of Gawarecki et al., Physical Review Applied 22, 014058 (2024) (DOI; arXiv), which describes six cubic and pseudocubic lead halide perovskites.

This tutorial explains how to calculate the electronic band structure of CsPbCl3, CsPbBr3, CsPbI3, MAPbCl3, MAPbBr3, MAPbI3 and mixed-halide alloys using OghmaNano. Starting with the published k·p parameters, we calculate the band dispersion and then use the resulting electronic states to evaluate Fröhlich electron–phonon scattering, relaxation times and phonon-limited carrier mobility. We also examine carrier statistics and the Fermi level as a function of carrier density.

2. Making a New Simulation

To begin calculating the band structure and carrier mobility of a perovskite, click New simulation in the OghmaNano toolbar to open the simulation-type dialog (see ??). Double-click Bulk scattering to display the available eight-band k·p perovskite examples (see ??).

Examples are provided for CsPbCl3, CsPbBr3, CsPbI3, MAPbCl3, MAPbBr3, MAPbI3 and several mixed-halide alloys. Any of these can be used with this tutorial, but we will start with CsPbCl3. Double-click the corresponding 8-Band k·p Scattering example, choose a directory and save the new simulation.

OghmaNano new simulation dialog showing the Bulk scattering category
New simulation dialog. Double-click Bulk scattering.
List of eight-band k-p perovskite scattering examples for CsPbX3 and MAPbX3
Available 8-band k·p scattering examples. Select CsPbCl3 for this tutorial.
Main OghmaNano simulation window showing a single CsPbCl3 bulk material layer
Main OghmaNano window after creating the CsPbCl3 simulation.

Once saved, OghmaNano opens the main simulation window (see ??), showing a single CsPbCl3 active layer. As this is a bulk material calculation, the layer is simply used to define the material being studied; its physical thickness does not affect the calculated bulk band structure. The simulation is now ready for us to examine the material parameters and eight-band k·p model.

3. Exploring the Simulation and Material Parameters

Before running the band structure calculation, it is worth taking a moment to understand how the simulation is configured. Open the Layer editor (see ??). You will see a single 40 nm CsPbCl3 layer with the optical material set to Generic/n/2.0. This is simply a placeholder: because we are calculating the electronic properties of a bulk material, neither the layer thickness nor its optical constants are used in the band structure or mobility calculations. There is therefore no need to change anything in the Layer editor.

Instead, open Electrical parameters from the Device structure tab (see ??). You will notice that the usual material parameters, including mobility, band gap, effective density of states and permittivity, are greyed out and display See script for value. This is intentional. Rather than entering individual values through the graphical interface, this simulation uses a Lua material script to define its physical properties.

Click the Code editor tab to view the material script, CsPbCl3.lua (see ??). The beginning of the file contains information about the material, its crystal structure, parameter sources and unit conventions. The material properties are defined further down the file and can, where appropriate, depend on temperature or composition.

Scroll towards the bottom of the script (see ??). Here you will find the numerical parameters used to calculate the electronic band structure, including the band gap, spin–orbit splitting and several parameters that control the shape of the bands. Each value is accompanied by a literature reference, making it possible to trace the calculation back to the original research.

OghmaNano layer editor showing the single CsPbCl3 bulk material layer
Layer editor. The thickness and optical material are not important for this bulk calculation.
Electrical parameter editor showing greyed-out fields with See script for value
Electrical parameters. Values are supplied by the material script rather than the graphical editor.
Lua code editor showing the CsPbCl3 material file header and literature references
Code editor showing the header of CsPbCl3.lua and its parameter sources.
Band structure parameters in the CsPbCl3 material script showing gamma3 prime and its reference
Parameters used to calculate the band structure, found towards the end of the material script.

Understanding the Parameters Used to Calculate the Band Structure

The band structure calculation uses a set of material parameters taken from Gawarecki et al. (2024). These describe the energy and shape of the electronic bands close to the band gap. The values for all six supported perovskites are given in ??. The upper part of the table contains the parameters used directly in the calculation, while the lower part lists additional values derived from them.

Parameter CsPbCl3 CsPbBr3 CsPbI3 MAPbCl3 MAPbBr3 MAPbI3
Eg (eV) 2.7442.0731.416 3.0072.2771.549
Δc (eV) 1.4441.4761.494 1.5061.5081.500
δ (eV) 000 0.0450.0570.075
ζ (eV) 000 0.0160.0300.045
P∥ (eV·Å) 9.2338.9488.601 8.8788.6238.097
Pz (eV·Å) 9.2338.9488.601 9.8969.3029.058
γ′1 1.6432.1832.997 1.5812.1442.967
γ′2 0.1900.3940.683 0.1400.1900.286
γ′3 −0.691−1.081−1.169 −0.599−1.060−1.150
Numerical parameters used to construct the eight-band k·p Hamiltonian for cubic CsPbX3 and pseudo-cubic MAPbX3 perovskites. Numerical values taken from Table I of the freely accessible arXiv preprint by Gawarecki et al. (arXiv:2306.08643).

What Do the Parameters Mean?

The main parameters used in the band structure calculation are explained below. You do not need to change these values to follow the tutorial, but understanding what they represent will help when comparing different perovskite materials.

All these parameters are already included in the OghmaNano material files, so there is no need to enter them manually. When a different material is selected, its corresponding parameters are loaded automatically. In the next section, we will look at how to switch between perovskites and explore different material compositions.

4. Changing the Material Parameters

In these bulk band structure calculations, the material is defined entirely by its Lua material script. The simulation is effectively a zero-dimensional (0D) electrical calculation, meaning that the physical dimensions shown in the Layer editor are not used. Instead, all the material properties required to calculate the band structure, scattering and mobility are obtained directly from the script.

There are two ways to change the material parameters. You can edit the existing script directly, for example if you find alternative values in the scientific literature or want to investigate how changing a particular parameter affects the results. Alternatively, you can load a completely different perovskite from the OghmaNano materials database.

To import a new material, click the small arrow next to the Script button in the electrical parameter editor and select Import material script (see ??). This opens the materials library at materials/Perovskites/ (see ??). The library contains material definitions for CsPbCl3, CsPbBr3, CsPbI3, MAPbCl3, MAPbBr3, MAPbI3 and mixed-halide perovskites.

Electrical parameter editor showing the Script menu and Import material script option
Open the Script drop-down menu and select Import material script.
OghmaNano perovskite materials database showing available Lua material definitions
Perovskite materials database. Double-click a material file to import its parameters.

Double-clicking a material script imports its complete set of parameters into the current simulation. The imported script is copied into the simulation directory, where it can be viewed or modified using the Code editor. For example, importing CsPbBr3.lua replaces the original CsPbCl3 parameters with those for CsPbBr3. The new values will be used the next time the simulation is run.

If you edit any values manually, it is good practice to update the accompanying literature references so that the source of each parameter remains clear. Remember that, for these bulk calculations, changing the Lua script is what changes the material; there is no need to modify the Layer editor.

5. Running the Simulation and Calculating the Band Structure

We are now ready to calculate the electronic band structure of our perovskite. Click Run simulation in the main OghmaNano window. The Terminal tab displays the material parameters being used, followed by the progress of the band structure and scattering calculations (see ??). It is worth checking these values, particularly if you have changed the material script or selected a mixed-halide composition.

In this example, we are calculating the properties of CsPb(I0.5Br0.25Cl0.25)3. The parameters printed in the Terminal can be checked against the values in ?? using the linear interpolation method described in the previous section. For example, the spin–orbit splitting is calculated as:

\[ \Delta_c = 0.5(1.494) + 0.25(1.476) + 0.25(1.444) = 1.477\ \mathrm{eV}. \]

This is the value printed by the solver. The remaining band structure parameters are calculated in the same way, providing a useful check that the selected alloy composition has been loaded correctly.

OghmaNano terminal displaying perovskite band structure parameters and progress of the Frohlich scattering calculation
Terminal output showing the material parameters used in the calculation, followed by the progress of the Fröhlich scattering calculation.
OghmaNano output browser showing the calculated band structure, mobility and scattering results
Output tab showing the calculated band structure files, together with the mobility and scattering output directories.
Calculated band structure of mixed-halide CsPbI0.5Br0.25Cl0.25 perovskite showing valence and conduction band energies against wavevector
Calculated electronic band structure of CsPb(I0.5Br0.25Cl0.25)3. Red: valence band; cyan: lowest conduction band; upper curves: higher conduction bands. Wavevector is measured relative to the R point.

Once the simulation has finished, open the Output tab (see ??). OghmaNano saves the calculated results as CSV files, which can be plotted directly within the software or exported for further analysis. The individual electronic bands are saved in the bands directory, while three additional files provide convenient ways of viewing the results:

Double-click Ec_Ev.csv to display the calculated perovskite band structure, as shown in ??. This plot shows how the energy of the available electronic states changes with wavevector (k). In simple terms, it shows the shape of the electronic bands, from which important properties such as the band gap and effective masses can be determined.

To understand the results, first look at the centre of the plot, where k = 0 corresponds to the R point of the Brillouin zone. The top of the valence band is used as the energy reference and is therefore set to 0 eV. Reading upwards from the bottom of the graph, three main features can be identified:

An important feature of the band structure is the curvature of the bands. Bands that curve more strongly generally correspond to charge carriers with smaller effective masses, whereas flatter bands correspond to heavier carriers. This becomes particularly important when calculating charge carrier mobility, as the band structure determines how electrons and holes respond to an applied electric field.

Finally, it is worth remembering that this model describes the electronic structure close to the band gap, rather than across the entire Brillouin zone. The wavevector range shown here extends to approximately 109 m−1 (0.1 Å−1), comparable to the range over which Gawarecki et al. demonstrate good agreement with DFT calculations (their Fig. 3). Predictions much further from the R point should therefore be treated with caution.

6. Calculating the Band Structure of Mixed-Halide Perovskites

OghmaNano Electrical ribbon showing the Gradients and Strain button used to define mixed-halide perovskite compositions
The Electrical ribbon. Click Gradients/Strain to define the mixed-halide composition.

Mixed-halide perovskites offer a convenient way to tune the electronic properties of a material by changing the relative amounts of iodine, bromine and chlorine. For example, replacing some of the iodine in CsPbI3 with bromine generally increases the band gap, allowing the optical and electronic properties to be adjusted for different applications. In practice, experimental researchers often work with compositions that lie somewhere between the three pure halide compounds.

OghmaNano allows the band structure of arbitrary mixed-halide compositions to be estimated without requiring a separate set of published band structure parameters for every possible mixture. This is particularly useful when studying materials prepared in the laboratory: by entering the composition of a sample, you can calculate its predicted band structure, examine how the band gap changes with composition, and subsequently explore its scattering and charge carrier mobility. It also makes it possible to investigate how gradually replacing one halide with another affects the electronic properties of the material.

Two mixed-halide material scripts are provided: CsPb(I1−x−yBrxCly)3 and its methylammonium (MA) equivalent. Here, x is the bromide fraction, y is the chloride fraction, and the remaining 1 − x − y represents the iodide fraction. The fractions must satisfy x ≥ 0, y ≥ 0 and x + y ≤ 1, so that the total halide composition always adds up to 100%.

To calculate the properties of an alloy, first import the appropriate mixed-halide material script using the method described in the previous section. Next, open the Electrical ribbon and click Gradients/Strain (see ??). This opens the material composition editor (see ??), where the bromide and chloride fractions can be entered.

The editor allows the composition to be specified at the beginning (x0, y0, z0) and end (x1, y1, z1) of the layer. Since we are performing a bulk calculation, the composition should be uniform, so enter the same values at both ends. For example, setting x0 = x1 = 0.25 and y0 = y1 = 0.25 gives CsPb(I0.5Br0.25Cl0.25)3, containing 50% iodide, 25% bromide and 25% chloride. This is illustrated in ??. The z values are not used by these material scripts.

Mixed-halide perovskite composition editor with bromide and chloride fractions set to 0.25
Composition editor showing x = y = 0.25 for CsPb(I0.5Br0.25Cl0.25)3.
Mixed-halide perovskite material script showing the composition rules and parameter interpolation method
Header of the mixed-halide material script, showing the composition rules and method used to calculate the alloy parameters.
Lua material script showing linear interpolation of relative permittivity between the pure iodide bromide and chloride materials
Example of linear interpolation in the material script, showing how the relative permittivity is calculated.

To estimate the electronic properties of an alloy, OghmaNano uses linear interpolation between the parameters of the three pure compounds. These are the same published material parameters listed in ??. Rather than interpolating the finished band structure, the software first calculates a new set of material parameters for the chosen composition and then uses these to perform the band structure calculation.

For example, the band gap, spin–orbit splitting and parameters controlling the shape of the electronic bands are each calculated as a weighted average of the iodide, bromide and chloride values. The general expression is:

\[ p(x,y) = (1-x-y)\,p_{\mathrm{I}} + x\,p_{\mathrm{Br}} + y\,p_{\mathrm{Cl}}, \]

where p represents a particular material parameter, and pI, pBr and pCl are the corresponding values for the three pure compounds. For the example above, the calculation uses 50% of the iodide value, 25% of the bromide value and 25% of the chloride value.

As an example, using the band gaps from the parameter table, the estimated band gap of CsPb(I0.5Br0.25Cl0.25)3 becomes:

\[ E_g = 0.5(1.416) + 0.25(2.073) + 0.25(2.744) = 1.912\ \mathrm{eV}. \]

The same interpolation approach is applied to the other numerical properties in the material script, including the relative permittivity shown in ??. Where a property depends on temperature, its corresponding coefficients are interpolated. This makes it possible to generate a consistent set of parameters for any chosen mixed-halide composition and then use them to calculate the electronic band structure and subsequent transport properties.

Linear interpolation is a useful starting point for exploring material compositions, particularly when experimental data are limited. However, real mixed-halide perovskites do not always behave linearly. The band gap, for example, may exhibit band-gap bowing, where the measured value differs from that predicted by simple interpolation. The model also does not explicitly account for local alloy disorder and retains the crystal-phase assumptions of the original parameters. For quantitative comparisons with a particular laboratory sample, the calculated properties should therefore be checked against experimental measurements, with the Lua material script adjusted where necessary.

6. Calculating Charge Carrier Mobility and Scattering in Perovskites

Having calculated the electronic band structure, OghmaNano can now use these results to determine how easily electrons and holes move through the perovskite. This requires us to consider not only the shape of the electronic bands, but also how charge carriers interact with vibrations of the crystal lattice, known as phonons. These interactions scatter the carriers, limiting their mobility.

In lead halide perovskites, an important source of scattering is the interaction between charge carriers and longitudinal optical (LO) phonons, known as Fröhlich electron–phonon scattering. The strength of this interaction depends on the phonon energy and dielectric properties of the material. OghmaNano uses the calculated electronic bands, together with the phonon parameters defined in the Lua material script, to evaluate these scattering processes and estimate the resulting carrier mobility. A more detailed explanation of the underlying physics can be found in our guide to Fröhlich electron–phonon scattering.

The phonon parameters are obtained from separate literature sources cited in the material scripts; they are not part of the original Gawarecki et al. band structure parameter set. The mobilities calculated here are therefore Fröhlich-limited mobilities, describing charge transport when this scattering mechanism is considered.

Once the simulation has finished, open the Output tab (see ??). Alongside the band structure files discussed previously, you will find two important directories: scattering and mobility. These contain the calculated scattering rates, relaxation times, carrier statistics and mobility results.

Opening the scattering directory (see ??) reveals a series of CSV files describing Fröhlich scattering for the different electronic bands. Files containing frohlich_rate give the scattering rate, while those containing frohlich_tau provide the corresponding relaxation time. A larger scattering rate generally means that carriers undergo scattering more frequently, resulting in a shorter relaxation time.

Next, open the mobility directory (see ??). This contains the calculated electron and hole mobilities, effective scattering rates, relaxation times and Fermi levels as functions of carrier density. These files allow us to investigate how the transport properties change as more charge carriers are introduced into the material.

OghmaNano output tab showing the calculated band structure, scattering and mobility results
Simulation output showing the scattering and mobility directories.
OghmaNano scattering output directory containing Fröhlich scattering rates and relaxation times
The scattering directory contains the calculated Fröhlich scattering rates and relaxation times for the individual bands.
OghmaNano mobility output directory containing electron and hole mobility, scattering and Fermi level results
The mobility directory contains the calculated electron and hole transport properties as functions of carrier density.

To examine the results, double-click kp8_perovskite_electron_fermi_level.csv, kp8_perovskite_electron_mobility.csv and kp8_perovskite_hole_mobility.csv. The resulting plots are shown below for CsPb(I0.5Br0.25Cl0.25)3.

Calculated electron Fermi level as a function of carrier density for a mixed-halide perovskite
Calculated electron Fermi level as a function of carrier density.
Calculated Fröhlich-limited electron mobility versus carrier density for a mixed-halide perovskite
Calculated Fröhlich-limited electron mobility as a function of carrier density.
Calculated Fröhlich-limited hole mobility versus carrier density for a mixed-halide perovskite
Calculated Fröhlich-limited hole mobility as a function of carrier density.

The first plot (see ??) shows how the electron Fermi level changes with carrier density. The Fermi level describes how electrons are distributed among the available electronic states. As more electrons are introduced into the material, the lower-energy states become increasingly occupied and the Fermi level moves upwards. For this alloy, the lowest conduction band begins at approximately 1.91 eV. As the Fermi level approaches and enters this band, the distribution of electrons changes, which can also affect the calculated transport properties.

The remaining two plots show the corresponding electron and hole mobilities. Interestingly, mobility does not remain constant as the carrier density increases. In this example, the electron mobility initially decreases slightly, before increasing at higher densities (see ??). The calculated hole mobility increases over most of the same density range (see ??).

The calculated mobility can either increase or decrease with carrier density, depending on the material. This behaviour arises from two main factors:

For the mixed-halide perovskite considered here, the calculated electron mobility initially falls slightly before increasing, while the hole mobility increases over most of the plotted density range. Other perovskite compositions may show different trends because their band structures and scattering rates differ. These calculations therefore allow us to explore how changing the material composition affects charge carrier transport.

7. Scope and Limitations of the Model

The approach presented in this tutorial provides a physics-based calculation of the electronic band structure and charge carrier mobility of three-dimensional metal halide perovskites. Fröhlich electron–phonon scattering is widely recognised as a major intrinsic mechanism limiting charge carrier mobility in these materials, particularly at room temperature. Including this interaction therefore provides a physically meaningful way to investigate charge transport and compare different perovskite compositions.

The model combines the calculated electronic band structure with polar optical phonon scattering to determine energy-dependent scattering rates, relaxation times and carrier mobility. The main assumptions are:

By combining a detailed electronic band structure with one of the principal intrinsic scattering mechanisms in metal halide perovskites, OghmaNano provides a useful and computationally efficient approach to calculating phonon-limited mobility. It is particularly suited to exploring material trends, comparing halide compositions and understanding how changes in electronic structure influence charge transport.

8. Further Exploration

Now that you can calculate perovskite band structures, scattering rates and charge carrier mobility, try changing the material parameters to explore how different compositions influence the results. The following are three useful starting points:

These examples are intended as starting points. You can also edit individual parameters in the Lua material scripts to investigate materials reported in the literature or compositions prepared in your own laboratory.