REMI Lab
OPEN KNOWLEDGE / TOOLS

Support Boundaries

이 페이지의 내용

This page says what rfx supports today, feature by feature and port family by port family, and which combinations are refused. The maintained contracts, with their full evidence, are the support matrix and the S-parameter support matrix on GitHub. Defects you can hit inside these limits are listed in known limitations.

Status terms

StatusMeaning
supportedDocumented for routine use within the stated limits.
limitedDocumented only for the geometry, mode, mesh or observable stated. Outside that, you have to validate it yourself.
experimentalRuns and has regression tests, but there is not enough RF evidence to rely on the numbers.
not documentedCode exists, but there is no public workflow.
unsupportedRefused with an error.

A clean preflight or a completed run does not move a feature up this scale.

Features

FeatureStatusLimit
Uniform Cartesian Yee gridsupportedThe baseline. Each source and observable still has its own limits.
boundary="cpml" / "pec"supported
boundary="upml"supportedReflects about 25 dB more than CPML at the same layer count. Prefer CPML where the reflection floor matters.
precision="float32"supportedThe default.
precision="float64" / "mixed"limitedUniform single-device solver only. "mixed" raises the CPML reflection floor; not for S-parameters.
Isotropic, conductive and Debye/Lorentz materialssupportedDispersive models within the validated subsets. sigma >= 1e6 S/m is lossless PEC.
Metal sheets, add_thin_conductorsupportedLossless PEC sheet on one grid plane.
Lossy sheets, surface_impedance_f0=limitedBand-centre surface resistance on its documented uniform and graded lanes. Not a general dispersive conductor model.
Probes and flux monitorssupportedOn a uniform grid. See the graded-mesh table below.
Harminv resonances (find_resonances)supportedNeeds a rung-down record and some loss.
Far field / RCS (NTFF)limitedBenchmarked cases in Far-Field and RCS.
Plane wave (add_tfsf_source)limitedx-directed, 3-D or 2-D (TMz/TEz), CPML.
Graded meshes (dx/dy/dz_profile)limited by featureSee Graded meshes.
ADI solver (solver="adi")experimental3-D PEC-cavity frequency within 2 % at adi_cfl_factor=2. Use Yee for results you report.
Subgridding (add_refinement)not documentedrun() on a uniform mesh only.
Multi-device runs (devices=)not documentedSpeed, not a separate accuracy claim.
Floquet / Bloch portsexperimentalNo high-level S-parameter API.

Port families and S-parameters

PortCalculatorStatusLimit
lumped add_port(...)run(compute_s_params=True)limitedOne-cell feed model. About 60 cells per wavelength for one-port S11.
wire add_port(..., extent=...)run(compute_s_params=True)limitedMagnitude evidence is stronger than absolute calibration. Graded-mesh use is experimental.
lumped / wireforward(port_s11_freqs=...)limitedS11 vectors on the uniform single-device path.
add_msl_port(...)compute_msl_s_matrix()limitedQuasi-TEM (mode="laplace"), directions ±x and ±y. At least 4 cells through the substrate (preflight warns below that). Graded mesh experimental; mode="eigenmode" outside scope.
add_waveguide_port(...)compute_waveguide_s_matrix()limitedUniform single-mode magnitude has broad evidence; phase, junctions and multimode less. S is a power-wave S only when all ports share one cross-section. Gradients on normalize=False and "flux". Graded mesh experimental.
add_waveguide_port(...)run(...) → waveguide_sparamslimitedPer-port diagnostic, not the full matrix.
add_coaxial_port(...)compute_coaxial_line_reflection(...)limitedOne face="top" port, self-contained line, float32 uniform grid. At least 4 cells across the annulus. The line absorbs on all three axes.
add_coaxial_port(...)compute_coaxial_two_port(...)limitedOne SMA-class through-line family, symmetric discontinuities only.
lumped/wire + microstripcompute_mixed_s_matrix()experimentalMagnitude not validated; the default passivity projection alters the diagonal.
coax + microstripcompute_coax_msl_transition()experimentalDiagnostic only; the matrix is not passive and is refused by default.
add_floquet_port(...)noneexperimentalDiagnostic helpers only.
sources, TFSF, probes, DFT planes, flux monitorsnonenot a portNo reference impedance, so no S-parameters.

