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

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

Supporting definitions

-- 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_kl, heat_capacity, density.
-- ============================================================================

Material name (material.name)

function material.name()
	local enabled = true

	return "PMMA", enabled
end

Material description (material.description)

function material.description()
	local enabled = true

	return "Poly(methyl methacrylate), amorphous insulating dielectric polymer", enabled
end

Chemical formula (material.formula)

function material.formula()
	local enabled = true

	return "(C5H8O2)n", enabled
end

Band gap energy (material.Eg)

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

Deformation potential Xi (material.Xi)

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

Effective conduction-band density of states (material.Nc)

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

Effective valence-band density of states (material.Nv)

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

Electron mobility (material.mu_e)

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

Electron mobility in the x direction (material.mue_x)

function material.mue_x(state)
	return material.mu_e(state)
end

Electron mobility in the y direction (material.mue_y)

function material.mue_y(state)
	return material.mu_e(state)
end

Electron mobility in the z direction (material.mue_z)

function material.mue_z(state)
	return material.mu_e(state)
end

Hole mobility (material.mu_h)

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

Hole mobility in the x direction (material.muh_x)

function material.muh_x(state)
	return material.mu_h(state)
end

Hole mobility in the y direction (material.muh_y)

function material.muh_y(state)
	return material.mu_h(state)
end

Hole mobility in the z direction (material.muh_z)

function material.muh_z(state)
	return material.mu_h(state)
end

Relative dielectric permittivity (material.epsilonr)

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

Free-carrier radiative recombination (material.free_to_free_recombination)

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

Electron Auger recombination coefficient (material.auger_Cn)

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

Hole Auger recombination coefficient (material.auger_Cp)

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

Interface trap energy (material.ss_srh_trap_energy)

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

Interface trap density (material.ss_srh_Nt)

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

Interface electron capture cross-section (material.ss_srh_sigma_n)

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

Interface hole capture cross-section (material.ss_srh_sigma_p)

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

Lattice thermal conductivity (material.thermal_kl)

function material.thermal_kl(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

Specific heat capacity (material.heat_capacity)

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

Mass density (material.density)

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

Crystal lattice constant (material.lattice_constant)

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

Electron trap density (material.Ntrape)

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

Hole trap density (material.Ntraph)

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

Electron trap energy (material.Etrape)

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

Hole trap energy (material.Etraph)

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

Electron capture cross-section for electron traps (material.srhsigman_e)

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

Hole capture cross-section for electron traps (material.srhsigmap_e)

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

Electron capture cross-section for hole traps (material.srhsigman_h)

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

Hole capture cross-section for hole traps (material.srhsigmap_h)

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

Electron thermal relaxation time (material.thermal_tau_e)

function material.thermal_tau_e(state)
	-- Electron energy relaxation time towards the lattice temperature
	-- Units: s
	--
	-- Value basis: Numerical fallback
	-- Confidence: Low
	--
	-- Reference:
	-- No specific reference supplied.
	--
	-- Comments:
	-- Passive insulator/optical layer. No mobile-carrier hydrodynamic equation
	-- should normally be solved; fast fallback only.

	local enabled = false
	local value = 1.000000e-14

	return value, enabled
end

Hole thermal relaxation time (material.thermal_tau_h)

function material.thermal_tau_h(state)
	-- Hole energy relaxation time towards the lattice temperature
	-- Units: s
	--
	-- Value basis: Numerical fallback
	-- Confidence: Low
	--
	-- Reference:
	-- No specific reference supplied.
	--
	-- Comments:
	-- Passive insulator/optical layer. No mobile-carrier hydrodynamic equation
	-- should normally be solved; fast fallback only.

	local enabled = false
	local value = 1.000000e-14

	return value, enabled
end

Material parameter summary (material.print)

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("Electron energy relax.:  %.6e s", material.thermal_tau_e(state)))
	print(string.format("Hole energy relax.:      %.6e s", material.thermal_tau_h(state)))

	print(string.format("Thermal conductivity:   %.6e W/m/K", material.thermal_kl(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.
-- ============================================================================