Releases: tachsin/photonoxide
Releases · tachsin/photonoxide
Release list
v0.4.0
Breaking
ParametricModel::fittakes anInterpolationin place of the polynomial degree:Interpolation::Polynomial { degree }for the previous fit,Interpolation::PiecewiseLinearfor Triverio's (#86)- 2D FDFD ports: with H along z, S's reflections are the tangential E's, as the 3D ports' and mode expansions', and so minus those before 0.4.0; a mode's backward amplitude follows (#90)
Boundaries3dhas a new public field,real_stretch: struct literals need it, or..Boundaries3d::pml(cells)(#84)
Added
- components and netlists, the foundation of circuits (#71)
- the circuit solve: one sparse system per netlist, checked against Filipsson's sub-network growth (#74)
- read and write Touchstone files, Version 1 and 2.0 (#72)
- the circuit adjoint: every parameter's gradient from one transposed solve (#75)
- optimization at circuit level through genoxide: a splitter, a ring at critical coupling and a fit (#76)
- compact models by vector fitting, over parameters, and the measured fidelity (#78)
- 3D FDFD ports: the grid's own full-vector port modes, one-way mode sources and a reciprocal S-matrix (#77)
- the first components: waveguide, bend, couplers, MMI, Y-branch, rings and MZI (#79)
- (studio) a component library and a chip view (#80)
- validate against measured Mach-Zehnder interferometers (Dwivedi 2015) (#85)
- (material) AlN's index (Rigler 2015), AlGaN films (Rigler 2013), and InGaP beyond Tanaka's range (Ferrini 2002) (#87)
- [breaking] compact models checked against their papers: Triverio's piecewise-linear model with an exact uniform stability test (#86)
- [breaking] QMR preconditioned by ILU(0) on Shin and Fan's operator, with PMLs stretched as much as they absorb (#84)
Fixed
- a 3D direct solve reaches round-off on any machine, finishing by QMR on an inaccurate factorization (#82)
- 0.4 follow-ups: MMI port polarization, provenance -0.000, parallel spectra, roadmap (#83)
- [breaking] 2D reflections with H along z by the tangential E's convention, as the 3D ports' (#90)
Documentation
- bring the README up to date with 0.3.3 and the 0.4 work on main (#88)
- bring the site, getting started, the studio's README and AGENTS.md up to date (#89)
- animate the studio in the README, recorded by a script (#91)
- describe the crate as 0.4.0 has it, with FDTD, inverse design, layout and PDKs as planned (#92)
v0.3.3
Added
- the selected mode travels along its guide in the 3D viewer, and job previews show a modes job whole (#61)
- (validation) the cases' math as LaTeX, rendered by KaTeX in the studio and on the site (#62)
- flip through a sweep's points in the viewer, each with its structure and its modes (#67)
- a materials catalogue with provenance, and a Materials page in the studio (#70)
Fixed
- (studio) a release in the making is announced as on its way, not as an error (#58)
- the check refuses windows that run backwards, a step that isn't positive and sweeps a run can't take; a width sweep's point shows its own cross-section (#68)
- new run events go after the old ones, so their discriminants keep their values (#69)
Documentation
- method write-ups' math as GitHub renders it (#63)
v0.3.2
v0.3.1
Added
- (studio) the studio as a workspace, with examples inside and updates by one click (#52)
v0.3.0
Added
- [breaking] make the studio a Tauri app with a 3D view, and the photonoxide program (#36)
- open the studio's start page with a bare photonoxide, and release binaries (#38)
- add a multilayer stack's reflection and transmission of a plane wave (#40)
- add 2D FDFD with stretched-coordinate PMLs and its exact power flux (#41)
- add 2D FDFD ports: the grid's own modes, one-way sources and a reciprocal S-matrix (#42)
- reuse an FDFD matrix's symbolic analysis across a sweep (#43)
- add an fdfd job: a device on one layer by 2D FDFD with ports, live in the studio (#44)
- add adjoint gradients for 2D FDFD, checked against finite differences (#45)
- add Hadley's high-accuracy interface and corner equations as a full-vector mode solver (#47)
- add 3D FDFD on the Yee grid with stretched-coordinate PMLs (#46)
- add a QMR iterative solver for 3D FDFD, on the curl-curl operator or Shin and Fan's (#48)
Fixed
- (fdfd) put Shin and Fan's ε⁻¹ at the nodes, inside the gradient (#50)
Documentation
v0.2.0
Added
- add the exact TE and TM modes of three-layer slabs (#14)
- add the full-vector finite-difference mode solver, with shift-and-invert Arnoldi (#16)
- add mirror walls to the vector mode solver, and validate its corners against Hadley (#20)
- add group index, dispersion, loss and mode tracking (#21)
- add exact multilayer slab modes and leaky waves by transfer matrices (#22)
- add a PML to the vector mode solver for leaky modes (#23)
- add the effective index method, with its error against the vector solver (#24)
- add bends: an exact bent slab, and bent cross-sections in the vector solver (#26)
- add a vector mode's full fields, power and coupling into another mode (#28)
- add Marcatili's approximation, validated against the vector solver in its regime (#29)
- add planar profiles by 1D finite differences, with a PML (#30)
- add the studio's mode viewer, with sweeps over wavelength and width (#31)
Documentation
v0.1.1
v0.1.0
0.1 Foundations (ROADMAP.md).
Added
- add the error type, and CI on Linux, macOS and Windows (#1)
- add typed lengths, wavelengths and frequencies, and the e^(-iwt) convention (#2)
- add materials with their provenance: Si (Li 1980), SiO2 (Malitson 1965), Si3N4 (Luke 2015) (#3)
- add planar shapes, layer stacks with SOI and nitride presets, and structures (#4)
- add job files, run directories, event records with exact replay, and stops (#5)
- add the validation harness, its report and the photonoxide validate command (#6)
- add the studio window, structure jobs and permittivity rasters (#7)
- read refractiveindex.info files: its nine formulas, tabulated n, k and nk, with their provenance (#8)
Changed
- raise the minimum Rust to 1.95 for eframe and egui 0.36 (#9)