Files
mxpic_forge/docs/build/html/mxpic/components/primitives/spiral.html
T
2026-06-04 23:21:39 +08:00

767 lines
73 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" data-content_root="../../../" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>mxpic.components.primitives.spiral &#8212; mxpic_handbook mxpic documentation</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "";
</script>
<!--
this give us a css class that will be invisible only if js is disabled
-->
<noscript>
<style>
.pst-js-only { display: none !important; }
</style>
</noscript>
<!-- Loaded before other Sphinx assets -->
<link href="../../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" />
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
<!-- So that users can add custom icons -->
<script src="../../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script>
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" />
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" />
<script src="../../../_static/documentation_options.js?v=91346475"></script>
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'mxpic/components/primitives/spiral';</script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="mxpic.components.basic" href="../basic.html" />
<link rel="prev" title="mxpic.components.primitives.multimode_interferometers" href="multimode_interferometers.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<meta name="docsearch:version" content="" />
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>Back to top</button>
<dialog id="pst-search-dialog">
<form class="bd-search d-flex align-items-center"
action="../../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form>
</dialog>
<div class="pst-async-banner-revealer d-none">
<aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
<div class="bd-header__inner bd-page-width">
<button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
<span class="fa-solid fa-bars"></span>
</button>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../../index.html">
<p class="title logo__title">mxpic_handbook mxpic documentation</p>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav>
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item current active">
<a class="nav-link nav-internal" href="../index.html">
Components
</a>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
</div>
<div class="navbar-item">
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i>
</button></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
</div>
<button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page">
<span class="fa-solid fa-outdent"></span>
</button>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<dialog id="pst-primary-sidebar-modal"></dialog>
<div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav>
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item current active">
<a class="nav-link nav-internal" href="../index.html">
Components
</a>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i>
</button></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../composites/index.html">Composites</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="../composites/LoopMirror.html">mxpic.components.composites.LoopMirror</a></li>
<li class="toctree-l2"><a class="reference internal" href="../composites/MZI.html">mxpic.components.composites.MZI</a></li>
<li class="toctree-l2"><a class="reference internal" href="../composites/MZI_mesh.html">mxpic.components.composites.MZI_mesh</a></li>
<li class="toctree-l2"><a class="reference internal" href="../composites/SptTree.html">mxpic.components.composites.SptTree</a></li>
<li class="toctree-l2"><a class="reference internal" href="../composites/advance.html">mxpic.components.composites.advance</a></li>
</ul>
</details></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../electronics/index.html">Electronics</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="../electronics/eic_units.html">mxpic.components.electronics.eic_units</a></li>
</ul>
</details></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../others/index.html">Others</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2 has-children"><a class="reference internal" href="../others/simulation/index.html">Simulation</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l3"><a class="reference internal" href="../others/simulation/DualPortElements.html">mxpic.components.others.simulation.DualPortElements</a></li>
</ul>
</details></li>
</ul>
</details></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../pdks/index.html">Pdks</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="../pdks/AMF_pdk.html">mxpic.components.pdks.AMF_pdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pdks/CUMEC_pdk.html">mxpic.components.pdks.CUMEC_pdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pdks/IMECAS_pdk.html">mxpic.components.pdks.IMECAS_pdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pdks/hgl_pdk_A.html">mxpic.components.pdks.hgl_pdk_A</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pdks/qy_pdk_A.html">mxpic.components.pdks.qy_pdk_A</a></li>
</ul>
</details></li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="index.html">Primitives</a><details open="open"><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul class="current">
<li class="toctree-l2 has-children"><a class="reference internal" href="active/index.html">Active</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l3"><a class="reference internal" href="active/dev_ps.html">mxpic.components.primitives.active.dev_ps</a></li>
<li class="toctree-l3"><a class="reference internal" href="active/pin_wg.html">mxpic.components.primitives.active.pin_wg</a></li>
<li class="toctree-l3"><a class="reference internal" href="active/rings.html">mxpic.components.primitives.active.rings</a></li>
</ul>
</details></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="passive/index.html">Passive</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l3"><a class="reference internal" href="passive/crows.html">mxpic.components.primitives.passive.crows</a></li>
<li class="toctree-l3"><a class="reference internal" href="passive/rings.html">mxpic.components.primitives.passive.rings</a></li>
<li class="toctree-l3"><a class="reference internal" href="passive/unit.html">mxpic.components.primitives.passive.unit</a></li>
</ul>
</details></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="pic/index.html">Pic</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l3"><a class="reference internal" href="pic/PBS.html">mxpic.components.primitives.pic.PBS</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/YBS.html">mxpic.components.primitives.pic.YBS</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/bragg.html">mxpic.components.primitives.pic.bragg</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/couplers.html">mxpic.components.primitives.pic.couplers</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/cross.html">mxpic.components.primitives.pic.cross</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/gratings.html">mxpic.components.primitives.pic.gratings</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/mmi.html">mxpic.components.primitives.pic.mmi</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/racetrack.html">mxpic.components.primitives.pic.racetrack</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/rings.html">mxpic.components.primitives.pic.rings</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/spiral.html">mxpic.components.primitives.pic.spiral</a></li>
<li class="toctree-l3"><a class="reference internal" href="pic/taper.html">mxpic.components.primitives.pic.taper</a></li>
</ul>
</details></li>
<li class="toctree-l2"><a class="reference internal" href="EC_dual_layer_px3.html">mxpic.components.primitives.EC_dual_layer_px3</a></li>
<li class="toctree-l2"><a class="reference internal" href="beam_splitters.html">mxpic.components.primitives.beam_splitters</a></li>
<li class="toctree-l2"><a class="reference internal" href="directional_couplers.html">mxpic.components.primitives.directional_couplers</a></li>
<li class="toctree-l2"><a class="reference internal" href="grating_couplers.html">mxpic.components.primitives.grating_couplers</a></li>
<li class="toctree-l2"><a class="reference internal" href="multimode_interferometers.html">mxpic.components.primitives.multimode_interferometers</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">mxpic.components.primitives.spiral</a></li>
</ul>
</details></li>
<li class="toctree-l1"><a class="reference internal" href="../basic.html">mxpic.components.basic</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gds_devices.html">mxpic.components.gds_devices</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pins.html">mxpic.components.pins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../routing.html">mxpic.components.routing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../structures.html">mxpic.components.structures</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
<div class="sidebar-primary-item">
<div id="ethical-ad-placement"
class="flat"
data-ea-publisher="readthedocs"
data-ea-type="readthedocs-sidebar"
data-ea-manual="true">
</div></div>
</div>
</div>
<main id="main-content" class="bd-main" role="main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article d-print-none">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb" class="d-print-none">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Components</a></li>
<li class="breadcrumb-item"><a href="index.html" class="nav-link">Primitives</a></li>
<li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">mxpic.components.primitives.spiral</span></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="module-mxpic.components.primitives.spiral">
<span id="mxpic-components-primitives-spiral"></span><h1>mxpic.components.primitives.spiral<a class="headerlink" href="#module-mxpic.components.primitives.spiral" title="Link to this heading">#</a></h1>
<section id="spiral">
<h2>spiral<a class="headerlink" href="#spiral" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/spiral.png"><img alt="../../../_images/spiral.png" class="align-center" src="../../../_images/spiral.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">spiral</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'circle'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">R_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Rmin_euler</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_bend_center</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Rmin_bend_center</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_bend_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Ltp_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cell_transition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Euler_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_build</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral" title="Link to this definition">#</a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Parametric waveguide spiral supporting circular or rectangular footprints.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>shape</strong> (<em>str</em><em>, </em><em>optional</em>) Footprint style used for the spiral path, circular or rectangular (default is “circle”).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum inner diameter in microns; sets the first loop radius (default is 50).</p></li>
<li><p><strong>R_bend</strong> (<em>float</em><em>, </em><em>optional</em>) Bend radius in microns for rectangular implementations (default is 10).</p></li>
<li><p><strong>Rmin_euler</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum radius inside Euler bends when <code class="docutils literal notranslate"><span class="pre">Euler_bend</span></code> is True (default is 10).</p></li>
<li><p><strong>Lmin</strong> (<em>float</em><em>, </em><em>optional</em>) Straight length in microns used by the innermost rectangular loop (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Nominal waveguide width inside the spiral body (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) Output-port width in microns. <code class="docutils literal notranslate"><span class="pre">None</span></code> inherits <code class="docutils literal notranslate"><span class="pre">width</span></code> (default is 0.45).</p></li>
<li><p><strong>w_bend_center</strong> (<em>float</em><em>, </em><em>optional</em>) Waveguide width used in the central attachment bends (default is 1).</p></li>
<li><p><strong>Rmin_bend_center</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum radius for the attachment bends (default is 10).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between adjacent turns in microns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of half-turns (π radians) laid out in the spiral (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key for the entire structure (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em>, </em><em>optional</em>) Override layer for polygons; <code class="docutils literal notranslate"><span class="pre">None</span></code> derives from <code class="docutils literal notranslate"><span class="pre">xs</span></code> (default is None).</p></li>
<li><p><strong>w_bend_port</strong> (<em>float</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Width inside the outermost bends; <code class="docutils literal notranslate"><span class="pre">None</span></code> inherits <code class="docutils literal notranslate"><span class="pre">width</span></code> (default is None).</p></li>
<li><p><strong>Ltp_port</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight tapers that adapt <code class="docutils literal notranslate"><span class="pre">width</span></code> to <code class="docutils literal notranslate"><span class="pre">w_port</span></code> (default is 10).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling step (µm) used for polygon tessellation (default is 0.5).</p></li>
<li><p><strong>cell_transition</strong> (<em>nazca.Cell</em><em>, </em><em>optional</em>) Insert XS transitions cell to strip when connecting ports (default is None).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output-port deflection angle in degrees, measured from +x (default is 180).</p></li>
<li><p><strong>Euler_bend</strong> (<em>bool</em><em>, </em><em>optional</em>) Use Euler/Clothoid bends at the center instead of circular bends (default is False).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Add chamfer helper polygons when True (default is True).</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral.generate_gds">
<span class="sig-name descname"><span class="pre">generate_gds</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">show_pins</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral.generate_gds" title="Link to this definition">#</a></dt>
<dd></dd></dl>
</dd></dl>
</section>
<section id="spiral-rectangle">
<h2>spiral_rectangle<a class="headerlink" href="#spiral-rectangle" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/spiral_rectangle.png"><img alt="../../../_images/spiral_rectangle.png" class="align-center" src="../../../_images/spiral_rectangle.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_rectangle">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">spiral_rectangle</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Rmax_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Rmin_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">wmin_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_bend_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lport</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Ltp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cell_xs_transition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">in_out_align</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lpatch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.05</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_build</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_rectangle" title="Link to this definition">#</a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Rectangular spiral with optional cross-section transitions and alignment control.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum vertical separation between the first pair of bends (default is 50).</p></li>
<li><p><strong>Rmax_bend</strong> (<em>float</em><em>, </em><em>optional</em>) Maximum radius used inside Clothoid bends (default is 10).</p></li>
<li><p><strong>Rmin_bend</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum radius reached inside Clothoid bends (default is 10).</p></li>
<li><p><strong>wmin_bend</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum waveguide width inside bends (default is 10).</p></li>
<li><p><strong>Lmin</strong> (<em>float</em><em>, </em><em>optional</em>) Straight length of the innermost segment (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Nominal waveguide width along the spiral (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) IO waveguide width after the final taper (default is 0.45).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between successive turns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of rectangular loops (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em>, </em><em>optional</em>) Override polygon layer (default is None).</p></li>
<li><p><strong>w_bend_port</strong> (<em>float</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Bend waveguide width; inherits <code class="docutils literal notranslate"><span class="pre">width</span></code> when None (default is None).</p></li>
<li><p><strong>Lport</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight sections appended at each port (default is 10).</p></li>
<li><p><strong>Ltp</strong> (<em>float</em><em>, </em><em>optional</em>) Taper length that converts bend width to <code class="docutils literal notranslate"><span class="pre">width</span></code> (default is 10).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling resolution (default is 0.5).</p></li>
<li><p><strong>cell_xs_transition</strong> (<em>nd.Cell</em><em> or </em><em>object</em><em>, </em><em>optional</em>) Pre-built cell that performs cross-section transitions after the ports (default is None).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output bend angle in degrees (default is 180).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Insert chamfer helpers when True (default is True).</p></li>
<li><p><strong>in_out_align</strong> (<em>bool</em><em>, </em><em>optional</em>) If True, align input/output along the same axis when <code class="docutils literal notranslate"><span class="pre">port_angle=180</span></code> (default is True).</p></li>
<li><p><strong>Lpatch</strong> (<em>float</em><em>, </em><em>optional</em>) Small straight length inserted before/after bends to ease Boolean ops (default is 0.05).</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_rectangle.generate_gds">
<span class="sig-name descname"><span class="pre">generate_gds</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">show_pins</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_rectangle.generate_gds" title="Link to this definition">#</a></dt>
<dd></dd></dl>
</dd></dl>
</section>
<section id="spiral-rect-std">
<h2>Spiral_Rect_STD<a class="headerlink" href="#spiral-rect-std" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/Spiral_Rect_STD.png"><img alt="../../../_images/Spiral_Rect_STD.png" class="align-center" src="../../../_images/Spiral_Rect_STD.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.Spiral_Rect_STD">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">Spiral_Rect_STD</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">R_bend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lport</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">in_out_align</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cell_xs_transition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.Spiral_Rect_STD" title="Link to this definition">#</a></dt>
<dd><p>Bases: <a class="reference internal" href="#mxpic.components.primitives.spiral.spiral_rectangle" title="mxpic.components.primitives.spiral.spiral_rectangle"><code class="xref py py-class docutils literal notranslate"><span class="pre">spiral_rectangle</span></code></a></p>
<p>Convenience preset for rectangular spirals that share a single bend radius.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum inner spacing between the first pair of bends (default is 50).</p></li>
<li><p><strong>R_bend</strong> (<em>float</em><em>, </em><em>optional</em>) Bend radius applied to every corner (default is 10).</p></li>
<li><p><strong>Lmin</strong> (<em>float</em><em>, </em><em>optional</em>) Straight length of the innermost segment (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Waveguide width throughout the spiral (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) IO waveguide width after the final taper (default is 0.45).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between successive turns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of rectangular loops (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Override polygon layer (default is None).</p></li>
<li><p><strong>Lport</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight port extensions (default is 10).</p></li>
<li><p><strong>in_out_align</strong> (<em>bool</em><em>, </em><em>optional</em>) Align input/output along the same axis when <code class="docutils literal notranslate"><span class="pre">port_angle=180</span></code> (default is True).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling resolution (default is 0.5).</p></li>
<li><p><strong>cell_xs_transition</strong> (<em>nd.Cell</em><em> or </em><em>object</em><em>, </em><em>optional</em>) Transition cell appended at the ports (default is None).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output bend angle in degrees (default is 180).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Insert chamfer helpers when True (default is True).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</section>
<section id="spiral-circle">
<h2>spiral_circle<a class="headerlink" href="#spiral-circle" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/spiral_circle.png"><img alt="../../../_images/spiral_circle.png" class="align-center" src="../../../_images/spiral_circle.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_circle">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">spiral_circle</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_bend_center</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lport</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rib2strip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Euler_Sbend</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strict_condition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">R_ratio_mamnual</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_circle" title="Link to this definition">#</a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Circular spiral with optional internal Euler S-bends and port transitions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum inner diameter in microns (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Nominal waveguide width (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) Output-port width after the final taper (default is 0.45).</p></li>
<li><p><strong>w_bend_center</strong> (<em>float</em><em>, </em><em>optional</em>) Waveguide width within the central attachment bend (default is 1).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between adjacent turns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of half-turns (π radians) (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Override layer for polygons (default is None).</p></li>
<li><p><strong>Lport</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight sections appended to each port (default is 10).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling step (default is 0.5).</p></li>
<li><p><strong>rib2strip</strong> (<em>bool</em><em>, </em><em>optional</em>) Insert rib-to-strip transitions at the ports (default is True).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output bend angle in degrees (default is 180).</p></li>
<li><p><strong>Euler_Sbend</strong> (<em>bool</em><em>, </em><em>optional</em>) Use optimized Euler S-bends at the center (default is False).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Add chamfer polygons when True (default is True).</p></li>
<li><p><strong>strict_condition</strong> (<em>bool</em><em>, </em><em>optional</em>) Enforce constant spacing by matching the conchoid tilt exactly (default is False).</p></li>
<li><p><strong>R_ratio_mamnual</strong> (<em>tuple</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Manually override the radius ratios used in Euler S-bends; expected form <code class="docutils literal notranslate"><span class="pre">(Rc_ratio,</span> <span class="pre">Rm_ratio,</span> <span class="pre">tilt)</span></code>.</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_circle.cell">
<span class="sig-name descname"><span class="pre">cell</span></span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_circle.cell" title="Link to this definition">#</a></dt>
<dd><p>Optimizing the bend radius for the minimum and central</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_circle.generate_gds">
<span class="sig-name descname"><span class="pre">generate_gds</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">show_pins</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_circle.generate_gds" title="Link to this definition">#</a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.spiral_circle.opt_euler">
<span class="sig-name descname"><span class="pre">opt_euler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">R</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">R0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.spiral_circle.opt_euler" title="Link to this definition">#</a></dt>
<dd></dd></dl>
</dd></dl>
</section>
<section id="spiral-cicle-mm">
<h2>Spiral_Cicle_MM<a class="headerlink" href="#spiral-cicle-mm" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/Spiral_Cicle_MM.png"><img alt="../../../_images/Spiral_Cicle_MM.png" class="align-center" src="../../../_images/Spiral_Cicle_MM.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.Spiral_Cicle_MM">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">Spiral_Cicle_MM</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_bend_center</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lport</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rib2strip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strict_condition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.Spiral_Cicle_MM" title="Link to this definition">#</a></dt>
<dd><p>Bases: <a class="reference internal" href="#mxpic.components.primitives.spiral.spiral_circle" title="mxpic.components.primitives.spiral.spiral_circle"><code class="xref py py-class docutils literal notranslate"><span class="pre">spiral_circle</span></code></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum inner diameter in microns (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Nominal waveguide width (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) Output-port width after the final taper (default is 0.45).</p></li>
<li><p><strong>w_bend_center</strong> (<em>float</em><em>, </em><em>optional</em>) Waveguide width within the central attachment bend (default is 1).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between adjacent turns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of half-turns (π radians) (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Override polygon layer (default is None).</p></li>
<li><p><strong>Lport</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight port extensions (default is 10).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling step (default is 0.5).</p></li>
<li><p><strong>rib2strip</strong> (<em>bool</em><em>, </em><em>optional</em>) Insert rib-to-strip transitions at the ports (default is True).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output bend angle in degrees (default is 180).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Add chamfer polygons when True (default is True).</p></li>
<li><p><strong>strict_condition</strong> (<em>bool</em><em>, </em><em>optional</em>) Enforce constant-spacing constraints when True (default is False).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</section>
<section id="spiral-cicle-std">
<h2>Spiral_Cicle_STD<a class="headerlink" href="#spiral-cicle-std" title="Link to this heading">#</a></h2>
<a class="reference internal image-reference" href="../../../_images/Spiral_Cicle_STD.png"><img alt="../../../_images/Spiral_Cicle_STD.png" class="align-center" src="../../../_images/Spiral_Cicle_STD.png" style="width: 600px;" />
</a>
<dl class="py class">
<dt class="sig sig-object py" id="mxpic.components.primitives.spiral.Spiral_Cicle_STD">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">mxpic.components.primitives.spiral.</span></span><span class="sig-name descname"><span class="pre">Spiral_Cicle_STD</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Dmin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">50</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">width</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">w_port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.45</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">gap</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cycles</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">xs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'strip'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">layer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">Lport</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">res</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rib2strip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port_angle</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">180</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_pins</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sharp_patch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">strict_condition</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#mxpic.components.primitives.spiral.Spiral_Cicle_STD" title="Link to this definition">#</a></dt>
<dd><p>Bases: <a class="reference internal" href="#mxpic.components.primitives.spiral.spiral_circle" title="mxpic.components.primitives.spiral.spiral_circle"><code class="xref py py-class docutils literal notranslate"><span class="pre">spiral_circle</span></code></a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>name</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Nazca cell name (default is None).</p></li>
<li><p><strong>Dmin</strong> (<em>float</em><em>, </em><em>optional</em>) Minimum inner diameter in microns (default is 50).</p></li>
<li><p><strong>width</strong> (<em>float</em><em>, </em><em>optional</em>) Waveguide width throughout the spiral (default is 2).</p></li>
<li><p><strong>w_port</strong> (<em>float</em><em>, </em><em>optional</em>) Output-port width after the final taper (default is 0.45).</p></li>
<li><p><strong>gap</strong> (<em>float</em><em>, </em><em>optional</em>) Spacing between adjacent turns (default is 1).</p></li>
<li><p><strong>cycles</strong> (<em>float</em><em>, </em><em>optional</em>) Number of half-turns (π radians) (default is 20).</p></li>
<li><p><strong>xs</strong> (<em>str</em><em>, </em><em>optional</em>) Cross-section key (default is “strip”).</p></li>
<li><p><strong>layer</strong> (<em>str</em><em> or </em><em>None</em><em>, </em><em>optional</em>) Override polygon layer (default is None).</p></li>
<li><p><strong>Lport</strong> (<em>float</em><em>, </em><em>optional</em>) Length of straight port extensions (default is 10).</p></li>
<li><p><strong>res</strong> (<em>float</em><em>, </em><em>optional</em>) Arc-length sampling step (default is 0.5).</p></li>
<li><p><strong>rib2strip</strong> (<em>bool</em><em>, </em><em>optional</em>) Insert rib-to-strip transitions at the ports (default is True).</p></li>
<li><p><strong>port_angle</strong> (<em>float</em><em>, </em><em>optional</em>) Output bend angle in degrees (default is 180).</p></li>
<li><p><strong>show_pins</strong> (<em>bool</em><em>, </em><em>optional</em>) Draw Nazca stub markers when True (default is False).</p></li>
<li><p><strong>sharp_patch</strong> (<em>bool</em><em>, </em><em>optional</em>) Add chamfer polygons when True (default is True).</p></li>
<li><p><strong>strict_condition</strong> (<em>bool</em><em>, </em><em>optional</em>) Enforce constant-spacing constraints when True (default is False).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</section>
</section>
</article>
<footer class="prev-next-footer d-print-none">
<div class="prev-next-area">
<a class="left-prev"
href="multimode_interferometers.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">mxpic.components.primitives.multimode_interferometers</p>
</div>
</a>
<a class="right-next"
href="../basic.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">mxpic.components.basic</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<dialog id="pst-secondary-sidebar-modal"></dialog>
<div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral">spiral</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral"><code class="docutils literal notranslate"><span class="pre">spiral</span></code></a><ul class="nav section-nav flex-column">
<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral.generate_gds"><code class="docutils literal notranslate"><span class="pre">spiral.generate_gds()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral-rectangle">spiral_rectangle</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_rectangle"><code class="docutils literal notranslate"><span class="pre">spiral_rectangle</span></code></a><ul class="nav section-nav flex-column">
<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_rectangle.generate_gds"><code class="docutils literal notranslate"><span class="pre">spiral_rectangle.generate_gds()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral-rect-std">Spiral_Rect_STD</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.Spiral_Rect_STD"><code class="docutils literal notranslate"><span class="pre">Spiral_Rect_STD</span></code></a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral-circle">spiral_circle</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_circle"><code class="docutils literal notranslate"><span class="pre">spiral_circle</span></code></a><ul class="nav section-nav flex-column">
<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_circle.cell"><code class="docutils literal notranslate"><span class="pre">spiral_circle.cell</span></code></a></li>
<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_circle.generate_gds"><code class="docutils literal notranslate"><span class="pre">spiral_circle.generate_gds()</span></code></a></li>
<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.spiral_circle.opt_euler"><code class="docutils literal notranslate"><span class="pre">spiral_circle.opt_euler()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral-cicle-mm">Spiral_Cicle_MM</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.Spiral_Cicle_MM"><code class="docutils literal notranslate"><span class="pre">Spiral_Cicle_MM</span></code></a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#spiral-cicle-std">Spiral_Cicle_STD</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#mxpic.components.primitives.spiral.Spiral_Cicle_STD"><code class="docutils literal notranslate"><span class="pre">Spiral_Cicle_STD</span></code></a></li>
</ul>
</li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../../_sources/mxpic/components/primitives/spiral.md.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div></div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script defer src="../../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script>
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2026, Qin Yue (PotatoMaxwell).
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.4.7.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1.
</p></div>
</div>
</div>
</footer>
</body>
</html>