6832 lines
244 KiB
HTML
6832 lines
244 KiB
HTML
|
|
|
|||
|
|
<!doctype html>
|
|||
|
|
<html lang="en" class="no-js">
|
|||
|
|
<head>
|
|||
|
|
|
|||
|
|
<meta charset="utf-8">
|
|||
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|||
|
|
|
|||
|
|
<meta name="description" content="Electromagnetic simulation tools">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="canonical" href="https://mpxd.net/docs/meanas/api/waveguides/">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="prev" href="../fdfd/">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="next" href="../fdtd/">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="icon" href="../../assets/images/favicon.png">
|
|||
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<title>waveguides - meanas</title>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="../../css/print-site.css">
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="../../css/print-site-material.css">
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
|
|||
|
|
|
|||
|
|
<link rel="stylesheet" href="../../stylesheets/extra.css">
|
|||
|
|
|
|||
|
|
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</head>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<body dir="ltr">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|||
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|||
|
|
<label class="md-overlay" for="__drawer"></label>
|
|||
|
|
<div data-md-component="skip">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#waveguides" class="md-skip">
|
|||
|
|
Skip to content
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div data-md-component="announce">
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|||
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|||
|
|
<a href="../.." title="meanas" class="md-header__button md-logo" aria-label="meanas" data-md-component="logo">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|||
|
|
</label>
|
|||
|
|
<div class="md-header__title" data-md-component="header-title">
|
|||
|
|
<div class="md-header__ellipsis">
|
|||
|
|
<div class="md-header__topic">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
meanas
|
|||
|
|
</span>
|
|||
|
|
</div>
|
|||
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
waveguides
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<label class="md-header__button md-icon" for="__search">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|||
|
|
</label>
|
|||
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|||
|
|
<label class="md-search__overlay" for="__search"></label>
|
|||
|
|
<div class="md-search__inner" role="search">
|
|||
|
|
<form class="md-search__form" name="search">
|
|||
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|||
|
|
<label class="md-search__icon md-icon" for="__search">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|||
|
|
</label>
|
|||
|
|
<nav class="md-search__options" aria-label="Search">
|
|||
|
|
|
|||
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|||
|
|
</button>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</form>
|
|||
|
|
<div class="md-search__output">
|
|||
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|||
|
|
<div class="md-search-result" data-md-component="search-result">
|
|||
|
|
<div class="md-search-result__meta">
|
|||
|
|
Initializing search
|
|||
|
|
</div>
|
|||
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="md-header__source">
|
|||
|
|
<a href="https://mpxd.net/code/jan/meanas" title="Go to repository" class="md-source" data-md-component="source">
|
|||
|
|
<div class="md-source__icon md-icon">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="md-source__repository">
|
|||
|
|
meanas
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</header>
|
|||
|
|
|
|||
|
|
<div class="md-container" data-md-component="container">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<main class="md-main" data-md-component="main">
|
|||
|
|
<div class="md-main__inner md-grid">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|||
|
|
<div class="md-sidebar__scrollwrap">
|
|||
|
|
<div class="md-sidebar__inner">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|||
|
|
<label class="md-nav__title" for="__drawer">
|
|||
|
|
<a href="../.." title="meanas" class="md-nav__button md-logo" aria-label="meanas" data-md-component="logo">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
meanas
|
|||
|
|
</label>
|
|||
|
|
|
|||
|
|
<div class="md-nav__source">
|
|||
|
|
<a href="https://mpxd.net/code/jan/meanas" title="Go to repository" class="md-source" data-md-component="source">
|
|||
|
|
<div class="md-source__icon md-icon">
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
|
|||
|
|
</div>
|
|||
|
|
<div class="md-source__repository">
|
|||
|
|
meanas
|
|||
|
|
</div>
|
|||
|
|
</a>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../.." class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
Home
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="md-nav__link md-nav__container">
|
|||
|
|
<a href="../" class="md-nav__link ">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
API
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
|
|||
|
|
<span class="md-nav__icon md-icon"></span>
|
|||
|
|
</label>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
|
|||
|
|
<label class="md-nav__title" for="__nav_2">
|
|||
|
|
<span class="md-nav__icon md-icon"></span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
API
|
|||
|
|
|
|||
|
|
|
|||
|
|
</label>
|
|||
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../meanas/" class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
meanas
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../eigensolvers/" class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
eigensolvers
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../fdfd/" class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
fdfd
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item md-nav__item--active">
|
|||
|
|
|
|||
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
waveguides
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-nav__icon md-icon"></span>
|
|||
|
|
</label>
|
|||
|
|
|
|||
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
waveguides
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<label class="md-nav__title" for="__toc">
|
|||
|
|
<span class="md-nav__icon md-icon"></span>
|
|||
|
|
Table of contents
|
|||
|
|
</label>
|
|||
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_2d
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_2d">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> operator_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> operator_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> hxy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> hxy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> h2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> curl_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> curl_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h_err" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> h_err
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e_err" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e_err
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.sensitivity" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> sensitivity
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_modes" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_modes
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.inner_product" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> inner_product
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_3d
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_3d">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_source" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> compute_source
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_overlap_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> compute_overlap_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.expand_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> expand_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_cyl
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_cyl">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.cylindrical_operator" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> cylindrical_operator
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_modes" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_modes
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.linear_wavenumbers" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> linear_wavenumbers
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.e2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.dxes2T" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> dxes2T
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.normalized_fields_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../fdtd/" class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
fdtd
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="../fdmath/" class="md-nav__link">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
|
|||
|
|
fdmath
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</a>
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|||
|
|
<div class="md-sidebar__scrollwrap">
|
|||
|
|
<div class="md-sidebar__inner">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<label class="md-nav__title" for="__toc">
|
|||
|
|
<span class="md-nav__icon md-icon"></span>
|
|||
|
|
Table of contents
|
|||
|
|
</label>
|
|||
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_2d
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_2d">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> operator_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> operator_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> hxy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> hxy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> h2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> curl_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> curl_h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h_err" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> h_err
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e_err" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e_err
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.sensitivity" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> sensitivity
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_modes" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_modes
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.inner_product" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> inner_product
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_3d
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_3d">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_source" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> compute_source
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_overlap_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> compute_overlap_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.expand_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> expand_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> waveguide_cyl
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
<nav class="md-nav" aria-label=" waveguide_cyl">
|
|||
|
|
<ul class="md-nav__list">
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.cylindrical_operator" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> cylindrical_operator
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_modes" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_modes
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_mode" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> solve_mode
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.linear_wavenumbers" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> linear_wavenumbers
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> exy2e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.e2h" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> e2h
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.dxes2T" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> dxes2T
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
<li class="md-nav__item">
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.normalized_fields_e" class="md-nav__link">
|
|||
|
|
<span class="md-ellipsis">
|
|||
|
|
|
|||
|
|
<code class="doc-symbol doc-symbol-toc doc-symbol-function"></code> normalized_fields_e
|
|||
|
|
|
|||
|
|
</span>
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
</nav>
|
|||
|
|
|
|||
|
|
</li>
|
|||
|
|
|
|||
|
|
</ul>
|
|||
|
|
|
|||
|
|
</nav>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="md-content" data-md-component="content">
|
|||
|
|
|
|||
|
|
<article class="md-content__inner md-typeset">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h1 id="waveguides">waveguides<a class="headerlink" href="#waveguides" title="Permanent link">¶</a></h1>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-module">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h2 id="meanas.fdfd.waveguide_2d" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">meanas.fdfd.waveguide_2d</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d" class="headerlink" title="Permanent link">¶</a></h2>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents first">
|
|||
|
|
|
|||
|
|
<p>Operators and helper functions for waveguides with unchanging cross-section.</p>
|
|||
|
|
<p>The propagation direction is chosen to be along the z axis, and all fields
|
|||
|
|
are given an implicit z-dependence of the form <code>exp(-1 * wavenumber * z)</code>.</p>
|
|||
|
|
<p>As the z-dependence is known, all the functions in this file assume a 2D grid
|
|||
|
|
(i.e. <code>dxes = [[[dx_e[0], dx_e[1], ...], [dy_e[0], ...]], [[dx_h[0], ...], [dy_h[0], ...]]]</code>).</p>
|
|||
|
|
<p>===============</p>
|
|||
|
|
<p>Consider Maxwell's equations in continuous space, in the frequency domain. Assuming
|
|||
|
|
a structure with some (x, y) cross-section extending uniformly into the z dimension,
|
|||
|
|
with a diagonal <span class="arithmatex">\(\epsilon\)</span> tensor, we have</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\nabla \times \vec{E}(x, y, z) &= -\imath \omega \mu \vec{H} \\
|
|||
|
|
\nabla \times \vec{H}(x, y, z) &= \imath \omega \epsilon \vec{E} \\
|
|||
|
|
\vec{E}(x,y,z) &= (\vec{E}_t(x, y) + E_z(x, y)\vec{z}) e^{-\imath \beta z} \\
|
|||
|
|
\vec{H}(x,y,z) &= (\vec{H}_t(x, y) + H_z(x, y)\vec{z}) e^{-\imath \beta z} \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Expanding the first two equations into vector components, we get</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{xx} H_x &= \partial_y E_z - \partial_z E_y \\
|
|||
|
|
-\imath \omega \mu_{yy} H_y &= \partial_z E_x - \partial_x E_z \\
|
|||
|
|
-\imath \omega \mu_{zz} H_z &= \partial_x E_y - \partial_y E_x \\
|
|||
|
|
\imath \omega \epsilon_{xx} E_x &= \partial_y H_z - \partial_z H_y \\
|
|||
|
|
\imath \omega \epsilon_{yy} E_y &= \partial_z H_x - \partial_x H_z \\
|
|||
|
|
\imath \omega \epsilon_{zz} E_z &= \partial_x H_y - \partial_y H_x \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Substituting in our expressions for <span class="arithmatex">\(\vec{E}\)</span>, <span class="arithmatex">\(\vec{H}\)</span> and discretizing:</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{xx} H_x &= \tilde{\partial}_y E_z + \imath \beta E_y \\
|
|||
|
|
-\imath \omega \mu_{yy} H_y &= -\imath \beta E_x - \tilde{\partial}_x E_z \\
|
|||
|
|
-\imath \omega \mu_{zz} H_z &= \tilde{\partial}_x E_y - \tilde{\partial}_y E_x \\
|
|||
|
|
\imath \omega \epsilon_{xx} E_x &= \hat{\partial}_y H_z + \imath \beta H_y \\
|
|||
|
|
\imath \omega \epsilon_{yy} E_y &= -\imath \beta H_x - \hat{\partial}_x H_z \\
|
|||
|
|
\imath \omega \epsilon_{zz} E_z &= \hat{\partial}_x H_y - \hat{\partial}_y H_x \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Rewrite the last three equations as</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\imath \beta H_y &= \imath \omega \epsilon_{xx} E_x - \hat{\partial}_y H_z \\
|
|||
|
|
\imath \beta H_x &= -\imath \omega \epsilon_{yy} E_y - \hat{\partial}_x H_z \\
|
|||
|
|
\imath \omega E_z &= \frac{1}{\epsilon_{zz}} \hat{\partial}_x H_y - \frac{1}{\epsilon_{zz}} \hat{\partial}_y H_x \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Now apply <span class="arithmatex">\(\imath \beta \tilde{\partial}_x\)</span> to the last equation,
|
|||
|
|
then substitute in for <span class="arithmatex">\(\imath \beta H_x\)</span> and <span class="arithmatex">\(\imath \beta H_y\)</span>:</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\imath \beta \tilde{\partial}_x \imath \omega E_z &= \imath \beta \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_x H_y
|
|||
|
|
- \imath \beta \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_y H_x \\
|
|||
|
|
&= \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_x ( \imath \omega \epsilon_{xx} E_x - \hat{\partial}_y H_z)
|
|||
|
|
- \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_y (-\imath \omega \epsilon_{yy} E_y - \hat{\partial}_x H_z) \\
|
|||
|
|
&= \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_x ( \imath \omega \epsilon_{xx} E_x)
|
|||
|
|
- \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_y (-\imath \omega \epsilon_{yy} E_y) \\
|
|||
|
|
\imath \beta \tilde{\partial}_x E_z &= \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \tilde{\partial}_x \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y) \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>With a similar approach (but using <span class="arithmatex">\(\imath \beta \tilde{\partial}_y\)</span> instead), we can get</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\imath \beta \tilde{\partial}_y E_z &= \tilde{\partial}_y \frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \tilde{\partial}_y \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y) \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>We can combine this equation for <span class="arithmatex">\(\imath \beta \tilde{\partial}_y E_z\)</span> with
|
|||
|
|
the unused <span class="arithmatex">\(\imath \omega \mu_{xx} H_x\)</span> and <span class="arithmatex">\(\imath \omega \mu_{yy} H_y\)</span> equations to get</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{xx} \imath \beta H_x &= -\beta^2 E_y + \imath \beta \tilde{\partial}_y E_z \\
|
|||
|
|
-\imath \omega \mu_{xx} \imath \beta H_x &= -\beta^2 E_y + \tilde{\partial}_y (
|
|||
|
|
\frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y)
|
|||
|
|
)\\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>and</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{yy} \imath \beta H_y &= \beta^2 E_x - \imath \beta \tilde{\partial}_x E_z \\
|
|||
|
|
-\imath \omega \mu_{yy} \imath \beta H_y &= \beta^2 E_x - \tilde{\partial}_x (
|
|||
|
|
\frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y)
|
|||
|
|
)\\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>However, based on our rewritten equation for <span class="arithmatex">\(\imath \beta H_x\)</span> and the so-far unused
|
|||
|
|
equation for <span class="arithmatex">\(\imath \omega \mu_{zz} H_z\)</span> we can also write</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{xx} (\imath \beta H_x) &= -\imath \omega \mu_{xx} (-\imath \omega \epsilon_{yy} E_y - \hat{\partial}_x H_z) \\
|
|||
|
|
&= -\omega^2 \mu_{xx} \epsilon_{yy} E_y + \imath \omega \mu_{xx} \hat{\partial}_x (
|
|||
|
|
\frac{1}{-\imath \omega \mu_{zz}} (\tilde{\partial}_x E_y - \tilde{\partial}_y E_x)) \\
|
|||
|
|
&= -\omega^2 \mu_{xx} \epsilon_{yy} E_y
|
|||
|
|
-\mu_{xx} \hat{\partial}_x \frac{1}{\mu_{zz}} (\tilde{\partial}_x E_y - \tilde{\partial}_y E_x) \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>and, similarly,</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{yy} (\imath \beta H_y) &= \omega^2 \mu_{yy} \epsilon_{xx} E_x
|
|||
|
|
+\mu_{yy} \hat{\partial}_y \frac{1}{\mu_{zz}} (\tilde{\partial}_x E_y - \tilde{\partial}_y E_x) \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>By combining both pairs of expressions, we get</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\beta^2 E_x - \tilde{\partial}_x (
|
|||
|
|
\frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y)
|
|||
|
|
) &= \omega^2 \mu_{yy} \epsilon_{xx} E_x
|
|||
|
|
+\mu_{yy} \hat{\partial}_y \frac{1}{\mu_{zz}} (\tilde{\partial}_x E_y - \tilde{\partial}_y E_x) \\
|
|||
|
|
-\beta^2 E_y + \tilde{\partial}_y (
|
|||
|
|
\frac{1}{\epsilon_{zz}} \hat{\partial}_x (\epsilon_{xx} E_x)
|
|||
|
|
+ \frac{1}{\epsilon_{zz}} \hat{\partial}_y (\epsilon_{yy} E_y)
|
|||
|
|
) &= -\omega^2 \mu_{xx} \epsilon_{yy} E_y
|
|||
|
|
-\mu_{xx} \hat{\partial}_x \frac{1}{\mu_{zz}} (\tilde{\partial}_x E_y - \tilde{\partial}_y E_x) \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Using these, we can construct the eigenvalue problem</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\beta^2 \begin{bmatrix} E_x \\
|
|||
|
|
E_y \end{bmatrix} =
|
|||
|
|
(\omega^2 \begin{bmatrix} \mu_{yy} \epsilon_{xx} & 0 \\
|
|||
|
|
0 & \mu_{xx} \epsilon_{yy} \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} -\mu_{yy} \hat{\partial}_y \\
|
|||
|
|
\mu_{xx} \hat{\partial}_x \end{bmatrix} \mu_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} -\tilde{\partial}_y & \tilde{\partial}_x \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} \tilde{\partial}_x \\
|
|||
|
|
\tilde{\partial}_y \end{bmatrix} \epsilon_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} \hat{\partial}_x \epsilon_{xx} & \hat{\partial}_y \epsilon_{yy} \end{bmatrix})
|
|||
|
|
\begin{bmatrix} E_x \\
|
|||
|
|
E_y \end{bmatrix}
|
|||
|
|
\]</div>
|
|||
|
|
<p>In the literature, <span class="arithmatex">\(\beta\)</span> is usually used to denote the lossless/real part of the propagation constant,
|
|||
|
|
but in <code>meanas</code> it is allowed to be complex.</p>
|
|||
|
|
<p>An equivalent eigenvalue problem can be formed using the <span class="arithmatex">\(H_x\)</span> and <span class="arithmatex">\(H_y\)</span> fields, if those are more convenient.</p>
|
|||
|
|
<p>Note that <span class="arithmatex">\(E_z\)</span> was never discretized, so <span class="arithmatex">\(\beta\)</span> will need adjustment to account for numerical dispersion
|
|||
|
|
if the result is introduced into a space with a discretized z-axis.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-children">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.operator_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">operator_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">operator_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Waveguide operator of the form</p>
|
|||
|
|
<div class="highlight"><pre><span></span><code>omega**2 * mu * epsilon +
|
|||
|
|
mu * [[-Dy], [Dx]] / mu * [-Dy, Dx] +
|
|||
|
|
[[Dx], [Dy]] / epsilon * [Dx, Dy] * epsilon
|
|||
|
|
</code></pre></div>
|
|||
|
|
<p>for use with a field vector of the form <code>cat([E_x, E_y])</code>.</p>
|
|||
|
|
<p>More precisely, the operator is</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\omega^2 \begin{bmatrix} \mu_{yy} \epsilon_{xx} & 0 \\
|
|||
|
|
0 & \mu_{xx} \epsilon_{yy} \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} -\mu_{yy} \hat{\partial}_y \\
|
|||
|
|
\mu_{xx} \hat{\partial}_x \end{bmatrix} \mu_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} -\tilde{\partial}_y & \tilde{\partial}_x \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} \tilde{\partial}_x \\
|
|||
|
|
\tilde{\partial}_y \end{bmatrix} \epsilon_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} \hat{\partial}_x \epsilon_{xx} & \hat{\partial}_y \epsilon_{yy} \end{bmatrix}
|
|||
|
|
\]</div>
|
|||
|
|
<p><span class="arithmatex">\(\tilde{\partial}_x\)</span> and <span class="arithmatex">\(\hat{\partial}_x\)</span> are the forward and backward derivatives along x,
|
|||
|
|
and each <span class="arithmatex">\(\epsilon_{xx}\)</span>, <span class="arithmatex">\(\mu_{yy}\)</span>, etc. is a diagonal matrix containing the vectorized material
|
|||
|
|
property distribution.</p>
|
|||
|
|
<p>This operator can be used to form an eigenvalue problem of the form
|
|||
|
|
<code>operator_e(...) @ [E_x, E_y] = wavenumber**2 * [E_x, E_y]</code></p>
|
|||
|
|
<p>which can then be solved for the eigenmodes of the system (an <code>exp(-i * wavenumber * z)</code>
|
|||
|
|
z-dependence is assumed for the fields).</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.operator_h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">operator_h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.operator_h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">operator_h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Waveguide operator of the form</p>
|
|||
|
|
<div class="highlight"><pre><span></span><code>omega**2 * epsilon * mu +
|
|||
|
|
epsilon * [[-Dy], [Dx]] / epsilon * [-Dy, Dx] +
|
|||
|
|
[[Dx], [Dy]] / mu * [Dx, Dy] * mu
|
|||
|
|
</code></pre></div>
|
|||
|
|
<p>for use with a field vector of the form <code>cat([H_x, H_y])</code>.</p>
|
|||
|
|
<p>More precisely, the operator is</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\omega^2 \begin{bmatrix} \epsilon_{yy} \mu_{xx} & 0 \\
|
|||
|
|
0 & \epsilon_{xx} \mu_{yy} \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} -\epsilon_{yy} \tilde{\partial}_y \\
|
|||
|
|
\epsilon_{xx} \tilde{\partial}_x \end{bmatrix} \epsilon_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} -\hat{\partial}_y & \hat{\partial}_x \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} \hat{\partial}_x \\
|
|||
|
|
\hat{\partial}_y \end{bmatrix} \mu_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} \tilde{\partial}_x \mu_{xx} & \tilde{\partial}_y \mu_{yy} \end{bmatrix}
|
|||
|
|
\]</div>
|
|||
|
|
<p><span class="arithmatex">\(\tilde{\partial}_x\)</span> and <span class="arithmatex">\(\hat{\partial}_x\)</span> are the forward and backward derivatives along x,
|
|||
|
|
and each <span class="arithmatex">\(\epsilon_{xx}\)</span>, <span class="arithmatex">\(\mu_{yy}\)</span>, etc. is a diagonal matrix containing the vectorized material
|
|||
|
|
property distribution.</p>
|
|||
|
|
<p>This operator can be used to form an eigenvalue problem of the form
|
|||
|
|
<code>operator_h(...) @ [H_x, H_y] = wavenumber**2 * [H_x, H_y]</code></p>
|
|||
|
|
<p>which can then be solved for the eigenmodes of the system (an <code>exp(-i * wavenumber * z)</code>
|
|||
|
|
z-dependence is assumed for the fields).</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.normalized_fields_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">normalized_fields_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">normalized_fields_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e_xy</span><span class="p">:</span> <span class="n">vcfdfield2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">prop_phase</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">vcfdslice_t</span><span class="p">,</span> <span class="n">vcfdslice_t</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a vector <code>e_xy</code> containing the vectorized E_x and E_y fields,
|
|||
|
|
returns normalized, vectorized E and H fields for the system.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e_xy</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdfield2 (meanas.fdmath.vcfdfield2)" href="../fdmath/#meanas.fdmath.types.vcfdfield2">vcfdfield2</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vector containing E_x and E_y fields</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>.
|
|||
|
|
It should satisfy <code>operator_e() @ e_xy == wavenumber**2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>prop_phase</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Phase shift <code>(dz * corrected_wavenumber)</code> over 1 cell in propagation direction.
|
|||
|
|
Default 0 (continuous propagation direction, i.e. dz->0).</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>0</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>(e, h)</code>, where each field is vectorized, normalized,</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>and contains all three vector components.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p><code>e_xy</code> is only the transverse electric eigenvector. This helper first
|
|||
|
|
reconstructs the full three-component <code>E</code> and <code>H</code> fields with <code>exy2e(...)</code>
|
|||
|
|
and <code>exy2h(...)</code>, then normalizes them to unit forward power using
|
|||
|
|
<code>_normalized_fields(...)</code>.</p>
|
|||
|
|
<p>The normalization target is</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\Re\left[\mathrm{inner\_product}(e, h, \mathrm{conj\_h}=True)\right] = 1,
|
|||
|
|
\]</div>
|
|||
|
|
<p>so the returned fields represent a unit-power forward mode under the
|
|||
|
|
discrete Yee-grid Poynting inner product.</p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.normalized_fields_h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">normalized_fields_h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.normalized_fields_h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">normalized_fields_h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">h_xy</span><span class="p">:</span> <span class="n">vcfdfield2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">prop_phase</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">vcfdslice_t</span><span class="p">,</span> <span class="n">vcfdslice_t</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a vector <code>h_xy</code> containing the vectorized H_x and H_y fields,
|
|||
|
|
returns normalized, vectorized E and H fields for the system.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>h_xy</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdfield2 (meanas.fdmath.vcfdfield2)" href="../fdmath/#meanas.fdmath.types.vcfdfield2">vcfdfield2</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vector containing H_x and H_y fields</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>.
|
|||
|
|
It should satisfy <code>operator_h() @ h_xy == wavenumber**2 * h_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>prop_phase</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Phase shift <code>(dz * corrected_wavenumber)</code> over 1 cell in propagation direction.
|
|||
|
|
Default 0 (continuous propagation direction, i.e. dz->0).</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>0</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>(e, h)</code>, where each field is vectorized, normalized,</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>and contains all three vector components.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p>This is the <code>H_x/H_y</code> analogue of <code>normalized_fields_e(...)</code>. The final
|
|||
|
|
normalized mode should describe the same physical solution, but because
|
|||
|
|
the overall complex phase and sign are chosen heuristically,
|
|||
|
|
<code>normalized_fields_e(...)</code> and <code>normalized_fields_h(...)</code> need not return
|
|||
|
|
identical representatives for nearly symmetric modes.</p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.exy2h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">exy2h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">exy2h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>e_xy</code> containing the vectorized E_x and E_y fields,
|
|||
|
|
into a vectorized H containing all three H components</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>.
|
|||
|
|
It should satisfy <code>operator_e() @ e_xy == wavenumber**2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.hxy2e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">hxy2e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">hxy2e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>h_xy</code> containing the vectorized H_x and H_y fields,
|
|||
|
|
into a vectorized E containing all three E components</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>.
|
|||
|
|
It should satisfy <code>operator_h() @ h_xy == wavenumber**2 * h_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.hxy2h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">hxy2h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.hxy2h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">hxy2h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>h_xy</code> containing the vectorized H_x and H_y fields,
|
|||
|
|
into a vectorized H containing all three H components</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>.
|
|||
|
|
It should satisfy <code>operator_h() @ h_xy == wavenumber**2 * h_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.exy2e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">exy2e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.exy2e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">exy2e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>e_xy</code> containing the vectorized E_x and E_y fields,
|
|||
|
|
into a vectorized E containing all three E components</p>
|
|||
|
|
<p>From the operator derivation (see module docs), we have</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\imath \omega \epsilon_{zz} E_z = \hat{\partial}_x H_y - \hat{\partial}_y H_x \\
|
|||
|
|
\]</div>
|
|||
|
|
<p>as well as the intermediate equations</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
\imath \beta H_y &= \imath \omega \epsilon_{xx} E_x - \hat{\partial}_y H_z \\
|
|||
|
|
\imath \beta H_x &= -\imath \omega \epsilon_{yy} E_y - \hat{\partial}_x H_z \\
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>Combining these, we get</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
E_z &= \frac{1}{- \omega \beta \epsilon_{zz}} ((
|
|||
|
|
\hat{\partial}_y \hat{\partial}_x H_z
|
|||
|
|
-\hat{\partial}_x \hat{\partial}_y H_z)
|
|||
|
|
+ \imath \omega (\hat{\partial}_x \epsilon_{xx} E_x + \hat{\partial}_y \epsilon{yy} E_y))
|
|||
|
|
&= \frac{1}{\imath \beta \epsilon_{zz}} (\hat{\partial}_x \epsilon_{xx} E_x + \hat{\partial}_y \epsilon{yy} E_y)
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code>
|
|||
|
|
It should satisfy <code>operator_e() @ e_xy == wavenumber**2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.e2h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">e2h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e2h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">e2h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Returns an operator which, when applied to a vectorized E eigenfield, produces
|
|||
|
|
the vectorized H eigenfield slice.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.h2e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">h2e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h2e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">h2e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Returns an operator which, when applied to a vectorized H eigenfield, produces
|
|||
|
|
the vectorized E eigenfield slice.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.curl_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">curl_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">curl_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Discretized curl operator for use with the waveguide E field slice.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.curl_h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">curl_h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.curl_h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">curl_h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Discretized curl operator for use with the waveguide H field slice.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.h_err" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">h_err</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.h_err" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">h_err</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">h</span><span class="p">:</span> <span class="n">vcfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Calculates the relative error in the H field</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>h</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdslice (meanas.fdmath.vcfdslice)" href="../fdmath/#meanas.fdmath.types.vcfdslice">vcfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized H field</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Relative error <code>norm(A_h @ h) / norm(h)</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.e_err" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">e_err</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.e_err" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">e_err</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e</span><span class="p">:</span> <span class="n">vcfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Calculates the relative error in the E field</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdslice (meanas.fdmath.vcfdslice)" href="../fdmath/#meanas.fdmath.types.vcfdslice">vcfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized E field</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have z-dependence of <code>exp(-i * wavenumber * z)</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Relative error <code>norm(A_e @ e) / norm(e)</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.sensitivity" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">sensitivity</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.sensitivity" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">sensitivity</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e_norm</span><span class="p">:</span> <span class="n">vcfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">h_norm</span><span class="p">:</span> <span class="n">vcfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="p">)</span> <span class="o">-></span> <span class="n">vcfdslice_t</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a waveguide structure (<code>dxes</code>, <code>epsilon</code>, <code>mu</code>) and mode fields
|
|||
|
|
(<code>e_norm</code>, <code>h_norm</code>, <code>wavenumber</code>, <code>omega</code>), calculates the sensitivity of the wavenumber
|
|||
|
|
<span class="arithmatex">\(\beta\)</span> to changes in the dielectric structure <span class="arithmatex">\(\epsilon\)</span>.</p>
|
|||
|
|
<p>The output is a vector of the same size as <code>vec(epsilon)</code>, with each element specifying the
|
|||
|
|
sensitivity of <code>wavenumber</code> to changes in the corresponding element in <code>vec(epsilon)</code>, i.e.</p>
|
|||
|
|
<div class="arithmatex">\[sens_{i} = \frac{\partial\beta}{\partial\epsilon_i}\]</div>
|
|||
|
|
<p>An adjoint approach is used to calculate the sensitivity; the derivation is provided here:</p>
|
|||
|
|
<p>Starting with the eigenvalue equation</p>
|
|||
|
|
<div class="arithmatex">\[\beta^2 E_{xy} = A_E E_{xy}\]</div>
|
|||
|
|
<p>where <span class="arithmatex">\(A_E\)</span> is the waveguide operator from <code>operator_e()</code>, and <span class="arithmatex">\(E_{xy} = \begin{bmatrix} E_x \\
|
|||
|
|
E_y \end{bmatrix}\)</span>,
|
|||
|
|
we can differentiate with respect to one of the <span class="arithmatex">\(\epsilon\)</span> elements (i.e. at one Yee grid point), <span class="arithmatex">\(\epsilon_i\)</span>:</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
(2 \beta) \partial_{\epsilon_i}(\beta) E_{xy} + \beta^2 \partial_{\epsilon_i} E_{xy}
|
|||
|
|
= \partial_{\epsilon_i}(A_E) E_{xy} + A_E \partial_{\epsilon_i} E_{xy}
|
|||
|
|
\]</div>
|
|||
|
|
<p>We then multiply by <span class="arithmatex">\(H_{yx}^\star = \begin{bmatrix}H_y^\star \\ -H_x^\star \end{bmatrix}\)</span> from the left:</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
(2 \beta) \partial_{\epsilon_i}(\beta) H_{yx}^\star E_{xy} + \beta^2 H_{yx}^\star \partial_{\epsilon_i} E_{xy}
|
|||
|
|
= H_{yx}^\star \partial_{\epsilon_i}(A_E) E_{xy} + H_{yx}^\star A_E \partial_{\epsilon_i} E_{xy}
|
|||
|
|
\]</div>
|
|||
|
|
<p>However, <span class="arithmatex">\(H_{yx}^\star\)</span> is actually a left-eigenvector of <span class="arithmatex">\(A_E\)</span>. This can be verified by inspecting
|
|||
|
|
the form of <code>operator_h</code> (<span class="arithmatex">\(A_H\)</span>) and comparing its conjugate transpose to <code>operator_e</code> (<span class="arithmatex">\(A_E\)</span>). Also, note
|
|||
|
|
<span class="arithmatex">\(H_{yx}^\star \cdot E_{xy} = H^\star \times E\)</span> recalls the mode orthogonality relation. See doi:10.5194/ars-9-85-201
|
|||
|
|
for a similar approach. Therefore,</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
H_{yx}^\star A_E \partial_{\epsilon_i} E_{xy} = \beta^2 H_{yx}^\star \partial_{\epsilon_i} E_{xy}
|
|||
|
|
\]</div>
|
|||
|
|
<p>and we can simplify to</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\partial_{\epsilon_i}(\beta)
|
|||
|
|
= \frac{1}{2 \beta} \frac{H_{yx}^\star \partial_{\epsilon_i}(A_E) E_{xy} }{H_{yx}^\star E_{xy}}
|
|||
|
|
\]</div>
|
|||
|
|
<p>This expression can be quickly calculated for all <span class="arithmatex">\(i\)</span> by writing out the various terms of
|
|||
|
|
<span class="arithmatex">\(\partial_{\epsilon_i} A_E\)</span> and recognizing that the vector-matrix-vector products (i.e. scalars)
|
|||
|
|
<span class="arithmatex">\(sens_i = \vec{v}_{left} \partial_{\epsilon_i} (\epsilon_{xyz}) \vec{v}_{right}\)</span>, indexed by <span class="arithmatex">\(i\)</span>, can be expressed as
|
|||
|
|
elementwise multiplications <span class="arithmatex">\(\vec{sens} = \vec{v}_{left} \star \vec{v}_{right}\)</span></p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e_norm</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdslice (meanas.fdmath.vcfdslice)" href="../fdmath/#meanas.fdmath.types.vcfdslice">vcfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Normalized, vectorized E_xyz field for the mode. E.g. as returned by <code>normalized_fields_e</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>h_norm</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdslice (meanas.fdmath.vcfdslice)" href="../fdmath/#meanas.fdmath.types.vcfdslice">vcfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Normalized, vectorized H_xyz field for the mode. E.g. as returned by <code>normalized_fields_e</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation constant for the mode. The z-axis is assumed to be continuous (i.e. without numerical dispersion).</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.solve_modes" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">solve_modes</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_modes" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">solve_modes</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">mode_numbers</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mode_margin</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">],</span> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">]</span>
|
|||
|
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a 2D region, attempts to solve for the eigenmode with the specified mode numbers.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_numbers</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="collections.abc.Sequence">Sequence</span>[<span title="int">int</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>List of 0-indexed mode numbers to solve for</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Angular frequency of the simulation</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Dielectric constant</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Magnetic permeability (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_margin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The eigensolver will actually solve for <code>(max(mode_number) + mode_margin)</code>
|
|||
|
|
modes, but only return the target mode. Increasing this value can improve the solver's
|
|||
|
|
ability to find the correct mode. Default 2.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>2</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th> <th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td><code>e_xys</code></td> <td>
|
|||
|
|
<code><span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complex128">complex128</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>NDArray of vfdfield_t specifying fields. First dimension is mode number.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td><code>wavenumbers</code></td> <td>
|
|||
|
|
<code><span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complex128">complex128</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>list of wavenumbers</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.solve_mode" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">solve_mode</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.solve_mode" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">solve_mode</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">mode_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">vcfdfield2_t</span><span class="p">,</span> <span class="nb">complex</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Wrapper around <code>solve_modes()</code> that solves for a single mode.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_number</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>0-indexed mode number to solve for</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>*args</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="typing.Any">Any</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>passed to <code>solve_modes()</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>()</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>**kwargs</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="typing.Any">Any</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>passed to <code>solve_modes()</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>{}</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="tuple">tuple</span>[<span title="meanas.fdmath.vcfdfield2_t">vcfdfield2_t</span>, <span title="complex">complex</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>(e_xy, wavenumber)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_2d.inner_product" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">inner_product</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_2d.inner_product" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">inner_product</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e1</span><span class="p">:</span> <span class="n">vcfdfield2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">h2</span><span class="p">:</span> <span class="n">vcfdfield2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">prop_phase</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">conj_h</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">trapezoid</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">complex</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Compute the discrete waveguide overlap / Poynting inner product.</p>
|
|||
|
|
<p>This is the 2D transverse integral corresponding to the time-averaged
|
|||
|
|
longitudinal Poynting flux,</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\frac{1}{2}\int (E_x H_y - E_y H_x) \, dx \, dy
|
|||
|
|
\]</div>
|
|||
|
|
<p>with the Yee-grid staggering and optional propagation-phase adjustment used
|
|||
|
|
by the waveguide helpers in this module.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e1</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdfield2 (meanas.fdmath.vcfdfield2)" href="../fdmath/#meanas.fdmath.types.vcfdfield2">vcfdfield2</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized electric field, typically from <code>exy2e(...)</code> or
|
|||
|
|
<code>normalized_fields_e(...)</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>h2</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdfield2 (meanas.fdmath.vcfdfield2)" href="../fdmath/#meanas.fdmath.types.vcfdfield2">vcfdfield2</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic field, typically from <code>hxy2h(...)</code>,
|
|||
|
|
<code>exy2h(...)</code>, or one of the normalization helpers.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Two-dimensional Yee-grid spacing lists <code>[dx_e, dx_h]</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>prop_phase</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Phase advance over one propagation cell. This is used to
|
|||
|
|
shift the H field into the same longitudinal reference plane as the
|
|||
|
|
E field.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>0</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>conj_h</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="bool">bool</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Whether to conjugate <code>h2</code> before forming the overlap. Use
|
|||
|
|
<code>True</code> for the usual time-averaged power normalization.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>False</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>trapezoid</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="bool">bool</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Whether to use trapezoidal quadrature instead of the default
|
|||
|
|
rectangular Yee-cell sum.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>False</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Complex overlap / longitudinal power integral.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-module">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h2 id="meanas.fdfd.waveguide_3d" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">meanas.fdfd.waveguide_3d</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d" class="headerlink" title="Permanent link">¶</a></h2>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents first">
|
|||
|
|
|
|||
|
|
<p>Tools for working with waveguide modes in 3D domains.</p>
|
|||
|
|
<p>This module relies heavily on <code>waveguide_2d</code> and mostly just transforms
|
|||
|
|
its parameters into 2D equivalents and expands the results back into 3D.</p>
|
|||
|
|
<p>The intended workflow is:</p>
|
|||
|
|
<ol>
|
|||
|
|
<li>Select a single-cell slice normal to the propagation axis.</li>
|
|||
|
|
<li>Solve the corresponding 2D mode problem with <code>solve_mode(...)</code>.</li>
|
|||
|
|
<li>Turn that mode into a one-sided source with <code>compute_source(...)</code>.</li>
|
|||
|
|
<li>Build an overlap window with <code>compute_overlap_e(...)</code> for port readout.</li>
|
|||
|
|
</ol>
|
|||
|
|
<p><code>polarity</code> is part of the public convention throughout this module:</p>
|
|||
|
|
<ul>
|
|||
|
|
<li><code>+1</code> means forward propagation toward increasing index along <code>axis</code></li>
|
|||
|
|
<li><code>-1</code> means backward propagation toward decreasing index along <code>axis</code></li>
|
|||
|
|
</ul>
|
|||
|
|
<p>That same convention controls which side of the selected slice is used for the
|
|||
|
|
overlap window and how the expanded field is phased.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-children">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_3d.solve_mode" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">solve_mode</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.solve_mode" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">solve_mode</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">mode_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">polarity</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">slices</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">slice</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">fdfield</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">fdfield</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">complex</span> <span class="o">|</span> <span class="n">NDArray</span><span class="p">[</span><span class="n">complexfloating</span><span class="p">]]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a 3D grid, selects a slice from the grid and attempts to
|
|||
|
|
solve for an eigenmode propagating through that slice.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_number</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Number of the mode, 0-indexed</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Angular frequency of the simulation</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists_t)" href="../fdmath/#meanas.fdmath.types.dx_lists_t">dx_lists_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>axis</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation axis (0=x, 1=y, 2=z)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>polarity</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation direction (+1 for +ve, -1 for -ve)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>slices</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="collections.abc.Sequence">Sequence</span>[<span title="slice">slice</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>epsilon[tuple(slices)]</code> is used to select the portion of the grid to use
|
|||
|
|
as the waveguide cross-section. <code>slices[axis]</code> must select exactly one item.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" fdfield (meanas.fdmath.fdfield)" href="../fdmath/#meanas.fdmath.types.fdfield">fdfield</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Dielectric constant</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" fdfield (meanas.fdmath.fdfield)" href="../fdmath/#meanas.fdmath.types.fdfield">fdfield</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Magnetic permeability (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="dict">dict</span>[<span title="str">str</span>, <span title="complex">complex</span> | <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complexfloating">complexfloating</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Dictionary containing:</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="dict">dict</span>[<span title="str">str</span>, <span title="complex">complex</span> | <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complexfloating">complexfloating</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<ul>
|
|||
|
|
<li><code>E</code>: full-grid electric field for the solved mode</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="dict">dict</span>[<span title="str">str</span>, <span title="complex">complex</span> | <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complexfloating">complexfloating</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<ul>
|
|||
|
|
<li><code>H</code>: full-grid magnetic field for the solved mode</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="dict">dict</span>[<span title="str">str</span>, <span title="complex">complex</span> | <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complexfloating">complexfloating</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<ul>
|
|||
|
|
<li><code>wavenumber</code>: propagation constant corrected for the discretized
|
|||
|
|
propagation axis</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="dict">dict</span>[<span title="str">str</span>, <span title="complex">complex</span> | <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complexfloating">complexfloating</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<ul>
|
|||
|
|
<li><code>wavenumber_2d</code>: propagation constant of the reduced 2D eigenproblem</li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p>The returned fields are normalized through the <code>waveguide_2d</code>
|
|||
|
|
normalization convention before being expanded back to 3D.</p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_3d.compute_source" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">compute_source</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_source" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">compute_source</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">E</span><span class="p">:</span> <span class="n">cfdfield</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">polarity</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">slices</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">slice</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">fdfield</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">fdfield</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="p">)</span> <span class="o">-></span> <span class="n">cfdfield_t</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given an eigenmode obtained by <code>solve_mode</code>, returns the current source distribution
|
|||
|
|
necessary to position a unidirectional source at the slice location.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>E</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" cfdfield (meanas.fdmath.cfdfield)" href="../fdmath/#meanas.fdmath.types.cfdfield">cfdfield</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>E-field of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Angular frequency of the simulation</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists_t)" href="../fdmath/#meanas.fdmath.types.dx_lists_t">dx_lists_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>axis</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation axis (0=x, 1=y, 2=z)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>polarity</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation direction (+1 for +ve, -1 for -ve)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>slices</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="collections.abc.Sequence">Sequence</span>[<span title="slice">slice</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>epsilon[tuple(slices)]</code> is used to select the portion of the grid to use
|
|||
|
|
as the waveguide cross-section. <code>slices[axis]</code> should select only one item.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" fdfield (meanas.fdmath.fdfield)" href="../fdmath/#meanas.fdmath.types.fdfield">fdfield</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Magnetic permeability (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.cfdfield_t">cfdfield_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>J</code> distribution for a one-sided electric-current source.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p>The source is built from the expanded mode field and a boundary-source
|
|||
|
|
operator. The resulting current is intended to be injected with the
|
|||
|
|
same sign convention used elsewhere in the package:</p>
|
|||
|
|
<p><code>E -= dt * J / epsilon</code></p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_3d.compute_overlap_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">compute_overlap_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.compute_overlap_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">compute_overlap_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">E</span><span class="p">:</span> <span class="n">cfdfield_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">polarity</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">slices</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">slice</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="p">)</span> <span class="o">-></span> <span class="n">cfdfield_t</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Build an overlap field for projecting another 3D electric field onto a mode.</p>
|
|||
|
|
<p>The returned field is intended for the discrete overlap expression</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\sum \mathrm{overlap\_e} \; E_\mathrm{other}^*
|
|||
|
|
\]</div>
|
|||
|
|
<p>where the sum is over the full Yee-grid field storage.</p>
|
|||
|
|
<p>The construction uses a two-cell window immediately upstream of the selected
|
|||
|
|
slice:</p>
|
|||
|
|
<ul>
|
|||
|
|
<li>for <code>polarity=+1</code>, the two cells just before <code>slices[axis].start</code></li>
|
|||
|
|
<li>for <code>polarity=-1</code>, the two cells just after <code>slices[axis].stop</code></li>
|
|||
|
|
</ul>
|
|||
|
|
<p>The window is clipped to the simulation domain if necessary. A clipped but
|
|||
|
|
non-empty window raises <code>RuntimeWarning</code>; an empty window raises
|
|||
|
|
<code>ValueError</code>.</p>
|
|||
|
|
<p>The derivation below assumes reflection symmetry and the standard waveguide
|
|||
|
|
overlap relation involving</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\int ((E \times H_\mathrm{mode}) + (E_\mathrm{mode} \times H)) \cdot dn.
|
|||
|
|
\]</div>
|
|||
|
|
<p>E x H_mode + E_mode x H
|
|||
|
|
-> Ex Hmy - EyHmx + Emx Hy - Emy Hx (Z-prop)
|
|||
|
|
Ex we/B Emx + Ex i/B dy Hmz - Ey (-we/B Emy) - Ey i/B dx Hmz
|
|||
|
|
we/B (Ex Emx + Ey Emy) + i/B (Ex dy Hmz - Ey dx Hmz)
|
|||
|
|
we/B (Ex Emx + Ey Emy) + i/B (Ex dy (dx Emy - dy Emx) - Ey dx (dx Emy - dy Emx))
|
|||
|
|
we/B (Ex Emx + Ey Emy) + i/B (Ex dy dx Emy - Ex dy dy Emx - Ey dx dx Emy - Ey dx dy Emx)</p>
|
|||
|
|
<p>Ex j/wu (-jB Emx - dx Emz) - Ey j/wu (dy Emz + jB Emy)
|
|||
|
|
B/wu (Ex Emx + Ey Emy) - j/wu (Ex dx Emz + Ey dy Emz)</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>E</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.cfdfield_t">cfdfield_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>E-field of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists_t)" href="../fdmath/#meanas.fdmath.types.dx_lists_t">dx_lists_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>axis</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation axis (0=x, 1=y, 2=z)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>polarity</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation direction (+1 for +ve, -1 for -ve)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>slices</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="collections.abc.Sequence">Sequence</span>[<span title="slice">slice</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>epsilon[tuple(slices)]</code> is used to select the portion of the grid to use
|
|||
|
|
as the waveguide cross-section. slices[axis] should select only one item.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.cfdfield_t">cfdfield_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>overlap_e</code> normalized so that <code>numpy.sum(overlap_e * E.conj()) == 1</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.cfdfield_t">cfdfield_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>over the retained overlap window.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_3d.expand_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">expand_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_3d.expand_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">expand_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">E</span><span class="p">:</span> <span class="n">cfdfield</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">axis</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">polarity</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">slices</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">slice</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="n">cfdfield_t</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given an eigenmode obtained by <code>solve_mode</code>, expands the E-field from the 2D
|
|||
|
|
slice where the mode was calculated to the entire domain (along the propagation
|
|||
|
|
axis). This assumes the epsilon cross-section remains constant throughout the
|
|||
|
|
entire domain; it is up to the caller to truncate the expansion to any regions
|
|||
|
|
where it is valid.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>E</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" cfdfield (meanas.fdmath.cfdfield)" href="../fdmath/#meanas.fdmath.types.cfdfield">cfdfield</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>E-field of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber of the mode</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists_t)" href="../fdmath/#meanas.fdmath.types.dx_lists_t">dx_lists_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>axis</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation axis (0=x, 1=y, 2=z)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>polarity</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Propagation direction (+1 for +ve, -1 for -ve)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>slices</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="collections.abc.Sequence">Sequence</span>[<span title="slice">slice</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>epsilon[tuple(slices)]</code> is used to select the portion of the grid to use
|
|||
|
|
as the waveguide cross-section. slices[axis] should select only one item.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.cfdfield_t">cfdfield_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>E</code>, with the original field expanded along the specified <code>axis</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p>This helper assumes that the waveguide cross-section remains constant
|
|||
|
|
along the propagation axis and applies the phase factor</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
e^{-i \, \mathrm{polarity} \, wavenumber \, \Delta z}
|
|||
|
|
\]</div>
|
|||
|
|
<p>to each copied slice.</p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-module">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h2 id="meanas.fdfd.waveguide_cyl" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">meanas.fdfd.waveguide_cyl</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl" class="headerlink" title="Permanent link">¶</a></h2>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents first">
|
|||
|
|
|
|||
|
|
<p>Operators and helper functions for cylindrical waveguides with unchanging cross-section.</p>
|
|||
|
|
<p>Waveguide operator is derived according to 10.1364/OL.33.001848.</p>
|
|||
|
|
<p>As in <code>waveguide_2d</code>, the propagation dependence is separated from the
|
|||
|
|
transverse solve. Here the propagation coordinate is the bend angle <code>\theta</code>,
|
|||
|
|
and the fields are assumed to have the form</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\vec{E}(r, y, \theta), \vec{H}(r, y, \theta) \propto e^{-\imath m \theta},
|
|||
|
|
\]</div>
|
|||
|
|
<p>where <code>m</code> is the angular wavenumber returned by <code>solve_mode(s)</code>. It is often
|
|||
|
|
convenient to introduce the corresponding linear wavenumber</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\beta = \frac{m}{r_{\min}},
|
|||
|
|
\]</div>
|
|||
|
|
<p>so that the cylindrical problem resembles the straight-waveguide problem with
|
|||
|
|
additional metric factors.</p>
|
|||
|
|
<p>Those metric factors live on the staggered radial Yee grids. If the left edge of
|
|||
|
|
the computational window is at <code>r = r_{\min}</code>, define the electric-grid and
|
|||
|
|
magnetic-grid radial sample locations by</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
r_a(n) &= r_{\min} + \sum_{j \le n} \Delta r_{e, j}, \\
|
|||
|
|
r_b\!\left(n + \tfrac{1}{2}\right) &= r_{\min} + \tfrac{1}{2}\Delta r_{e, n}
|
|||
|
|
+ \sum_{j < n} \Delta r_{h, j},
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>and from them the diagonal metric matrices</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
T_a &= \operatorname{diag}(r_a / r_{\min}), \\
|
|||
|
|
T_b &= \operatorname{diag}(r_b / r_{\min}).
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>With the same forward/backward derivative notation used in <code>waveguide_2d</code>, the
|
|||
|
|
coordinate-transformed discrete curl equations used here are</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{rr} H_r &= \tilde{\partial}_y E_z + \imath \beta T_a^{-1} E_y, \\
|
|||
|
|
-\imath \omega \mu_{yy} H_y &= -\imath \beta T_b^{-1} E_r
|
|||
|
|
- T_b^{-1} \tilde{\partial}_r (T_a E_z), \\
|
|||
|
|
-\imath \omega \mu_{zz} H_z &= \tilde{\partial}_r E_y - \tilde{\partial}_y E_r, \\
|
|||
|
|
\imath \beta H_y &= -\imath \omega T_b \epsilon_{rr} E_r - T_b \hat{\partial}_y H_z, \\
|
|||
|
|
\imath \beta H_r &= \imath \omega T_a \epsilon_{yy} E_y
|
|||
|
|
- T_b T_a^{-1} \hat{\partial}_r (T_b H_z), \\
|
|||
|
|
\imath \omega E_z &= T_a \epsilon_{zz}^{-1}
|
|||
|
|
\left(\hat{\partial}_r H_y - \hat{\partial}_y H_r\right).
|
|||
|
|
\end{aligned}
|
|||
|
|
\]</div>
|
|||
|
|
<p>The first three equations are the cylindrical analogue of the straight-guide
|
|||
|
|
relations for <code>H_r</code>, <code>H_y</code>, and <code>H_z</code>. The next two are the metric-weighted
|
|||
|
|
versions of the straight-guide identities for <code>\imath \beta H_y</code> and
|
|||
|
|
<code>\imath \beta H_r</code>, and the last equation plays the same role as the
|
|||
|
|
longitudinal <code>E_z</code> reconstruction in <code>waveguide_2d</code>.</p>
|
|||
|
|
<p>Following the same elimination steps as in <code>waveguide_2d</code>, apply
|
|||
|
|
<code>\imath \beta \tilde{\partial}_r</code> and <code>\imath \beta \tilde{\partial}_y</code> to the
|
|||
|
|
equation for <code>E_z</code>, substitute for <code>\imath \beta H_r</code> and <code>\imath \beta H_y</code>,
|
|||
|
|
and then eliminate <code>H_z</code> with</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
H_z = \frac{1}{-\imath \omega \mu_{zz}}
|
|||
|
|
\left(\tilde{\partial}_r E_y - \tilde{\partial}_y E_r\right).
|
|||
|
|
\]</div>
|
|||
|
|
<p>This yields the transverse electric eigenproblem implemented by
|
|||
|
|
<code>cylindrical_operator(...)</code>:</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\beta^2
|
|||
|
|
\begin{bmatrix} E_r \\ E_y \end{bmatrix}
|
|||
|
|
=
|
|||
|
|
\left(
|
|||
|
|
\omega^2
|
|||
|
|
\begin{bmatrix}
|
|||
|
|
T_b^2 \mu_{yy} \epsilon_{xx} & 0 \\
|
|||
|
|
0 & T_a^2 \mu_{xx} \epsilon_{yy}
|
|||
|
|
\end{bmatrix}
|
|||
|
|
+
|
|||
|
|
\begin{bmatrix}
|
|||
|
|
-T_b \mu_{yy} \hat{\partial}_y \\
|
|||
|
|
T_a \mu_{xx} \hat{\partial}_x
|
|||
|
|
\end{bmatrix}
|
|||
|
|
T_b \mu_{zz}^{-1}
|
|||
|
|
\begin{bmatrix}
|
|||
|
|
-\tilde{\partial}_y & \tilde{\partial}_x
|
|||
|
|
\end{bmatrix}
|
|||
|
|
+
|
|||
|
|
\begin{bmatrix}
|
|||
|
|
\tilde{\partial}_x \\
|
|||
|
|
\tilde{\partial}_y
|
|||
|
|
\end{bmatrix}
|
|||
|
|
T_a \epsilon_{zz}^{-1}
|
|||
|
|
\begin{bmatrix}
|
|||
|
|
\hat{\partial}_x T_b \epsilon_{xx} &
|
|||
|
|
\hat{\partial}_y T_a \epsilon_{yy}
|
|||
|
|
\end{bmatrix}
|
|||
|
|
\right)
|
|||
|
|
\begin{bmatrix} E_r \\ E_y \end{bmatrix}.
|
|||
|
|
\]</div>
|
|||
|
|
<p>Since <code>\beta = m / r_{\min}</code>, the solver implemented in this file returns the
|
|||
|
|
angular wavenumber <code>m</code>, while the operator itself is most naturally written in
|
|||
|
|
terms of the linear quantity <code>\beta</code>. The helpers below reconstruct the full
|
|||
|
|
field components from the solved transverse eigenvector and then normalize the
|
|||
|
|
mode to unit forward power with the same discrete longitudinal Poynting inner
|
|||
|
|
product used by <code>waveguide_2d</code>.</p>
|
|||
|
|
<p>As in the straight-waveguide case, all functions here assume a 2D grid:</p>
|
|||
|
|
<p><code>dxes = [[[dr_e_0, dr_e_1, ...], [dy_e_0, ...]], [[dr_h_0, ...], [dy_h_0, ...]]]</code>.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-children">
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.cylindrical_operator" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">cylindrical_operator</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.cylindrical_operator" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">cylindrical_operator</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Cylindrical coordinate waveguide operator of the form</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
(\omega^2 \begin{bmatrix} T_b T_b \mu_{yy} \epsilon_{xx} & 0 \\
|
|||
|
|
0 & T_a T_a \mu_{xx} \epsilon_{yy} \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} -T_b \mu_{yy} \hat{\partial}_y \\
|
|||
|
|
T_a \mu_{xx} \hat{\partial}_x \end{bmatrix} T_b \mu_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} -\tilde{\partial}_y & \tilde{\partial}_x \end{bmatrix} +
|
|||
|
|
\begin{bmatrix} \tilde{\partial}_x \\
|
|||
|
|
\tilde{\partial}_y \end{bmatrix} T_a \epsilon_{zz}^{-1}
|
|||
|
|
\begin{bmatrix} \hat{\partial}_x T_b \epsilon_{xx} & \hat{\partial}_y T_a \epsilon_{yy} \end{bmatrix})
|
|||
|
|
\begin{bmatrix} E_r \\
|
|||
|
|
E_y \end{bmatrix}
|
|||
|
|
\]</div>
|
|||
|
|
<p>for use with a field vector of the form <code>[E_r, E_y]</code>.</p>
|
|||
|
|
<p>This operator can be used to form an eigenvalue problem of the form
|
|||
|
|
A @ [E_r, E_y] = beta**2 * [E_r, E_y]</p>
|
|||
|
|
<p>which can then be solved for the eigenmodes of the system
|
|||
|
|
(an <code>exp(-i * angular_wavenumber * theta)</code> theta-dependence is assumed for
|
|||
|
|
the fields, with <code>beta = angular_wavenumber / rmin</code>).</p>
|
|||
|
|
<p>(NOTE: See module docs and 10.1364/OL.33.001848)</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.solve_modes" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">solve_modes</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_modes" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">solve_modes</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">mode_numbers</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mode_margin</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">],</span> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">]</span>
|
|||
|
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a 2d (r, y) slice of epsilon, attempts to solve for the eigenmode
|
|||
|
|
of the bent waveguide with the specified mode number.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_number</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Number of the mode, 0-indexed</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Angular frequency of the simulation</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters [dx_e, dx_h] as described in meanas.fdmath.types.
|
|||
|
|
The first coordinate is assumed to be r, the second is y.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Dielectric constant</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius of curvature for the simulation. This should be the minimum value of
|
|||
|
|
r within the simulation domain.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th> <th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td><code>e_xys</code></td> <td>
|
|||
|
|
<code><span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complex128">complex128</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>NDArray of vfdfield_t specifying fields. First dimension is mode number.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td><code>angular_wavenumbers</code></td> <td>
|
|||
|
|
<code><span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complex128">complex128</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>list of wavenumbers in 1/rad units.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.solve_mode" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">solve_mode</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.solve_mode" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">solve_mode</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">mode_number</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">vcfdslice</span><span class="p">,</span> <span class="nb">complex</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Wrapper around <code>solve_modes()</code> that solves for a single mode.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mode_number</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="int">int</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>0-indexed mode number to solve for</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>*args</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="typing.Any">Any</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>passed to <code>solve_modes()</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>()</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>**kwargs</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="typing.Any">Any</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>passed to <code>solve_modes()</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>{}</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="tuple">tuple</span>[<a class="autorefs autorefs-internal" title=" vcfdslice (meanas.fdmath.vcfdslice)" href="../fdmath/#meanas.fdmath.types.vcfdslice">vcfdslice</a>, <span title="complex">complex</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>(e_xy, angular_wavenumber)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.linear_wavenumbers" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">linear_wavenumbers</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.linear_wavenumbers" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">linear_wavenumbers</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e_xys</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">vcfdfield2_t</span><span class="p">],</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">angular_wavenumbers</span><span class="p">:</span> <span class="n">ArrayLike</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span> <span class="o">-></span> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Calculate linear wavenumbers (1/distance) based on angular wavenumbers (1/rad)
|
|||
|
|
and the mode's energy distribution.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e_xys</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="list">list</span>[<span title="meanas.fdmath.vcfdfield2_t">vcfdfield2_t</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized mode fields with shape (num_modes, 2 * x *y)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>angular_wavenumbers</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="numpy.typing.ArrayLike">ArrayLike</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumbers assuming fields have theta-dependence of
|
|||
|
|
<code>exp(-i * angular_wavenumber * theta)</code>. They should satisfy
|
|||
|
|
<code>operator_e() @ e_xy == (angular_wavenumber / rmin) ** 2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid with shape (3, x, y)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.complex128">complex128</span>]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>NDArray containing the calculated linear (1/distance) wavenumbers</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.exy2h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">exy2h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">exy2h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">angular_wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>e_xy</code> containing the vectorized E_r and E_y fields,
|
|||
|
|
into a vectorized H containing all three H components</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>angular_wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have theta-dependence of
|
|||
|
|
<code>exp(-i * angular_wavenumber * theta)</code>. It should satisfy
|
|||
|
|
<code>operator_e() @ e_xy == (angular_wavenumber / rmin) ** 2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.exy2e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">exy2e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.exy2e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">exy2e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">angular_wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Operator which transforms the vector <code>e_xy</code> containing the vectorized E_r and E_y fields,
|
|||
|
|
into a vectorized E containing all three E components</p>
|
|||
|
|
<p>Unlike the straight waveguide case, the H_z components do not cancel and must be calculated
|
|||
|
|
from E_r and E_y in order to then calculate E_z.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>angular_wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have theta-dependence of
|
|||
|
|
<code>exp(-i * angular_wavenumber * theta)</code>. It should satisfy
|
|||
|
|
<code>operator_e() @ e_xy == (angular_wavenumber / rmin) ** 2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representing the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.e2h" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">e2h</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.e2h" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">e2h</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">angular_wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span> <span class="o">-></span> <span class="n">sparse</span><span class="o">.</span><span class="n">sparray</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Returns an operator which, when applied to a vectorized E eigenfield, produces
|
|||
|
|
the vectorized H eigenfield.</p>
|
|||
|
|
<p>This operator is created directly from the initial coordinate-transformed equations:
|
|||
|
|
$$
|
|||
|
|
\begin{aligned}
|
|||
|
|
-\imath \omega \mu_{rr} H_r &= \tilde{\partial}<em yy="yy">y E_z + \imath \beta T_a^{-1} E_y, \
|
|||
|
|
-\imath \omega \mu</em> E_r
|
|||
|
|
- T_b^{-1} \tilde{\partial}} H_y &= -\imath \beta T_b^{-1<em zz="zz">r (T_a E_z), \
|
|||
|
|
-\imath \omega \mu</em>_y E_r,
|
|||
|
|
\end{aligned}
|
|||
|
|
$$} H_z &= \tilde{\partial}_r E_y - \tilde{\partial</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>angular_wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have theta-dependence of
|
|||
|
|
<code>exp(-i * angular_wavenumber * theta)</code>. It should satisfy
|
|||
|
|
<code>operator_e() @ e_xy == (angular_wavenumber / rmin) ** 2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="scipy.sparse.sparray">sparray</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse matrix representation of the operator.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.dxes2T" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">dxes2T</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.dxes2T" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">dxes2T</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">float64</span><span class="p">],</span> <span class="n">NDArray</span><span class="p">[</span><span class="n">numpy</span><span class="o">.</span><span class="n">float64</span><span class="p">]]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Construct the cylindrical metric matrices <span class="arithmatex">\(T_a\)</span> and <span class="arithmatex">\(T_b\)</span>.</p>
|
|||
|
|
<p><code>T_a</code> is sampled on the E-grid radial locations, while <code>T_b</code> is sampled on
|
|||
|
|
the staggered H-grid radial locations. These are the diagonal matrices that
|
|||
|
|
convert the straight-waveguide algebra into its cylindrical counterpart.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="tuple">tuple</span>[<span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.float64">float64</span>], <span title="numpy.typing.NDArray">NDArray</span>[<span title="numpy.float64">float64</span>]]</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Sparse diagonal matrices <code>(T_a, T_b)</code>.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-object doc-function">
|
|||
|
|
|
|||
|
|
|
|||
|
|
<h3 id="meanas.fdfd.waveguide_cyl.normalized_fields_e" class="doc doc-heading">
|
|||
|
|
<code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">normalized_fields_e</span>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<a href="#meanas.fdfd.waveguide_cyl.normalized_fields_e" class="headerlink" title="Permanent link">¶</a></h3>
|
|||
|
|
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">normalized_fields_e</span><span class="p">(</span>
|
|||
|
|
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">e_xy</span><span class="p">:</span> <span class="n">vcfdfield2</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">angular_wavenumber</span><span class="p">:</span> <span class="nb">complex</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">omega</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">dxes</span><span class="p">:</span> <span class="n">dx_lists2_t</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">rmin</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">epsilon</span><span class="p">:</span> <span class="n">vfdslice</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">mu</span><span class="p">:</span> <span class="n">vfdslice</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">prop_phase</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|||
|
|
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">[</span><span class="n">vcfdslice_t</span><span class="p">,</span> <span class="n">vcfdslice_t</span><span class="p">]</span>
|
|||
|
|
</code></pre></div>
|
|||
|
|
|
|||
|
|
<div class="doc doc-contents ">
|
|||
|
|
|
|||
|
|
<p>Given a vector <code>e_xy</code> containing the vectorized E_r and E_y fields,
|
|||
|
|
returns normalized, vectorized E and H fields for the system.</p>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Name</th>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
<th>Default</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>e_xy</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vcfdfield2 (meanas.fdmath.vcfdfield2)" href="../fdmath/#meanas.fdmath.types.vcfdfield2">vcfdfield2</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vector containing E_r and E_y fields</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>angular_wavenumber</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="complex">complex</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Wavenumber assuming fields have theta-dependence of
|
|||
|
|
<code>exp(-i * angular_wavenumber * theta)</code>. It should satisfy
|
|||
|
|
<code>operator_e() @ e_xy == (angular_wavenumber / rmin) ** 2 * e_xy</code></p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>omega</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>The angular frequency of the system</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>dxes</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" dx_lists2_t
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
module-attribute
|
|||
|
|
(meanas.fdmath.dx_lists2_t)" href="../fdmath/#meanas.fdmath.types.dx_lists2_t">dx_lists2_t</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Grid parameters <code>[dx_e, dx_h]</code> as described in <code>meanas.fdmath.types</code> (2D)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>rmin</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Radius at the left edge of the simulation domain (at minimum 'x')</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>epsilon</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized dielectric constant grid</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<em>required</em>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>mu</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><a class="autorefs autorefs-internal" title=" vfdslice (meanas.fdmath.vfdslice)" href="../fdmath/#meanas.fdmath.types.vfdslice">vfdslice</a> | None</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Vectorized magnetic permeability grid (default 1 everywhere)</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>None</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code>prop_phase</code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code><span title="float">float</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>Phase shift <code>(dz * corrected_wavenumber)</code> over 1 cell in propagation direction.
|
|||
|
|
Default 0 (continuous propagation direction, i.e. dz->0).</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<code>0</code>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|||
|
|
<table>
|
|||
|
|
<thead>
|
|||
|
|
<tr>
|
|||
|
|
<th>Type</th>
|
|||
|
|
<th>Description</th>
|
|||
|
|
</tr>
|
|||
|
|
</thead>
|
|||
|
|
<tbody>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p><code>(e, h)</code>, where each field is vectorized, normalized,</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr class="doc-section-item">
|
|||
|
|
<td>
|
|||
|
|
<code><span title="meanas.fdmath.vcfdslice_t">vcfdslice_t</span></code>
|
|||
|
|
</td>
|
|||
|
|
<td>
|
|||
|
|
<div class="doc-md-description">
|
|||
|
|
<p>and contains all three vector components.</p>
|
|||
|
|
</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<details class="notes" open>
|
|||
|
|
<summary>Notes</summary>
|
|||
|
|
<p>The normalization step is delegated to <code>_normalized_fields(...)</code>, which
|
|||
|
|
enforces unit forward power under the discrete inner product</p>
|
|||
|
|
<div class="arithmatex">\[
|
|||
|
|
\frac{1}{2}\int (E_r H_y^* - E_y H_r^*) \, dr \, dy.
|
|||
|
|
\]</div>
|
|||
|
|
<p>The angular wavenumber <code>m</code> is first converted into the full three-component
|
|||
|
|
fields, then the overall complex phase and sign are fixed so the result is
|
|||
|
|
reproducible for symmetric modes.</p>
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
</article>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|||
|
|
|
|||
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
|||
|
|
Back to top
|
|||
|
|
</button>
|
|||
|
|
|
|||
|
|
</main>
|
|||
|
|
|
|||
|
|
<footer class="md-footer">
|
|||
|
|
|
|||
|
|
<div class="md-footer-meta md-typeset">
|
|||
|
|
<div class="md-footer-meta__inner md-grid">
|
|||
|
|
<div class="md-copyright">
|
|||
|
|
|
|||
|
|
|
|||
|
|
Made with
|
|||
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|||
|
|
Material for MkDocs
|
|||
|
|
</a>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</footer>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
<div class="md-dialog" data-md-component="dialog">
|
|||
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.indexes", "navigation.sections", "navigation.top", "content.code.copy", "toc.follow"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
|
|||
|
|
|
|||
|
|
<script src="../../js/print-site.js"></script>
|
|||
|
|
|
|||
|
|
<script src="../../javascripts/mathjax.js"></script>
|
|||
|
|
|
|||
|
|
<script src="../../assets/vendor/mathjax/startup.js"></script>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</body>
|
|||
|
|
</html>
|