Repository navigation
Releases: cjcscheper/cjctmm
Releases · cjcscheper/cjctmm
Release list
v0.2.0
Changed
- Breaking: the sign convention of
r_p.solve_tmm(..., polarization="p").r
andfresnel_r(..., "p")now returnr_p = (n1 cos2 - n2 cos1)/(n1 cos2 + n2 cos1),
sor_p = r_sat normal incidence (air to glass: -0.2 instead of +0.2) and
r_p -> +1at grazing incidence. This is the opposite sign of Hecht / Born &
Wolf; multiply by -1 to get the old values.t,R,TandAare unchanged.
THEORY.md describes both conventions and why neither looks symmetric at both
normal and grazing incidence.
Fixed
- THEORY.md formulas render correctly on GitHub: they use GitHub's protected
math syntax, so Markdown no longer eats underscores and backslashes.
v0.1.0
First release.
Added
solve_tmm(omega, layer_thickness, layer_n, ...): transfer-matrix method for
planar multilayer stacks, s and p polarization at oblique incidence, absorbing
layers and evanescent waves, returning a frozenResult(omega, r, t, R, T, A).num_substrate_passesfor time-gated measurements, with aUserWarningwhen
front-layer echoes beyond the implied gate exceedsubstrate_pass_tolerance.conjugate_modelfor theexp(+i omega t)time convention.- Single-interface functions:
fresnel_r,fresnel_t,fresnel_R,fresnel_T,
critical_angle,brewster_angle,admittance,snell_cos_theta,
snell_theta, andpropagation_phase. - Physical constants
SPEED_OF_LIGHT,VACUUM_PERMEABILITY,
VACUUM_PERMITTIVITY,VACUUM_IMPEDANCE. - THEORY.md (derivation, conventions, substrate-pass validity), examples
(antireflection coating, Fabry–Pérot slab, angle dependence), tests and a
GitHub Actions workflow. examplesextra installing cjcplot pinned tov0.2.0; the examples plot
with cjcplot.pip install cjctmmitself stays numpy-only.