Each family has one calculator. run(compute_s_params=True) handles lumped and wire ports only. sim.compute_s_matrix() picks the right calculator for you, except for a lumped/wire-only model, which it refuses (call run(compute_s_params=True)); see Sources & Ports.

Graded meshes

Support on a graded mesh is decided per combination. A graded run completing says nothing about whether its S-parameters, flux or far field are accurate.

CombinationStatusLimit
Multi-band graded profile, ratio ≤ 1.4 on z (1.3 in-plane)limitedSolver-level evidence (energy, transition reflection, order, gradients). Keep grading out of the absorber.
NTFF + graded zlimitedShort-dipole directivity within about 0.05 dB of theory; other cases need their own validation.
Lumped R/L/C + graded meshlimitedElements take part in the update; S-parameters and component-value gradients not documented.
DFT plane or flux monitor + graded zexperimentalRuns; no general accuracy statement.
Plane wave + graded meshexperimentalNormal incidence along ±x only, with x uniform. Preflight warns when the propagation axis is graded.
Waveguide S-matrix + graded meshexperimentalSingle mode, normalize=True or "flux". One passed magnitude comparison (graded y, WR-90). No dz-graded accuracy evidence.
Microstrip S-matrix + graded meshexperimentalmode="laplace"/"uniform"; internal checks only.
Wire-port S-parameters + graded meshexperimental
Lumped-port (one-cell) S-parameters + graded meshunsupported
Coaxial port + graded meshunsupported
UPML + graded meshunsupported
Periodic / Floquet port + graded meshunsupported

Combinations that raise

rfx refuses these before the first time step instead of returning a number:

  • one-cell lumped-port S-parameters, coaxial ports, boundary="upml", or a Floquet port on a graded mesh;
  • mode="eigenmode" microstrip ports on a graded mesh;
  • a plane wave on a graded mesh at oblique incidence or along ±z;
  • a calculator called with the wrong port family, for example compute_msl_s_matrix() without microstrip ports; run(compute_s_params=True) computes lumped and wire ports only, and a coaxial port is not handled by run() at all;
  • compute_coaxial_line_reflection(...) with anything else registered, a graded mesh, non-float32 precision, or a boundary other than CPML on all six faces;
  • compute_coax_msl_transition() with a non-passive result, unless you pass strict_passivity=False;
  • compute_waveguide_s_matrix(normalize=True) with a traced eps_override/sigma_override;
  • a waveguide reference-plane shift that crosses cells of more than one size on a graded mesh;
  • precision="float64" or "mixed" on a graded mesh, with devices=, or with subgridding;
  • stencil_order=4 with CPML/UPML, a graded mesh, ADI, dispersion or the other features it does not support;
  • the ADI solver with interior metal (sheets, wires or volumes);
  • any run() argument the selected solver path does not implement, for example snapshots on a graded mesh or until_decay with ADI;
  • add_refinement combined with forward(), optimize() or topology_optimize();
  • devices= with exchange_interval other than 1;
  • run(ringdown=...) with anything but wire ports, or with until_decay or devices=.

Some combinations off the main path still ignore a setting without raising, for example a Kerr material on a non-uniform run(), or mu_r and Kerr on the ADI solver. These are tracked as open issues on GitHub. If you need a feature on a path other than the uniform Yee solver, check there first.

Using a probe, DFT plane or flux monitor as if it were an impedance-defined port is unsupported for the same reason: it has no reference impedance or reference plane.

Reporting a result

Exported files (Touchstone, HDF5, CSV, JSON, plots) record what a run produced. They do not change its status. When you report a number, state the API and port family, the mesh (uniform or graded, cell size), the frequency range, the normalization, the rfx version and the comparison you made. Outside a listed range, run a convergence study and compare against an analytic or independent reference first.

Back to top ↑