meanas/docs/api/fdfd.md
Forgejo Actions 553cdf948c [scpml] share face construction between grid builders
Delegate uniform-grid PML faces to stretch_with_scpml, using physical-thickness scaling and electric-center/magnetic-edge samples. Cover disabled axes, touching faces, real profiles, and final stretch caps.

Validation: 200 focused tests passed; Ruff passed.
2026-10-18 23:09:02 -07:00

1.4 KiB

fdfd

::: meanas.fdfd

Core operator layers

::: meanas.fdfd.functional

::: meanas.fdfd.operators

::: meanas.fdfd.solvers

::: meanas.fdfd.scpml

::: meanas.fdfd.farfield

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.

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.