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

Metal halide perovskites such as CsPbI3, CsPbBr3 and MAPbI3 (MA = methylammonium, CH3NH3) are direct-gap semiconductors used in solar cells, LEDs and, increasingly, lasers. Many device questions — effective masses, carrier statistics, optical gain, phonon-limited mobility — depend on the band structure close to the band gap. First-principles (DFT) calculations describe this well but are too expensive to evaluate on the dense k-grids needed for transport and gain. The k·p method solves this: a small Hamiltonian, parameterised against DFT, reproduces the bands near the gap at negligible cost.

Perovskite bands are inverted relative to familiar III–V semiconductors. In GaAs the conduction band is s-like and the valence band p-like; in lead halide perovskites the valence band is s-like and the conduction bands are p-like, with strong spin–orbit coupling splitting them. The lowest conduction band is the spin–orbit split-off band, and the heavy and light electron bands lie about 1.4–1.5 eV higher. In the cubic phase the direct gap sits at the R point of the Brillouin zone rather than at Γ.

This tutorial uses the eight-band k·p Hamiltonian and parameter set of K. Gawarecki, M. Wiśniewski, M. Polak, R. Kudrawiec and M. Gładysiewicz, “Eight-band k·p description and material gain for selected cubic and pseudocubic perovskites,” Phys. Rev. Applied 22, 014058 (2024), doi:10.1103/PhysRevApplied.22.014058 (open version: arXiv:2306.08643). In that work the k·p parameters for six perovskites were fitted to hybrid-functional (HSE06) DFT band structures including spin–orbit coupling. OghmaNano ships these parameters as ready-to-use material files, so you can compute bands, scattering rates and carrier statistics for any of the six materials — and for mixed-halide alloys between them — without writing any code.

2. Making a New Simulation

Click New simulation in the toolbar to open the simulation-type dialog (see ??). Double-click Bulk scattering. This opens a list of bulk perovskite demos, each labelled 8-Band k·p Scattering (see ??). Any of them can be used for this tutorial: the pure compounds (CsPbCl3, CsPbBr3, CsPbI3, MAPbCl3, MAPbBr3, MAPbI3) and several mixed-halide alloys. The screenshots below use CsPbCl3. Choose a location to save the simulation.

OghmaNano new simulation dialog showing available device categories including Bulk scattering
New simulation dialog. Double-click Bulk scattering.
Bulk scattering submenu listing eight-band k·p scattering demos for CsPbX3, MAPbX3 and mixed-halide perovskites
Perovskite 8-band k·p scattering demos. Any of these can be selected.

Once saved, the main window shows the device (see ??): a single CsPbCl3 (active) layer. Because this is a bulk calculation, the structure is simply a slab of material; the thickness does not enter the bulk band structure. Clicking Layer editor (see ??) shows a single 40 nm layer whose optical material is Generic/n/2.0. This is deliberate: the optical constants play no role in the k·p band, scattering or mobility calculations, so a generic placeholder is used.

Next open Electrical parameters from the Device structure tab (see ??). The usual fields (mobility, effective density of states, Eg, χ, εr) are greyed out and read See script for value. In this simulation every material property is supplied by a material script rather than typed into the form.

Main OghmaNano window showing a 3D view of a single CsPbCl3 active layer
Main window after loading the CsPbCl3 demo: a single bulk active layer.
Layer editor showing a single 40 nm CsPbCl3 layer with a generic optical material
Layer editor. The optical material is Generic/n/2.0 because optics does not enter the k·p calculation.
Electrical parameter editor with all fields greyed out reading See script for value
Electrical parameter editor. Fields read See script for value: properties come from the material script.

3. The material file and k·p parameters

Click the Code editor tab in the electrical parameter editor to see the script (see ??). For this demo it is CsPbCl3.lua, stored in the OghmaNano materials library under materials/Perovskites/. A material file is a Lua script: each property is a function (for example material.epsilonr(state)) that returns a value and an enabled flag. Because they are functions, properties may depend on temperature or on composition through the state argument.

The header of the file records the physical assumptions. The crystal phase is the cubic α-phase (space group Pm-3m, Oh point group), which is the phase the k·p model describes. Note the caveat stated in the file: cubic CsPbCl3 is only the equilibrium phase above ~320 K (and cubic CsPbBr3 and CsPbI3 only above ~403 K and ~589 K respectively). Gawarecki et al. nevertheless use the α-phase for all materials so that they can be compared on an equal footing, and the material files follow the same convention.

