Physical and numerical conventions#
Wavelength and optical constants#
PyOptik accepts vacuum wavelength quantities. Always attach units—for example
1550 * ureg.nanometer—to avoid ambiguity. Bare numeric inputs are retained
for compatibility and interpreted as metres.
The complex refractive index uses the convention N = n + i k: n is the
real refractive index and k is the non-negative extinction coefficient.
The convenience methods material.n(wavelength), material.k(wavelength),
material.relative_permittivity(wavelength), and
material.absorption_coefficient(wavelength) expose common derived values.
The relative permittivity is N² and the intensity absorption coefficient is
α = 4πk / λ.
Interface and multilayer power#
Fresnel and thin-film calculations use the same n + i k convention.
reflectance, transmittance, and absorptance are fractions of normal
optical power flux and satisfy R + T + A = 1 up to numerical precision.
The complex reflection_amplitude and transmission_amplitude retain
phase information. Multilayer results use the characteristic-matrix field
convention; power fractions are usually the portable quantities when comparing
different polarization bases.
Dispersion and group delay#
compute_group_delay_dispersion returns conventional frequency-domain GDD,
dτ_g/dω = d²β/dω² × length. Its units are time squared (typically fs²).
compute_group_delay_wavelength_slope is deliberately separate because it
returns dτ_g/dλ, a wavelength-space derivative with different units.
Interpolation and validity ranges#
Tabulated materials use linear interpolation by default. Pass
interpolation="pchip" to MaterialPage.load or TabulatedMaterial for
monotonic piecewise-cubic interpolation without overshoot. Both methods use
linear endpoint extrapolation when out_of_range="warn"; set
out_of_range="raise" for strict validity enforcement, or
out_of_range="clip" to evaluate at the nearest source boundary.
Comparisons at validity endpoints tolerate floating-point round-off introduced
by unit conversion. Thus, for example, 600 nm remains inside a source range
ending at 0.6 µm.
Provenance and conditions#
Every loaded material provides material.provenance. It contains the source
reference, upstream catalog ID and URL when available, source path, stated
wavelength range, and the upstream YAML CONDITIONS and COMMENTS fields.
Use it when recording simulation inputs or preparing results for publication.
page = catalog.get("specs/SCHOTT-optical/N-BK7")
material = page.load()
print(material.provenance)