2D_HOIP material model
1. Introduction
This page contains the OghmaNano material model for 2D_HOIP ((R-NH3)2(MA)n-1PbnI3n+1).
2D hybrid organic-inorganic perovskite (generic layered Ruddlesden-Popper family, e.g. (spacer)2(MA)n-1PbnX3n+1)
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 "2D_HOIP", enabled
end
function material.description()
local enabled = true
return "2D hybrid organic-inorganic perovskite (generic layered Ruddlesden-Popper family, e.g. (spacer)2(MA)n-1PbnX3n+1)", enabled
end
function material.formula()
local enabled = true
return "(R-NH3)2(MA)n-1PbnI3n+1", enabled
end
function material.Eg(state)
-- Units: eV
--
-- Reference:
-- L. Mao, C. C. Stoumpos, M. G. Kanatzidis, reviews of 2D halide
-- perovskites (e.g. J. Am. Chem. Soc. / Chem. Rev.).
--
-- GENERIC family entry. The gap depends strongly on the layer
-- number n, the halide, and the organic spacer: low-n iodides
-- (n=1, e.g. (PEA)2PbI4) have gaps ~2.2-2.4 eV, decreasing towards
-- the 3D value (~1.6 eV) as n increases. A representative low-n
-- value of 2.2 eV is used.
--
-- Note: 2D perovskites have large exciton binding energies
-- (~150-400 meV) from quantum + dielectric confinement, so
-- near-edge optics is strongly excitonic. EDIT THIS PER SYSTEM.
local enabled = true
local value = 2.2
return value, enabled
end
function material.Xi(state)
-- Electron affinity
-- Units: eV
--
-- Reference:
-- Photoemission literature on 2D halide perovskites.
--
-- Family-dependent; conduction-band minimum typically ~ -3.5 to
-- -4.0 eV vs vacuum. A representative 3.8 eV is used. Approximate;
-- adjust for the specific spacer/halide/n.
local enabled = true
local value = 3.8
return value, enabled
end
function material.Nc(state)
-- Effective conduction-band density of states
-- Units: m^-3
--
-- Note: quantum-confined and anisotropic; not well defined for a
-- generic 2D system. Order-of-magnitude placeholder.
local enabled = true
local T = state.T
local value = 1.0e24*(T/300.0)^1.5
return value, enabled
end
function material.Nv(state)
-- Effective valence-band density of states
-- Units: m^-3
--
-- Note: order-of-magnitude placeholder; see Nc note.
local enabled = true
local T = state.T
local value = 1.0e24*(T/300.0)^1.5
return value, enabled
end
function material.mu_e(state)
-- Low-field electron mobility (IN-PLANE)
-- Units: m^2 V^-1 s^-1
--
-- Reference:
-- Transport studies of 2D halide perovskites (e.g. J.-C. Blancon
-- et al. and reviews by Mao/Stoumpos/Kanatzidis).
--
-- 2D perovskites are STRONGLY ANISOTROPIC: transport is good
-- within the inorganic sheets (in-plane) and poor across the
-- insulating organic spacers (cross-plane). This value is the
-- IN-PLANE electron mobility, representative ~1 cm^2/V/s = 1e-4
-- m^2/V/s. See mue_z for the suppressed cross-plane value.
-- Approximate; strongly system-dependent.
local enabled = true
local value = 1.0e-4
return value, enabled
end
function material.mue_x(state)
-- In-plane (within inorganic sheets)
return material.mu_e(state)
end
function material.mue_y(state)
-- In-plane (within inorganic sheets)
return material.mu_e(state)
end
function material.mue_z(state)
-- Cross-plane (through organic spacer layers): STRONGLY
-- suppressed. Assumes z is the stacking / device-thickness
-- direction with layers parallel to the substrate. Taken here as
-- ~100x lower than in-plane; the true ratio varies widely with
-- spacer length. Approximate.
local v, en = material.mu_e(state)
return v*0.01, en
end
function material.mu_h(state)
-- Low-field hole mobility (IN-PLANE)
-- Units: m^2 V^-1 s^-1
--
-- In-plane hole mobility, representative ~1 cm^2/V/s = 1e-4
-- m^2/V/s (fairly ambipolar in-plane). See muh_z for the
-- suppressed cross-plane value. Approximate.
local enabled = true
local value = 1.0e-4
return value, enabled
end
function material.muh_x(state)
-- In-plane
return material.mu_h(state)
end
function material.muh_y(state)
-- In-plane
return material.mu_h(state)
end
function material.muh_z(state)
-- Cross-plane (through organic spacers): strongly suppressed,
-- taken as ~100x lower than in-plane. Approximate.
local v, en = material.mu_h(state)
return v*0.01, en
end
function material.epsilonr(state)
-- Relative static permittivity
-- Dimensionless
--
-- Note: 2D perovskites have an anisotropic, spatially modulated
-- permittivity - low-epsilon organic spacers (~2-3) alternating
-- with higher-epsilon inorganic sheets. This dielectric
-- confinement is a major cause of the large exciton binding. An
-- effective value ~6 is used; approximate and system-dependent.
local enabled = true
local value = 6.0
return value, enabled
end
function material.free_to_free_recombination(state)
-- Radiative (band-to-band) recombination coefficient
-- Units: m^3 s^-1
--
-- Note: 2D perovskites are strong (often excitonic) emitters;
-- band-to-band bimolecular treatment is only approximate. A
-- representative ~1e-16 m^3/s is used. 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
--
-- Note: not well constrained for the generic family.
-- Order-of-magnitude placeholder.
local enabled = true
local value = 1.0e-40
return value, enabled
end
function material.auger_Cp(state)
-- Hole Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Note: order-of-magnitude placeholder; see Cn note.
local enabled = true
local value = 1.0e-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
--
-- Quality-dependent placeholder. 2D perovskites are often prized
-- for lower non-radiative loss / better stability than 3D; set
-- from measurement.
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
--
-- Note: even lower than 3D halide perovskites, and anisotropic
-- (cross-plane strongly suppressed by the organic spacers),
-- ~0.1-0.5 W/m/K. A value of 0.3 W/m/K is used. Approximate.
local enabled = true
local value = 0.3
return value, enabled
end
function material.heat_capacity(state)
-- Specific heat capacity
-- Units: J kg^-1 K^-1
--
-- Note: higher than 3D perovskites owing to the larger organic
-- fraction; ~400 J/kg/K used as a representative placeholder.
-- Spacer-dependent. Approximate.
local enabled = true
local value = 400.0
return value, enabled
end
function material.density(state)
-- Mass density
-- Units: kg m^-3
--
-- Note: lower than 3D perovskites (bulky low-density organic
-- spacers); ~2.8 g/cm^3 used as a representative value.
-- Spacer-dependent. Approximate.
local enabled = true
local value = 2800.0
return value, enabled
end
function material.lattice_constant(state)
-- Cubic lattice constant
-- Units: m
--
-- DISABLED: 2D perovskites are LAYERED (quantum-well
-- superlattices), not cubic. There is no single cubic lattice
-- constant. The relevant length scales are the in-plane Pb-Pb
-- spacing (~6.3 A, set by the inorganic octahedra) and the
-- interlayer (d-)spacing (~1.3-2.5 nm, set by the organic spacer
-- and n). The in-plane value is returned only so the field is
-- finite.
local enabled = false
local value = 6.3e-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 (ip): %.6e m^2/V/s", material.mu_e(state)))
print(string.format("Electron mobility (z): %.6e m^2/V/s", material.mue_z(state)))
print(string.format("Hole mobility (ip): %.6e m^2/V/s", material.mu_h(state)))
print(string.format("Hole mobility (z): %.6e m^2/V/s", material.muh_z(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.
-- ============================================================================