Code editor showing the header of the CsPbCl3.lua material file with phase and source information
Header of CsPbCl3.lua: crystal phase, parameter sources and unit conventions.
Code editor showing the perovskite_gamma3_prime function with value -0.691 and its literature reference
Further down the file: perovskite_gamma3_prime = −0.691, taken from Table I of Gawarecki et al.

Scroll towards the end of the file (see ??). Eight functions prefixed perovskite_, together with material.Eg_qw, carry the k·p parameters. Each function cites its source — Table I of Gawarecki et al. — so that every number in the simulation can be traced back to the literature. Ordinary device properties in the same file (permittivity, mobilities, recombination, thermal parameters) cite their own separate experimental sources.

The eight-band Hamiltonian in brief

The eight-band model keeps the eight states closest to the gap (including spin): two s-like valence states (Γ6v+), two conduction states of the split-off band (Γ6c−) and four heavy/light-electron conduction states (Γ8c−). The Hamiltonian is written in block form \[ H = \begin{pmatrix} H_{8c8c} & H_{8c6c} & H_{8c6v} \\ H_{6c8c} & H_{6c6c} & H_{6c6v} \\ H_{6v8c} & H_{6v6c} & H_{6v6v} \end{pmatrix}, \] where the diagonal blocks describe each band on its own and the off-diagonal blocks couple them (Eq. (1) of Gawarecki et al.). At the R point (k = 0), with the valence-band maximum as the energy zero, the band edges are \[ E_v = 0, \qquad E_{sc} = E_g, \qquad E_{hc,\,lc} = E_g + \Delta_c \pm \frac{\delta}{3}, \] so Eg is the gap to the lowest (split-off) conduction band and Δc is the spin–orbit splitting of the conduction band. Away from R, the bands curve because of two contributions: the interband coupling P (the momentum matrix element between the s-like valence band and the p-like conduction bands), and the primed Luttinger-like parameters γ′1, γ′2, γ′3, which account for more remote bands outside the eight-band basis. For the cubic CsPbX3 compounds symmetry forces δ = ζ = 0 and P∥ = Pz. For the pseudo-cubic MAPbX3 compounds the orientation of the MA cation lowers the symmetry to C4v; δ then splits the heavy and light electron bands and ζ produces a small Rashba spin splitting. The full Hamiltonian is given in Section IV and Appendix A of the paper.

Two conventions in the material file are worth noting, as they are common sources of error when parameters are copied between codes:

The published parameters are reproduced in ??. The rows above the line are the inputs to the eight-band Hamiltonian; the rows below it are derived quantities listed for reference.

Parameter CsPbCl3 CsPbBr3 CsPbI3 MAPbCl3 MAPbBr3 MAPbI3
aexp (Å)5.6055.8866.2945.6755.9016.329
aDFT (Å)5.6545.9146.2935.7355.9856.355
Eg (eV)2.7442.0731.4163.0072.2771.549
Δc (eV)1.4441.4761.4941.5061.5081.500
δ (eV)0000.0450.0570.075
ζ (eV)0000.0160.0300.045
P∥ (eV·Å)9.2338.9488.6018.8788.6238.097
Pz (eV·Å)9.2338.9488.6019.8969.3029.058
γ′11.6432.1832.9971.5812.1442.967
γ′20.1900.3940.6830.1400.1900.286
γ′3−0.691−1.081−1.169−0.599−1.060−1.150
mv (m0)0.1890.1580.1250.2100.1780.141
γ13.4244.1575.2213.2283.9545.001
γ21.0811.3811.7950.9631.0941.302
γ30.199−0.094−0.0570.225−0.155−0.134
Eight-band k·p parameters for cubic CsPbX3 and pseudo-cubic MAPbX3, reproduced from Table I of K. Gawarecki et al., Phys. Rev. Applied 22, 014058 (2024) (doi, arXiv). Experimental lattice constants are from the references cited therein. Rows below the line are derived (Eqs. (2) and (4) of the paper) and are not inputs to the model.

