PMMA material model
1. Introduction
This page contains the OghmaNano material model for PMMA ((C5H8O2)n).
Poly(methyl methacrylate), amorphous insulating dielectric polymer
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 = {}
-- ============================================================================
-- IMPORTANT MODELLING NOTE
-- ----------------------------------------------------------------------------
-- PMMA is an amorphous INSULATING dielectric polymer, not a semiconductor.
-- It is used as a gate/interlayer dielectric, encapsulant/spacer, or a
-- transparent optical layer (refractive index n ~ 1.49, handled in the
-- optical n/k database rather than here).
--
-- The semiconductor-specific quantities (free-carrier DOS, mobility,
-- recombination, Auger, SRH traps, band tails) are not physical for an
-- insulator, so they are DISABLED here by returning enabled = false. The
-- format is preserved (every function is still present) so the interface is
-- unchanged; only the meaningful parameters are active:
-- Eg, Xi, epsilonr, thermal_conductivity, heat_capacity, density.
-- ============================================================================
function material.name()
local enabled = true
return "PMMA", enabled
end
function material.description()
local enabled = true
return "Poly(methyl methacrylate), amorphous insulating dielectric polymer", enabled
end
function material.formula()
local enabled = true
return "(C5H8O2)n", enabled
end
function material.Eg(state)
-- Units: eV
--
-- PMMA is a wide-gap insulator. Reported optical band gaps span roughly
-- 4.5-5.6 eV depending on the film and extraction method (e.g. Tauc);
-- the fundamental/transport gap is larger. The Varshni model does not
-- apply; a constant representative value is returned.
--
-- Reference:
-- The PMMA optical gap is strongly method-dependent; UV-absorption
-- (Tauc) analyses of PMMA films report values across ~4.5-5.6 eV. As a
-- dielectric, PMMA's exact electronic gap is rarely used in device
-- models (the permittivity is the relevant parameter), so a
-- representative value is given rather than a single citation.
local enabled = true
local value = 5.6
return value, enabled
end
function material.Xi(state)
-- Electron affinity (LUMO level below vacuum)
-- Units: eV
--
-- Only relevant for band-alignment / injection-barrier estimates when
-- PMMA is used as a thin dielectric; it plays no transport role. The
-- value is approximate and method dependent (reported ~2-2.5 eV). With
-- Eg ~5.6 eV this implies an ionisation energy of ~8 eV, consistent with
-- PMMA's large hole-injection barriers.
--
-- Reference:
-- PMMA's electron affinity is not well defined and is rarely needed for
-- a dielectric; the ~2.5 eV figure is an approximate value used only for
-- band-alignment estimates, not a precisely measured level.
local enabled = true
local value = 2.5
return value, enabled
end
function material.Nc(state)
-- Effective conduction-band density of states
-- Units: m^-3
--
-- Not applicable to an insulating dielectric (no free-carrier transport);
-- disabled (enabled = false). Nominal value retained only to keep the
-- return type valid.
local enabled = false
local value = 1.0e24
return value, enabled
end
function material.Nv(state)
-- Effective valence-band density of states
-- Units: m^-3
--
-- Not applicable to an insulating dielectric; disabled (enabled = false).
local enabled = false
local value = 1.0e24
return value, enabled
end
function material.mu_e(state)
-- Low-field electron mobility
-- Units: m^2 V^-1 s^-1
--
-- PMMA is an insulator; carrier mobility is not a meaningful device
-- parameter. Disabled (enabled = false); a negligible nominal value is
-- returned.
local enabled = false
local value = 1.0e-16
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
--
-- PMMA is an insulator; disabled (enabled = false); negligible nominal
-- value returned.
local enabled = false
local value = 1.0e-16
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
--
-- Frequency dependent: ~3.3-3.9 at low frequency (relevant for
-- electrostatics / gate-dielectric use), falling to ~2.6 near 1 MHz and
-- ~2.2 optically (n ~ 1.49, eps_opt = n^2 ~ 2.22). The low-frequency
-- value is returned.
--
-- Reference:
-- J. Brandrup, E. H. Immergut, E. A. Grulke (Eds.), "Polymer Handbook",
-- 4th ed., Wiley, 1999.
local enabled = true
local value = 3.6
return value, enabled
end
function material.free_to_free_recombination(state)
-- Bimolecular (band-to-band) recombination coefficient
-- Units: m^3 s^-1
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.auger_Cn(state)
-- Electron Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.auger_Cp(state)
-- Hole Auger recombination coefficient
-- Units: m^6 s^-1
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.ss_srh_trap_energy(state)
-- SRH trap energy relative to mid-gap
-- Units: eV
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.ss_srh_Nt(state)
-- SRH trap density
-- Units: m^-3
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.ss_srh_sigma_n(state)
-- Electron capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
return value, enabled
end
function material.ss_srh_sigma_p(state)
-- Hole capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
return value, enabled
end
function material.thermal_conductivity(state)
-- Thermal conductivity
-- Units: W m^-1 K^-1
--
-- Well-established low value for bulk amorphous PMMA (~0.17-0.19 W/m/K),
-- nearly temperature independent near room temperature. Constant value
-- returned.
--
-- Reference:
-- J. Brandrup, E. H. Immergut, E. A. Grulke (Eds.), "Polymer Handbook",
-- 4th ed., Wiley, 1999.
local enabled = true
local value = 0.19
return value, enabled
end
function material.heat_capacity(state)
-- Specific heat capacity
-- Units: J kg^-1 K^-1
--
-- Room-temperature specific heat of PMMA is ~1400-1500 J/kg/K. A
-- representative value is returned.
--
-- Reference:
-- J. Brandrup, E. H. Immergut, E. A. Grulke (Eds.), "Polymer Handbook",
-- 4th ed., Wiley, 1999.
local enabled = true
local value = 1450.0
return value, enabled
end
function material.density(state)
-- Mass density
-- Units: kg m^-3
--
-- Bulk amorphous PMMA density is ~1.18 g/cm^3.
--
-- Reference:
-- J. Brandrup, E. H. Immergut, E. A. Grulke (Eds.), "Polymer Handbook",
-- 4th ed., Wiley, 1999.
local enabled = true
local value = 1180.0
return value, enabled
end
function material.lattice_constant(state)
-- Characteristic structural spacing
-- Units: m
--
-- PMMA is atactic and fully amorphous: it has no crystalline lattice, so
-- this parameter is not applicable and is disabled (enabled = false). The
-- nominal value (~1 nm) reflects only the amorphous inter-chain scattering
-- halo and should not be treated as a lattice constant.
local enabled = false
local value = 1.0e-9
return value, enabled
end
function material.Ntrape(state)
-- Electron tail (band-tail) trap density
-- Units: m^-3
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.Ntraph(state)
-- Hole tail (band-tail) trap density
-- Units: m^-3
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.0
return value, enabled
end
function material.Etrape(state)
-- Electron tail characteristic energy
-- Units: eV
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.06
return value, enabled
end
function material.Etraph(state)
-- Hole tail characteristic energy
-- Units: eV
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 0.06
return value, enabled
end
function material.srhsigman_e(state)
-- Electron-to-electron capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
return value, enabled
end
function material.srhsigmap_e(state)
-- Hole-to-electron capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
return value, enabled
end
function material.srhsigman_h(state)
-- Electron-to-hole capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
return value, enabled
end
function material.srhsigmap_h(state)
-- Hole-to-hole capture cross section
-- Units: m^2
--
-- Not applicable to an insulator; disabled (enabled = false).
local enabled = false
local value = 1.0e-20
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)))
print(string.format("Electron trap density: %.6e m^-3", material.Ntrape(state)))
print(string.format("Hole trap density: %.6e m^-3", material.Ntraph(state)))
print(string.format("Electron trap energy: %.6f eV", material.Etrape(state)))
print(string.format("Hole trap energy: %.6f eV", material.Etraph(state)))
print(string.format("SRH sigma n->e: %.6e m^2", material.srhsigman_e(state)))
print(string.format("SRH sigma p->e: %.6e m^2", material.srhsigmap_e(state)))
print(string.format("SRH sigma n->h: %.6e m^2", material.srhsigman_h(state)))
print(string.format("SRH sigma p->h: %.6e m^2", material.srhsigmap_h(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.
-- ============================================================================