Skip to content

Add circuit extraction documentation#812

Draft
simlapointe wants to merge 7 commits into
mainfrom
simlapointe/prom_docs
Draft

Add circuit extraction documentation#812
simlapointe wants to merge 7 commits into
mainfrom
simlapointe/prom_docs

Conversation

@simlapointe

Copy link
Copy Markdown
Contributor

This PR refers to content in #811 and should not be merged prior to that PR.

Document circuit extraction capabilities in Palace. This is based on #676, expanded slightly to describe the treatment of nonlinear frequency-dependent term implemented in #811. Closes #676.

phdum-a and others added 7 commits July 13, 2026 10:07
Circuit synthesis from AC (driven) simulations: the tutorial walks through
extracting reduced L/R/C circuit matrices from an adaptive driven sweep on the
transmon example, and the feature page summarizes the ROM + circuit-synthesis
capability. Includes the transmon domain-energy and port-S comparison figures.

Content authored by Philipp Dumitrescu on phdum/prom_docs; ported onto main for
the circuit-extraction work (cross-links to the driven tutorial repointed to the
adaptive_driven_solver feature page that now carries that material on main).
Add the circuit-extraction tutorial under Examples and the ROM/circuits feature
page under Features in docs/make.jl, integrating the phdum/prom_docs content onto
main's documentation navigation.
…landing page

The circuit-synthesis content was split awkwardly: the substantive tutorial
lived under Examples while a near-empty "ROM and circuits" landing page sat in
Features as a redirect. This was inconsistent with the sibling capability
(adaptive driven solver), which is a self-contained Features page with its own
inline worked example. The circuit tutorial is feature-guide material (theory,
conventions, an inline transmon walkthrough) and, unlike true Examples entries,
is not part of the regression suite.

- Move docs/src/examples/tutorial_circuit_extraction.md ->
  docs/src/features/circuit_extraction.md (sits beside adaptive_driven_solver.md).
- Delete docs/src/features/driven_rom_and_circuits.md; its description, warning,
  and config-knob list are already covered by the tutorial.
- Rewrite intra-doc links for the new location and update the make.jl nav.
Fill in the unfinished "Lumped port boundary" paragraph (broken sentence,
typo, and a [TODO: WHAT IS THE NORMALIZATION] placeholder). The power-flow
inner product makes the port modes power-orthogonal; setting E = e_j fixes
the mode normalization to int|e_j|^2 dS = |Z_R| * sum_e W_e/L_e (port voltage
sqrt(|Z_R|) for a single rectangular element), matching the implementation in
LumpedPortData::GetExcitationFieldEtNormSqWithUnityZR and the ROM hybrid
weight matrix.
Update the circuit-extraction tutorial for the synthesis of non-quadratic
frequency terms (wave ports, second-order absorbing/farfield, surface
conductivity), to be consistent with the circuit-waveport-2 changes.

- Remove the "pure quadratic / not supported" limitation and the A2/b2
  "cannot synthesize" statement; A2/b2 now appear in the system equation.
- Document the IncludeInSynthesis flag (now on WavePort as well as LumpedPort)
  and the new rom-port-reference.csv / rom-portload-*.csv outputs.
- Generalize the output-CSV node naming for wave ports (waveport_<idx>_re/_im)
  and Augmented-regime auxiliary states (<prefix>_p<k>d<j>).
- Add a "Synthesizing Frequency-Dependent Boundary Conditions" subsection
  (Polynomial vs Augmented regimes, per-BC dispersion, full realization math).
- Add a "Wave port boundary" orthogonalization subsection: same power-flow
  inner product as lumped ports, but the mode comes from the cross-section EVP
  (unit-power normalized there) and may occupy two columns.
- Add the AAA paper as reference [8].
@simlapointe simlapointe added the no-long-tests This PR does not require the long tests to be merged label Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-long-tests This PR does not require the long tests to be merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants