2026-04-18 15:05:35 -07:00
|
|
|
# fdfd
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd
|
|
|
|
|
|
|
|
|
|
## Core operator layers
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd.functional
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd.operators
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd.solvers
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd.scpml
|
|
|
|
|
|
|
|
|
|
::: meanas.fdfd.farfield
|
2026-10-18 23:07:53 -07:00
|
|
|
|
|
|
|
|
## SCPML conventions
|
|
|
|
|
|
|
|
|
|
`stretch_with_scpml` now uses `-1` for the low-index face and `+1` for the
|
|
|
|
|
high-index face, matching CPML and propagation conventions. It returns copied
|
|
|
|
|
widths by default; pass `copy=False` to request mutation explicitly.
|
|
|
|
|
|
|
|
|
|
Both SCPML builders accept `kappa_function(depth)` for real stretching and
|
|
|
|
|
`max_imag_ratio` to limit the final dimensionless `abs(Im(s))/Re(s)`. Start a
|
|
|
|
|
mode-solver convergence study with `max_imag_ratio=1.0`: overly strong imaginary
|
|
|
|
|
stretching can produce above-light-line PML artifacts. The cap is not a general
|
|
|
|
|
spectral guarantee, and weaker absorption can increase boundary reflections.
|
|
|
|
|
Check domain size, PML thickness, strength, mode localization, and residuals.
|
|
|
|
|
The general scattering profile remains uncapped by default.
|
2026-10-18 23:09:02 -07:00
|
|
|
|
|
|
|
|
`uniform_grid_scpml` builds unit widths by applying `stretch_with_scpml` to
|
|
|
|
|
both faces of each enabled axis. Both builders divide imaginary grading by
|
|
|
|
|
physical layer thickness and sample electric widths at cell centers and
|
|
|
|
|
magnetic widths at cell edges. This corrects the uniform builder's previous
|
|
|
|
|
thickness-independent strength and reversed E/H sample offsets; retune existing
|
|
|
|
|
uniform-builder profiles using domain/PML convergence checks.
|