History: the original #86 (matrix-exponential propagator + bianisotropy) and #87 (graded/chiral media) bundled multiple separable deliverables and were each split into four single-step issues. #86 → #86, #91, #92, #93. #87 → #87, #94, #95, #96.
#92 → #93 (exp-propagator → magnetoelectric coupling)
#87 → #94 → #96 (GradedLayer → chiral preset → validation)
#87 → #95 (GradedLayer → refine_slices)
#84 ─────────→ #96 (circular basis also gates the chiral validation)
Overview
Tracking epic for enhancements that extend TransferMatrix.jl along two axes: (A) architecture & ergonomics and (B) physics generality & robustness. The physics items draw on the Mackay & Lakhtakia (2020) transfer-matrix treatment (The Transfer-Matrix Method in Electromagnetics and Optics, Springer, DOI 10.1007/978-3-031-02022-3), which covers homogeneous bianisotropic slabs, continuously varying (sculptured / chiral) media via a piecewise-uniform approximation, and corrugated interfaces — most of which the package does not yet implement.
Each linked issue is scoped to a single implementable step (one PR). Some have a dependency on a sibling — see the dependency graph below. Issues that are pure scoping/decision placeholders are marked.
A. Architecture & ergonomics
ext/setup with Add optional Unitful unit support via a dispatch seam #81)transfer(good first issue; also a prerequisite for Validate chiral circular-Bragg stopband against literature #96)Layerbroadcast as a scalar (Base.broadcastable) (good first issue, lowest priority)B. Physics generality & robustness
Constitutive-tensor generalizations (in the existing Berreman backend; independent, parallelizable):
Layer(magneto-optic / Faraday media)calculate_γ+dynamical_matrixto an anisotropic μ tensor (magnetic anisotropy)Matrix-exponential propagator & bianisotropy:
M = exp(-iP·d)); may resolve R+T ≈ 0.998 for strongly rotated lossless crystals #70/Anisotropic ambient medium at oblique incidence produces NaN #71, eliminates mode sortingGraded / chiral media (piecewise-uniform approximation):
GradedLayertype with piecewise-uniform expansion into homogeneousLayers (rugate, chirped, graded-index)refine_slicesauto-refinement helper fornslicesconvergence — depends on Add GradedLayer type with piecewise-uniform expansion into homogeneous Layers #87Robustness & exploratory:
Dependency graph
Everything else is independent. #86, #91, #92, #87, #88 can all proceed in parallel.
Suggested sequencing
ext/infrastructure; Add optional Unitful unit support via a dispatch seam #81 is the highest value/lowest risk win.GradedLayerexpansion; then Add helicoidal/chiral preset constructor (plain fine-slicing, no Oseen) #94, Add nslices auto-refinement helper (refine_slices) #95 in parallel on top of it.Notes