.. _architecture: ************ Architecture ************ Quantum Metal is organised around three load-bearing abstractions — ``QComponent`` (geometry pieces), ``QDesign`` (chip canvas), and ``QRenderer`` (export to GDS / HFSS / FEM). The viewers (``MetalGUI`` and the new headless ``MetalGUIHeadless``) share the same matplotlib renderer underneath; the ``qm.gui(design)`` factory auto-picks one based on the environment. .. mermaid:: flowchart TB user["User code
script, notebook, MetalGUI"] subgraph design_layer["QDesign — designs/"] comps[design.components
dict of QComponent] qg[design.qgeometry
shapely tables] chips[design.chips
chip stack] vars[design.variables] end subgraph component_layer["QComponent — qlibrary/"] base[QComponent
core/base.py] qubits[qubits/] couplers[couplers/] tlines[tlines/] terms[terminations/] res[resonators/] base -.-> qubits & couplers & tlines & terms & res end subgraph renderer_layer["QRenderer — renderers/"] rbase[QRenderer / QRendererAnalysis
renderer_base/] mpl[renderer_mpl
qm.view, MetalGUI canvas] gds[renderer_gds
GDS export] ansys[renderer_ansys + renderer_ansys_pyaedt
HFSS / Q3D] fem[renderer_gmsh + renderer_elmer
open FEM] rbase -.-> mpl & gds & ansys & fem end subgraph analyses_layer["Analyses — analyses/"] ham[Hamiltonian quantization] cap[Capacitance / LOM] epr[Eigenmode + EPR] end subgraph gui_layer["Viewers — _gui/ + viewer/"] factory["qm.gui(design)
auto-pick by env"] metalgui[MetalGUI
Qt desktop] headless[MetalGUIHeadless
inline matplotlib] factory --> metalgui & headless end user --> design_layer user --> factory component_layer -- "construction registers" --> comps comps -- "make() / rebuild()" --> qg qg --> renderer_layer renderer_layer --> analyses_layer qg --> metalgui & headless classDef pri fill:#6929C4,stroke:#3D1773,color:#fff classDef sec fill:#e8defc,stroke:#6929C4,color:#1a1a1a classDef user_box fill:#fff4e3,stroke:#E07A5F,color:#1a1a1a class user user_box class base,rbase,factory pri class qubits,couplers,tlines,terms,res,mpl,gds,ansys,fem,metalgui,headless,ham,cap,epr,comps,qg,chips,vars sec For deeper contributor-side detail on each abstraction (lifecycle, options parsing, the lazy-Qt setup), read ``.claude/context/architecture.md`` in the repo root.