The derived valence-band mass is a useful sanity check on any parameter set. In the eight-band model it follows from the gap, the spin–orbit splitting and the interband coupling alone (Eq. (4) of the paper): \[ \frac{m_0}{m_v} = -1 + \frac{2m_0}{\hbar^2}\left[\frac{2P^2}{3(E_g+\Delta_c)} + \frac{P^2}{3E_g}\right]. \] For CsPbCl3, inserting Eg = 2.744 eV, Δc = 1.444 eV and P = 9.233 eV·Å gives mv ≈ 0.189 m0, matching the table. Light valence-band masses are one reason the iodides show the highest optical gain in the paper's comparison.

4. Swapping materials

To change the material, click the small arrow next to the Script button in the electrical parameter editor and choose Import material script (see ??). This opens the materials library at materials/Perovskites/ (see ??). Each .lua file is a complete material definition: CsPbCl3.lua, CsPbBr3.lua, CsPbI3.lua, the methylammonium compounds (for example CH3NH3PbCl3.lua) and the mixed-halide files CsPbI1-x-y_Brx_Cly3.lua and CH3NH3PbI1-x-y_Brx_Cly3.lua.

Script button drop-down menu in the electrical parameter editor showing Import material script
Script drop-down → Import material script.
Perovskites folder of the OghmaNano materials library listing Lua material scripts
Perovskite materials library. Each .lua file can be imported directly.

Double-clicking a script replaces the material definition of the layer, so every electrical and k·p property changes in one step. Because the script is then copied into your simulation, you are also free to edit it in the code editor — for instance to test the sensitivity of the results to a single parameter, or to enter a parameter set from a different paper. If you do, update the reference comments too, so the file stays traceable.

5. Mixed-halide alloys

Some of the material files describe mixed-halide alloys, CsPb(I1−x−yBrxCly)3 and its MA equivalent, rather than a single compound. Here x is the bromide fraction, y the chloride fraction, and the remainder 1 − x − y is iodide. The composition is set per layer in the Electrical ribbon by clicking Gradients/Strain (see ??), which opens the material gradient/strain editor (see ??).

Electrical ribbon in the OghmaNano main window with the Gradients/Strain button
The Electrical ribbon. Click Gradients/Strain to set alloy composition.
Material gradient editor with x and y fractions set to 0.25 for a CsPb(I0.5 Br0.25 Cl0.25)3 layer
Gradient editor for CsPb(I0.5Br0.25Cl0.25)3: x = y = 0.25 throughout the layer.

The table sets the fractions at the start (x0, y0, z0) and end (x1, y1, z1) of each layer, and the plot shows the resulting profile through the layer. For a bulk calculation you normally set start and end values equal, as in ??. Which fractions are meaningful, and what constraints apply, is defined by the material file itself; the rules are written in its header. For the mixed-halide files they are x ≥ 0, y ≥ 0 and x + y ≤ 1 (see ??). The z fraction is unused here.

Header of the CsPbI1-x-y_Brx_Cly3.lua material file describing composition rules and ternary linear interpolation
Header of the mixed-halide file: composition rules and the interpolation scheme.
The epsilonr function of the mixed-halide material file interpolating between three endpoint values
material.epsilonr interpolated between the three endpoint files using state.x and state.y.

Every numerical parameter in the alloy file is a ternary linear interpolation between the three endpoint files CsPbI3.lua, CsPbBr3.lua and CsPbCl3.lua: \[ p(x,y) = (1-x-y)\,p_{\mathrm{I}} + x\,p_{\mathrm{Br}} + y\,p_{\mathrm{Cl}}. \] Where an endpoint property has a temperature dependence, the functional form is kept and its coefficients are interpolated. ?? shows this for the relative permittivity: the composition is read from state.x and state.y and the three endpoint values are combined.

Linear interpolation is a first approximation. It ignores band-gap bowing and any local disorder in real alloys, and it inherits the cubic-phase assumption of the endpoints. It is well suited to exploring trends; for quantitative work on a specific composition, compare against measured band gaps and add a bowing term to Eg in the script if needed.

6. Running the simulation and the band structure

Click Run simulation. The Terminal tab (see ??) first prints the k·p parameters actually used — the band structure (delta_c = Δc, delta = δ, zeta = ζ), the Kane coupling (P_parallel, Pz), the remote-band parameters (gamma1_prime … gamma3_prime) and the polar optical phonon parameters — followed by the progress of the scattering calculation. Checking this block is the quickest way to confirm the material is set up as intended.

