CH3NH3PbI3 material model
1. Introduction
This page contains the OghmaNano material model for CH3NH3PbI3 (CH3NH3PbI3).
Methylammonium lead triiodide (MAPbI3), 3D hybrid perovskite absorber
The model is written in Lua and provides simulation-ready material parameterisations for use within OghmaNano. For documentation, licensing, references, and information about the scope and accuracy of these models, see the material scripting documentation.
2. Lua material model
-- See end of file for copyright, licensing and documentation links.
local material = {}
function material.name()
local enabled = true
return "CH3NH3PbI3", enabled
end
function material.description()
local enabled = true
return "Methylammonium lead triiodide (MAPbI3), 3D hybrid perovskite absorber", enabled
end
function material.formula()
local enabled = true
return "CH3NH3PbI3", enabled
end
function material.Eg(state)
-- Units: eV
--
-- Reference:
-- M. A. Green, A. Ho-Baillie, H. J. Snaith, "The emergence of
-- perovskite solar cells", Nat. Photonics 8, 506-514, 2014.
--
-- Direct gap ~1.60 eV at 300 K (reported 1.55-1.61 eV).
--
-- Note: MAPbI3 shows an ANOMALOUS POSITIVE temperature coefficient
-- (dEg/dT ~ +0.3 to +0.4 meV/K), opposite in sign to the usual
-- Varshni behaviour, driven by lattice expansion. The linear term
-- below is approximate and valid only within the room-temperature
-- tetragonal phase (below ~327 K); a structural transition to the
-- cubic phase occurs above that.
local enabled = true
local T = state.T
local value = 1.60 + 3.5e-4*(T - 300.0)
return value, enabled
end
function material.Xi(state)
-- Electron affinity
-- Units: eV
--
-- Reference:
-- Photoemission / device band-alignment literature for MAPbI3.
--
-- Conduction-band minimum ~ -3.9 eV vs vacuum (electron affinity
-- ~3.9 eV); with Eg ~1.6 eV this puts the valence band at ~ -5.5
-- eV. Reported values scatter by ~0.2 eV with composition and
-- measurement method. Approximate.
local enabled = true
local value = 3.9
return value, enabled
end
function material.Nc(state)
-- Effective conduction-band density of states
-- Units: m^-3
--
-- Reference:
-- From the light CB effective mass m_e* ~ 0.19 m0 (first-principles
-- and magneto-optical studies of MAPbI3):
-- Nc(300 K) ~ 2.0e18 cm^-3 = 2.0e24 m^-3. Approximate.
local enabled = true
local T = state.T
local value = 2.0e24*(T/300.0)^1.5
return value, enabled
end
function material.Nv(state)
-- Effective valence-band density of states
-- Units: m^-3
--
-- Reference:
-- From the VB effective mass m_h* ~ 0.25 m0:
-- Nv(300 K) ~ 3.0e18 cm^-3 = 3.0e24 m^-3. Approximate.
local enabled = true
local T = state.T
local value = 3.0e24*(T/300.0)^1.5
return value, enabled
end
function material.mu_e(state)
-- Low-field electron mobility
-- Units: m^2 V^-1 s^-1
--
-- Reference:
-- L. M. Herz, "Charge-Carrier Mobilities in Metal Halide
-- Perovskites", Annu. Rev. Phys. Chem. 67, 65-89, 2016.
--
-- Thin-film effective mobilities ~1-30 cm^2/V/s (single crystals
-- up to ~60-165). A representative 20 cm^2/V/s = 2e-3 m^2/V/s is
-- used. Transport is roughly phonon (Frohlich/LO) limited near RT,
-- so a (300/T)^1.5 form is applied (approximate). Tune to film.
local enabled = true
local T = state.T
local value = 2.0e-3*(300.0/T)^1.5
return value, enabled
end
function material.mue_x(state)
return material.mu_e(state)
end
function material.mue_y(state)
return material.mu_e(state)
end
function material.mue_z(state)
return material.mu_e(state)
end
function material.mu_h(state)
-- Low-field hole mobility
-- Units: m^2 V^-1 s^-1
--
-- Reference:
-- L. M. Herz, Annu. Rev. Phys. Chem. 67, 65, 2016.
--
-- MAPbI3 is fairly ambipolar; hole mobility is comparable to the
-- electron value. A representative 20 cm^2/V/s = 2e-3 m^2/V/s is
-- used, with the same (300/T)^1.5 phonon form. Approximate.
local enabled = true
local T = state.T
local value = 2.0e-3*(300.0/T)^1.5
return value, enabled
end
function material.muh_x(state)
return material.mu_h(state)
end
function material.muh_y(state)
return material.mu_h(state)
end
function material.muh_z(state)
return material.mu_h(state)
end
function material.epsilonr(state)
-- Relative static permittivity
-- Dimensionless
--
-- Reference:
-- Dielectric studies of MAPbI3 (e.g. discussed in T. M. Brenner et
-- al., Nat. Rev. Mater. 1, 15007, 2016).
--
-- STRONGLY frequency-dependent: high-frequency (electronic)
-- epsilon_inf ~6.5, while the low-frequency value including ionic
-- and MA-dipole contributions rises to ~25-70. For drift-diffusion
-- of slow carriers a low-frequency value ~25 is used; choose to
-- match the timescale of your simulation. Approximate.
local enabled = true
local value = 25.0
return value, enabled
end
function material.free_to_free_recombination(state)
-- Radiative (band-to-band) recombination coefficient
-- Units: m^3 s^-1
--
-- Reference:
-- L. M. Herz, Annu. Rev. Phys. Chem. 67, 65, 2016.
--
-- Bimolecular recombination coefficient ~1e-10 cm^3/s = 1e-16
-- m^3/s (reported ~0.6-1.5 x 10^-10 cm^3/s). MAPbI3 is a
-- direct-gap emitter, so this channel is real. Approximate.
local enabled = true
local value = 1.0e-16
return value, enabled
end
function material.auger_Cn(state)
-- Electron Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Reference:
-- L. M. Herz, Annu. Rev. Phys. Chem. 67, 65, 2016.
--
-- Auger coefficient ~1.5e-28 cm^6/s = 1.5e-40 m^6/s (relevant only
-- at high injection). Approximate.
local enabled = true
local value = 1.5e-40
return value, enabled
end
function material.auger_Cp(state)
-- Hole Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Reference:
-- L. M. Herz, Annu. Rev. Phys. Chem. 67, 65, 2016.
-- ~1.5e-28 cm^6/s = 1.5e-40 m^6/s. Approximate.
local enabled = true
local value = 1.5e-40
return value, enabled
end
function material.ss_srh_trap_energy(state)
-- SRH trap energy relative to the middle of the band gap.
-- Units: eV
--
-- Positive values are above mid-gap (towards the conduction band).
-- Negative values are below mid-gap (towards the valence band).
local enabled = true
local value = 0.0
return value, enabled
end
function material.ss_srh_Nt(state)
-- SRH trap density
-- Units: m^-3
--
-- Note: bulk trap densities in good MAPbI3 films are low
-- (~1e15-1e16 cm^-3 = 1e21-1e22 m^-3); interfaces dominate real
-- devices. Strongly quality-dependent; set from measured lifetime
-- or J-V fitting. Placeholder ~1e15 cm^-3.
local enabled = true
local value = 1.0e21
return value, enabled
end
function material.ss_srh_sigma_n(state)
-- Electron capture cross section
-- Units: m^2
local enabled = true
local value = 1.0e-19
return value, enabled
end
function material.ss_srh_sigma_p(state)
-- Hole capture cross section
-- Units: m^2
local enabled = true
local value = 1.0e-19
return value, enabled
end
function material.thermal_conductivity(state)
-- Thermal conductivity
-- Units: W m^-1 K^-1
--
-- Reference:
-- Ultralow lattice thermal conductivity of MAPbI3, ~0.3-0.5 W/m/K
-- ("phonon-glass" behaviour from strong anharmonicity and MA
-- disorder).
--
-- A value of 0.5 W/m/K is used. Approximate.
local enabled = true
local value = 0.5
return value, enabled
end
function material.heat_capacity(state)
-- Specific heat capacity
-- Units: J kg^-1 K^-1
--
-- Reference:
-- Calorimetry of MAPbI3, c_p(300 K) ~ 300 J/kg/K. Approximate.
local enabled = true
local value = 300.0
return value, enabled
end
function material.density(state)
-- Mass density
-- Units: kg m^-3
--
-- Reference:
-- C. C. Stoumpos, C. D. Malliakas, M. G. Kanatzidis, Inorg. Chem.
-- 52, 9019-9038, 2013. Tetragonal MAPbI3 rho ~ 4.16 g/cm^3.
local enabled = true
local value = 4160.0
return value, enabled
end
function material.lattice_constant(state)
-- Cubic lattice constant
-- Units: m
--
-- Reference:
-- C. C. Stoumpos, C. D. Malliakas, M. G. Kanatzidis, Inorg. Chem.
-- 52, 9019, 2013.
--
-- Value returned is the PSEUDOCUBIC lattice constant ~6.28 A,
-- the standard descriptor for perovskites. Note: at 300 K MAPbI3
-- is actually TETRAGONAL (I4cm/I4/mcm, a ~ 8.85 A, c ~ 12.64 A);
-- above ~327 K it becomes cubic (Pm-3m, a ~ 6.31 A). Treat the
-- pseudocubic value as approximate.
local enabled = true
local value = 6.28e-10
return value, enabled
end
function material.print()
local state = {
T = 300.0,
x = 0.0,
y = 0.0,
z = 0.0,
photon_density = 0.0,
}
print(string.format("Material: %s", material.name()))
print(string.format("Description: %s", material.description()))
print(string.format("Formula: %s", material.formula()))
print(string.format("Temperature: %.2f K", state.T))
print(string.format("Position: %.6e, %.6e, %.6e m", state.x, state.y, state.z))
print(string.format("Photon density: %.6e m^-3", state.photon_density))
print(string.format("Band gap: %.6f eV", material.Eg(state)))
print(string.format("Electron affinity: %.6f eV", material.Xi(state)))
print(string.format("Electron mobility: %.6e m^2/V/s", material.mu_e(state)))
print(string.format("Hole mobility: %.6e m^2/V/s", material.mu_h(state)))
print(string.format("Nc: %.6e m^-3", material.Nc(state)))
print(string.format("Nv: %.6e m^-3", material.Nv(state)))
print(string.format("Relative permittivity: %.6f", material.epsilonr(state)))
print(string.format("Radiative coeff.: %.6e m^3/s", material.free_to_free_recombination(state)))
print(string.format("Electron Auger coeff.: %.6e m^6/s", material.auger_Cn(state)))
print(string.format("Hole Auger coeff.: %.6e m^6/s", material.auger_Cp(state)))
print(string.format("SRH trap energy: %.6f eV", material.ss_srh_trap_energy(state)))
print(string.format("SRH trap density: %.6e m^-3", material.ss_srh_Nt(state)))
print(string.format("SRH sigma n: %.6e m^2", material.ss_srh_sigma_n(state)))
print(string.format("SRH sigma p: %.6e m^2", material.ss_srh_sigma_p(state)))
print(string.format("Thermal conductivity: %.6e W/m/K", material.thermal_conductivity(state)))
print(string.format("Heat capacity: %.6e J/kg/K", material.heat_capacity(state)))
print(string.format("Mass density: %.6e kg/m^3", material.density(state)))
end
return material
-- ============================================================================
-- Copyright (C) 2026 The OghmaNano Project
-- All rights reserved.
--
-- This file is part of the OghmaNano Materials Model Library.
--
-- Website:
-- https://www.oghma-nano.com
--
-- Documentation and accuracy statement:
-- https://www.oghma-nano.com/manual/material-scripts.html
--
-- These material models are provided to support scientific research and
-- semiconductor device simulation. If you find them useful, please cite
-- OghmaNano where appropriate. Please do not redistribute these files or
-- incorporate them into other software or databases without permission.
-- ============================================================================