The screenshot shows the CsPb(I0.5Br0.25Cl0.25)3 alloy, and the values can be verified directly against ??. For example, Δc = 0.5×1.494 + 0.25×1.476 + 0.25×1.444 = 1.477 eV and P = 0.5×8.601 + 0.25×8.948 + 0.25×9.233 = 8.846 eV·Å, exactly as printed.

Terminal output listing the k·p band parameters, Kane coupling, remote-band parameters and phonon parameters, followed by Fröhlich scattering progress
Terminal output: the k·p and phonon parameters in use, then the progress of the 3D Fröhlich scattering calculation.
Output tab showing bands, mobility, optical_output and scattering directories and Ec.csv, Ec_Ev.csv, Ev.csv files
Output tab after the run: Ec_Ev.csv and the bands, scattering and mobility directories.

When the run finishes, open the Output tab (see ??). The individual bands are written to the bands directory; Ec.csv, Ev.csv and Ec_Ev.csv collect them together (conduction bands, valence bands, and both). Double-click Ec_Ev.csv to plot the band structure (see ??).

Band structure from Ec_Ev.csv showing energy versus k parallel for valence, split-off conduction and heavy/light electron bands
Band structure from Ec_Ev.csv for CsPb(I0.5Br0.25Cl0.25)3. k is measured from the R point. Red: valence band; cyan: split-off conduction band at Eg; upper pair: heavy and light electron bands at Eg + Δc.

The plot shows energy against wavevector measured from the R point, with the valence-band maximum at zero. Reading from the bottom:

The k range shown, up to 109 m−1 (0.1 Å−1), is roughly a fifth of the way from R to the zone boundary for a lattice constant of ~6 Å — comparable to the range over which Gawarecki et al. demonstrate close agreement between k·p and DFT (their Fig. 3). Much further from R, the eight-band model should not be relied upon.

7. Scattering, mobility and carrier statistics

With the bands known, OghmaNano evaluates polar optical phonon (Fröhlich) scattering. In ionic, soft lattices such as lead halide perovskites, coupling between carriers and longitudinal-optical (LO) phonons is the dominant intrinsic scattering mechanism at room temperature. Its strength is set by the LO phonon energy ℏωLO and by the difference between the high-frequency and static permittivities, both printed in the terminal (see ??). A convenient single measure is the dimensionless Fröhlich coupling constant \[ \alpha_F = \frac{e^2}{4\pi\varepsilon_0\hbar} \sqrt{\frac{m^*}{2\hbar\omega_{\mathrm{LO}}}} \left(\frac{1}{\varepsilon_\infty} - \frac{1}{\varepsilon_s}\right), \] which is large in perovskites because ℏωLO is small (here 18 meV) and ϵs is much larger than ϵ∞. The phonon parameters are not part of the Gawarecki et al. parameter set; they come from the separate sources cited in the material file. Scattering is outside the scope of that paper; it is OghmaNano using the k·p bands as the starting point for transport.

Scattering output directory listing kp8_perovskite_conduction_frohlich_rate and frohlich_tau CSV files
The scattering directory: Fröhlich scattering rates and relaxation times, indexed by band.
Electron Fermi level versus carrier density from kp8_perovskite_electron_fermi_level.csv
Electron Fermi level versus carrier density, from kp8_perovskite_electron_fermi_level.csv.

Open the scattering directory (see ??). Files named kp8_perovskite_conduction_frohlich_rate_NN.csv give the scattering rate as a function of energy, and kp8_perovskite_conduction_frohlich_tau_NN.csv the corresponding relaxation time τ = 1/rate. The index NN runs from 00 to 05, matching the six conduction states of the eight-band model (four from the heavy/light electron bands and two from the split-off band). The mobility directory contains the carrier mobilities obtained from these scattering times together with the band curvature; in the simplest picture \(\mu = e\langle\tau\rangle/m^*\), so light masses and weak scattering both raise mobility.

The k·p bands also fix the carrier statistics. ?? shows the electron Fermi level as a function of electron density, obtained by filling the calculated conduction bands. At low density it rises logarithmically, as expected for a non-degenerate semiconductor. Once it passes the conduction-band edge (≈1.91 eV for this alloy), at a density of order 1024 m−3 (1018 cm−3), the electron gas becomes degenerate and the Fermi level moves into the band. This is the same density range in which Gawarecki et al. find positive optical gain appearing in these materials (their Figs. 5–7), since gain requires the electron and hole quasi-Fermi levels to separate by more than the gap.