From 582fc20f1fd1c763e6b34ce1d0f0f58372a4cfc1 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:30:56 -0700 Subject: [PATCH 01/31] update julia version --- .github/workflows/build.yml | 2 +- .github/workflows/docs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a26d7dd2..b44f133b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: python-version: "3.12" - uses: julia-actions/setup-julia@v1 with: - version: '1.9.2' + version: '1.10.2' - uses: julia-actions/cache@v1 - name: Install JuliaFormatter and format run: | diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e6b1baf8..c633e3d3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,7 +49,7 @@ jobs: - uses: julia-actions/setup-julia@v1 with: - version: '1.9.3' + version: '1.10.2' - uses: julia-actions/cache@v1 with: cache-name: ${{ runner.os }}-${{ steps.get-date.outputs.date }} From 56a6dea9c91a0fa5dbd596d5df6b2ddb2aebe2b9 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:42:10 -0700 Subject: [PATCH 02/31] update julia version in notebooks --- docs/julia/heater_3d.jl | 2 +- docs/julia/lithium_niobate_phase_shifter.jl | 2 +- docs/julia/microstrip.jl | 2 +- docs/julia/thermal_fill.jl | 2 +- docs/julia/thermal_simple.jl | 2 +- docs/julia/waveguide.jl | 2 +- docs/julia/waveguide_anisotropic.jl | 2 +- docs/julia/waveguide_bent.jl | 2 +- docs/julia/waveguide_bent_coupling.jl | 2 +- docs/julia/waveguide_overlap_integral.jl | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/julia/heater_3d.jl b/docs/julia/heater_3d.jl index b51087ba..0010a40a 100644 --- a/docs/julia/heater_3d.jl +++ b/docs/julia/heater_3d.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/lithium_niobate_phase_shifter.jl b/docs/julia/lithium_niobate_phase_shifter.jl index c78ecd43..366b7ff0 100644 --- a/docs/julia/lithium_niobate_phase_shifter.jl +++ b/docs/julia/lithium_niobate_phase_shifter.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/microstrip.jl b/docs/julia/microstrip.jl index 27ffe145..4d534aac 100644 --- a/docs/julia/microstrip.jl +++ b/docs/julia/microstrip.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/thermal_fill.jl b/docs/julia/thermal_fill.jl index ef20b7cb..b8d467e1 100644 --- a/docs/julia/thermal_fill.jl +++ b/docs/julia/thermal_fill.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/thermal_simple.jl b/docs/julia/thermal_simple.jl index f03a7302..83389206 100644 --- a/docs/julia/thermal_simple.jl +++ b/docs/julia/thermal_simple.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/waveguide.jl b/docs/julia/waveguide.jl index 9e80f3ce..2f7684d8 100644 --- a/docs/julia/waveguide.jl +++ b/docs/julia/waveguide.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/waveguide_anisotropic.jl b/docs/julia/waveguide_anisotropic.jl index 4bf62e8b..39596207 100644 --- a/docs/julia/waveguide_anisotropic.jl +++ b/docs/julia/waveguide_anisotropic.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/waveguide_bent.jl b/docs/julia/waveguide_bent.jl index f171918a..beb82e09 100644 --- a/docs/julia/waveguide_bent.jl +++ b/docs/julia/waveguide_bent.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/waveguide_bent_coupling.jl b/docs/julia/waveguide_bent_coupling.jl index a0271536..9a3e22f6 100644 --- a/docs/julia/waveguide_bent_coupling.jl +++ b/docs/julia/waveguide_bent_coupling.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] diff --git a/docs/julia/waveguide_overlap_integral.jl b/docs/julia/waveguide_overlap_integral.jl index 6600d927..ed8c5b21 100644 --- a/docs/julia/waveguide_overlap_integral.jl +++ b/docs/julia/waveguide_overlap_integral.jl @@ -11,7 +11,7 @@ # kernelspec: # display_name: base # language: julia -# name: julia-1.9 +# name: julia-1.10 # --- # %% [markdown] From be1cdbebe011c70bc8810892ea1a9b0c3cd0fdb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 04:37:03 +0000 Subject: [PATCH 03/31] build(deps): bump julia-actions/setup-julia from 1 to 2 Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 1 to 2. - [Release notes](https://github.com/julia-actions/setup-julia/releases) - [Commits](https://github.com/julia-actions/setup-julia/compare/v1...v2) --- updated-dependencies: - dependency-name: julia-actions/setup-julia dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- .github/workflows/docs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a26d7dd2..a5c8f362 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.12" - - uses: julia-actions/setup-julia@v1 + - uses: julia-actions/setup-julia@v2 with: version: '1.9.2' - uses: julia-actions/cache@v1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e6b1baf8..a895e359 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -47,7 +47,7 @@ jobs: pip install gdsfactory gplugins pip list - - uses: julia-actions/setup-julia@v1 + - uses: julia-actions/setup-julia@v2 with: version: '1.9.3' - uses: julia-actions/cache@v1 From 1ea7bebbb26837558fcdb96c223ea60879d3f4b7 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:03:15 -0700 Subject: [PATCH 04/31] update toc, split maxwell docs --- docs/_toc.yml | 19 ++--- docs/math/maxwell.md | 119 ------------------------------- docs/math/maxwell_quantities.md | 120 ++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 128 deletions(-) create mode 100644 docs/math/maxwell_quantities.md diff --git a/docs/_toc.yml b/docs/_toc.yml index 515ada4f..684e7db9 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -21,14 +21,16 @@ parts: - caption: Examples chapters: - file: photonics/examples/waveguide_modes.py - #- file: photonics/examples/leaky_waveguide.py - #- file: photonics/examples/bent_waveguide.py - - file: photonics/examples/vary_width.py - - file: photonics/examples/vary_wavelength.py - - file: photonics/examples/selecting_modes.py - - file: photonics/examples/calculate_GVD.py - - file: photonics/examples/fiber_overlap.py - - file: photonics/examples/crosstalk.py + sections: + #- file: photonics/examples/leaky_waveguide.py + #- file: photonics/examples/bent_waveguide.py + - file: photonics/examples/vary_width.py + - file: photonics/examples/vary_wavelength.py + - file: photonics/examples/selecting_modes.py + - file: photonics/examples/calculate_GVD.py + - file: photonics/examples/fiber_overlap.py + - file: photonics/examples/crosstalk.py + - file: photonics/examples/propagation_loss.py - file: photonics/examples/metal_heater_phase_shifter.py - file: photonics/examples/metal_heater_phase_shifter_transient.py - file: photonics/examples/si_heater_phase_shifter.py @@ -40,7 +42,6 @@ parts: - file: photonics/examples/depletion_waveguide.py - file: photonics/examples/effective_area.py - file: photonics/examples/refinement.py - - file: photonics/examples/propagation_loss.py - file: electronics/examples/capacitor.py - file: electronics/examples/coax_cable.py - file: electronics/examples/coplanar_waveguide_vary_width.py diff --git a/docs/math/maxwell.md b/docs/math/maxwell.md index 12b22897..baf45da2 100644 --- a/docs/math/maxwell.md +++ b/docs/math/maxwell.md @@ -329,125 +329,6 @@ where $R$ is the radius of curvature in $x$-direction. See discussion on choice of R in {cite}`Masi:10` -## TE/TM Polarization Fraction - -$$ - \mathrm{TEfrac} - &= - \frac{ - \int \left| E_{x_1} \right|^2 \mathrm{d}x\mathrm{d}y - }{ - \int \left| E_{x_1} \right|^2 + \left| E_{x_2} \right|^2 \mathrm{d}x \mathrm{d}y - } - - \mathrm{TMfrac} - &= - \frac{ - \int \left| E_{x_2} \right|^2 \mathrm{d}x\mathrm{d}y - }{ - \int \left| E_{x_1} \right|^2 + \left| E_{x_2} \right|^2 \mathrm{d}x \mathrm{d}y - } -$$ - -## Loss per meter [dB/m] - -$$ - \text{Loss at }x_3\text{ [dB]} - &=-10 \log_{10} \frac{\left|E(x_3)\right|^2}{\left|E(x_3=0)\right|^2} - \\ - &=-20 \log_{10} \frac{\left|E(x_3)\right|}{\left|E(x_3=0)\right|} - \\ - &=-20 \log_{10} \mathrm{e}^{\Im\beta x_3} - \\ - &=-20 \frac{\log_{\mathrm{e}} \mathrm{e}^{\Im\beta x_3}}{\ln 10} - \\ - &=\frac{-20}{\ln 10} \Im\beta x_3 - \\ - \\ - \text{Loss [dB/m]} - &= - \frac{-20}{\ln 10} \Im\beta \, 1\mathrm{m} -$$ - -## Effective Area - -As defined in {cite}`Agrawal2019` - -$$ - A_{\text{eff}} - = - \frac{ - \left( \int \left| \vec{\mathcal{E}} \right|^2 \mathrm{d}A \right)^2 - }{ - \int \left| \vec{\mathcal{E}} \right|^4 \mathrm{d}A - } -$$ - -## Confinement coefficient - -As defined in {cite}`Robinson2008` -(and generalized for varying refractive indices in the active area) - -$$ - \Gamma - = - \frac{ - c \epsilon_0 \int n(\vec{x}) \left| \vec{\mathcal{E}} \right|^2 \mathrm{d}A - }{ - \left( \int \vec{\mathcal{E}}^* \times \vec{\mathcal{H}} - + - \vec{\mathcal{E}} \times \vec{\mathcal{H}}^* - \mathrm{d}A \right) / 2 - } -$$ - -## Overlap coefficient - -$$ - c_{\nu\mu} - = - \frac{ - \int \vec{\mathcal{E}}_\nu^* \times \vec{\mathcal{H}}_\mu - + - \vec{\mathcal{E}}_\nu \times \vec{\mathcal{H}}_\mu^* \mathrm{d}A - }{ - \prod_{i=\{\mu,\nu\}} - \sqrt{ - \int \vec{\mathcal{E}}_i^* \times \vec{\mathcal{H}}_i - + - \vec{\mathcal{E}}_i \times \vec{\mathcal{H}}_i^* \mathrm{d}A - } - } - = - c_{\mu\nu}^* -$$ - -## Characteristic impedance - - - -Power and current: - -$$ - P_k - = - \delta_{jk} - \int - \left( - \vec{\mathcal{E}}_j^* \times \vec{\mathcal{H}}_k - \right) \cdot \hat{x}_3 - - I_{zik} = \oint_{C_i} \mathcal{H} \ cdot -$$ - -Characteristic impedance: - -$$ - P = I^T Z_c I - - Z_c = [I^{-1}]^T P I^{-1} -$$ - ## Calculating static potentials As in the static case diff --git a/docs/math/maxwell_quantities.md b/docs/math/maxwell_quantities.md new file mode 100644 index 00000000..ee940a29 --- /dev/null +++ b/docs/math/maxwell_quantities.md @@ -0,0 +1,120 @@ +# Quantities of optical modes + +## TE/TM Polarization Fraction + +$$ + \mathrm{TEfrac} + &= + \frac{ + \int \left| E_{x_1} \right|^2 \mathrm{d}x\mathrm{d}y + }{ + \int \left| E_{x_1} \right|^2 + \left| E_{x_2} \right|^2 \mathrm{d}x \mathrm{d}y + } + + \mathrm{TMfrac} + &= + \frac{ + \int \left| E_{x_2} \right|^2 \mathrm{d}x\mathrm{d}y + }{ + \int \left| E_{x_1} \right|^2 + \left| E_{x_2} \right|^2 \mathrm{d}x \mathrm{d}y + } +$$ + +## Loss per meter [dB/m] + +$$ + \text{Loss at }x_3\text{ [dB]} + &=-10 \log_{10} \frac{\left|E(x_3)\right|^2}{\left|E(x_3=0)\right|^2} + \\ + &=-20 \log_{10} \frac{\left|E(x_3)\right|}{\left|E(x_3=0)\right|} + \\ + &=-20 \log_{10} \mathrm{e}^{\Im\beta x_3} + \\ + &=-20 \frac{\log_{\mathrm{e}} \mathrm{e}^{\Im\beta x_3}}{\ln 10} + \\ + &=\frac{-20}{\ln 10} \Im\beta x_3 + \\ + \\ + \text{Loss [dB/m]} + &= + \frac{-20}{\ln 10} \Im\beta \, 1\mathrm{m} +$$ + +## Effective Area + +As defined in {cite}`Agrawal2019` + +$$ + A_{\text{eff}} + = + \frac{ + \left( \int \left| \vec{\mathcal{E}} \right|^2 \mathrm{d}A \right)^2 + }{ + \int \left| \vec{\mathcal{E}} \right|^4 \mathrm{d}A + } +$$ + +## Confinement coefficient + +As defined in {cite}`Robinson2008` +(and generalized for varying refractive indices in the active area) + +$$ + \Gamma + = + \frac{ + c \epsilon_0 \int n(\vec{x}) \left| \vec{\mathcal{E}} \right|^2 \mathrm{d}A + }{ + \left( \int \vec{\mathcal{E}}^* \times \vec{\mathcal{H}} + + + \vec{\mathcal{E}} \times \vec{\mathcal{H}}^* + \mathrm{d}A \right) / 2 + } +$$ + +## Overlap coefficient + +$$ + c_{\nu\mu} + = + \frac{ + \int \vec{\mathcal{E}}_\nu^* \times \vec{\mathcal{H}}_\mu + + + \vec{\mathcal{E}}_\nu \times \vec{\mathcal{H}}_\mu^* \mathrm{d}A + }{ + \prod_{i=\{\mu,\nu\}} + \sqrt{ + \int \vec{\mathcal{E}}_i^* \times \vec{\mathcal{H}}_i + + + \vec{\mathcal{E}}_i \times \vec{\mathcal{H}}_i^* \mathrm{d}A + } + } + = + c_{\mu\nu}^* +$$ + +## Characteristic impedance + + + +Power and current: + +$$ + P_k + = + \delta_{jk} + \int + \left( + \vec{\mathcal{E}}_j^* \times \vec{\mathcal{H}}_k + \right) \cdot \hat{x}_3 + + I_{zik} = \oint_{C_i} \mathcal{H} \ cdot +$$ + +Characteristic impedance: + +$$ + P = I^T Z_c I + + Z_c = [I^{-1}]^T P I^{-1} +$$ \ No newline at end of file From 5aedb84a26b880aec253bd2fcbf2fa6746be59f3 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:07:27 -0700 Subject: [PATCH 05/31] add refs --- docs/math/maxwell_quantities.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/math/maxwell_quantities.md b/docs/math/maxwell_quantities.md index ee940a29..dd0e2254 100644 --- a/docs/math/maxwell_quantities.md +++ b/docs/math/maxwell_quantities.md @@ -117,4 +117,9 @@ $$ P = I^T Z_c I Z_c = [I^{-1}]^T P I^{-1} -$$ \ No newline at end of file +$$ + +```{bibliography} +:style: unsrt +:filter: docname in docnames +``` \ No newline at end of file From 1aac2d67cb5301038e8f0abb9daba4ddecefc685 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:12:55 -0700 Subject: [PATCH 06/31] rename example --- docs/photonics/examples/waveguide_modes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/photonics/examples/waveguide_modes.py b/docs/photonics/examples/waveguide_modes.py index 49c0249c..113eda70 100644 --- a/docs/photonics/examples/waveguide_modes.py +++ b/docs/photonics/examples/waveguide_modes.py @@ -13,7 +13,7 @@ # --- # %% [markdown] -# # Modes of a rectangular waveguide +# # Optical waveguide modes # %% tags=["remove-stderr", "hide-input", "thebe-init"] from collections import OrderedDict From 11a37482ea836d9403b617f8423f1e89ff2d4c71 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:14:42 -0700 Subject: [PATCH 07/31] add page to docs --- docs/_toc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_toc.yml b/docs/_toc.yml index 684e7db9..cf549aa6 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -11,6 +11,7 @@ parts: chapters: - file: math/maxwell sections: + - file: math/maxwell_quantities - file: math/waveguide_port - file: math/overlap_integrals - file: math/thermal From 4fcbd7ac4105175a9aa05df5105077f9e3df8b4f Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:15:29 -0700 Subject: [PATCH 08/31] move file in toc --- docs/_toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_toc.yml b/docs/_toc.yml index cf549aa6..1dea3372 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -32,6 +32,7 @@ parts: - file: photonics/examples/fiber_overlap.py - file: photonics/examples/crosstalk.py - file: photonics/examples/propagation_loss.py + - file: photonics/examples/effective_area.py - file: photonics/examples/metal_heater_phase_shifter.py - file: photonics/examples/metal_heater_phase_shifter_transient.py - file: photonics/examples/si_heater_phase_shifter.py @@ -41,7 +42,6 @@ parts: - file: photonics/examples/grating_coupler.py - file: photonics/examples/coupled_mode_theory.py - file: photonics/examples/depletion_waveguide.py - - file: photonics/examples/effective_area.py - file: photonics/examples/refinement.py - file: electronics/examples/capacitor.py - file: electronics/examples/coax_cable.py From 36ea362f0950e185172ce7f4076454c945b6e56b Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:08:18 -0700 Subject: [PATCH 09/31] better docstrings --- femwell/laplace.py | 1 - femwell/maxwell/waveguide.py | 38 +++++++++++++++++++++++++++++- femwell/mode_solver_1d.py | 15 ++++++------ femwell/mode_solver_2d_periodic.py | 10 ++++++++ femwell/thermal.py | 2 ++ femwell/thermal_transient.py | 14 +++++++++++ femwell/utils.py | 24 +++++++++---------- femwell/waveguide.py | 10 ++++++++ 8 files changed, 92 insertions(+), 22 deletions(-) diff --git a/femwell/laplace.py b/femwell/laplace.py index 4052fd34..3ab4fce8 100644 --- a/femwell/laplace.py +++ b/femwell/laplace.py @@ -2,7 +2,6 @@ from collections import OrderedDict -import matplotlib import numpy as np from shapely import LineString, box from skfem import ( diff --git a/femwell/maxwell/waveguide.py b/femwell/maxwell/waveguide.py index ae1782ce..3403f6be 100644 --- a/femwell/maxwell/waveguide.py +++ b/femwell/maxwell/waveguide.py @@ -291,6 +291,16 @@ def plot_component( colorbar: bool = False, ax: Axes = None, ): + """Plots a component of the electric or magnetic field. + + Args: + field ("E", "H"): Field of interest, can be the electric field or the magnetic field. + component ("x", "y", "z", "n", "t"): Component of the field to plot. + part ("real", "imag", "abs", callable): Function to use to preprocess the field to be plotted. Defaults to "real". + boundaries (bool): Superimpose the mesh boundaries on the plot. Defaults to True. + colorbar (bool): Adds a colorbar to the plot. Defaults to False. + ax (Axes, optional): Axes onto which the plot is drawn. Defaults to None. + """ from mpl_toolkits.axes_grid1 import make_axes_locatable if part == "real": @@ -457,6 +467,7 @@ def plot_intensity( @dataclass(frozen=True) class Modes: modes: List + """List of modes""" def __getitem__(self, idx) -> Mode: return self.modes[idx] @@ -489,6 +500,21 @@ def compute_modes( n_guess=None, solver="scipy", ) -> Modes: + """Computes the modes of a waveguide. + + Args: + basis_epsilon_r (Basis): Basis on which epsilon_r is defined. + epsilon_r (NDArray): Relative permittivity of the waveguide. + wavelength (float): Wavelength of the light. + mu_r (float, optional): Relative permeability of the waveguide. Defaults to 1. + num_modes (int, optional): Number of modes to compute. Defaults to 1. + order (int, optional): Order of the basis functions. Defaults to 1. + metallic_boundaries (bool, optional): If True, the boundaries are considered to be metallic. Defaults to False. + radius (float, optional): Radius of the waveguide. Defaults to np.inf. + n_guess (float, optional): Initial guess for the effective index. Defaults to None. + solver (str, optional): Solver to use. Defaults to "scipy". + """ + if solver == "scipy": solver = solver_eigen_scipy elif solver == "slepc": @@ -710,6 +736,16 @@ def overlap(w): def plot_mode(basis, mode, plot_vectors=False, colorbar=True, title="E", direction="y"): + """Plots a mode. + + Args: + basis (Basis): Basis of the mode. + mode (np.ndarray): Mode to plot. + plot_vectors (bool, optional): If True, plot the normal and tangential components. Defaults to False. + colorbar (bool, optional): Adds a colorbar to the plot. Defaults to True. + title (str, optional): Title of the plot. Defaults to "E". + + """ from mpl_toolkits.axes_grid1 import make_axes_locatable (et, et_basis), (ez, ez_basis) = basis.split(mode) @@ -775,7 +811,7 @@ def interior_residual(w): # facet jump fbasis = [InteriorFacetBasis(basis.mesh, basis.elem, side=i) for i in [0, 1]] - w = {"u" + str(i + 1): fbasis[i].interpolate(u) for i in [0, 1]} + w = {f"u{str(i + 1)}": fbasis[i].interpolate(u) for i in [0, 1]} @Functional def edge_jump(w): diff --git a/femwell/mode_solver_1d.py b/femwell/mode_solver_1d.py index e16b1ce0..1215f3de 100644 --- a/femwell/mode_solver_1d.py +++ b/femwell/mode_solver_1d.py @@ -34,13 +34,14 @@ def lhs(u, v, w): def rhs(u, v, w): return inner(u, v) +if __name__ == "__main__": -A = lhs.assemble(basis, epsilon=basis_epsilon.interpolate(epsilon)) -B = rhs.assemble(basis) + A = lhs.assemble(basis, epsilon=basis_epsilon.interpolate(epsilon)) + B = rhs.assemble(basis) -lams, xs = solve( - *condense(A, B, D=basis.get_dofs()), solver=solver_eigen_scipy_sym(sigma=3.55**2, which="LM") -) + lams, xs = solve( + *condense(A, B, D=basis.get_dofs()), solver=solver_eigen_scipy_sym(sigma=3.55**2, which="LM") + ) -print(np.sqrt(lams)) -basis.plot(xs[:, -1]).show() + print(np.sqrt(lams)) + basis.plot(xs[:, -1]).show() diff --git a/femwell/mode_solver_2d_periodic.py b/femwell/mode_solver_2d_periodic.py index a9d4edb7..375b1dcb 100644 --- a/femwell/mode_solver_2d_periodic.py +++ b/femwell/mode_solver_2d_periodic.py @@ -64,6 +64,16 @@ def I_phi(phi, k_phi, v, k_v, w): def plot_periodic(k, a, basis_phi, phi, num, ax): + """Plot the periodic mode. + + Args: + k (float): The wavenumber. + a (float): The period. + basis_phi (Basis): The basis for the periodic function. + phi (np.ndarray): The periodic function. + num (int): The number of periods to plot. + ax (matplotlib.axes.Axes): The axes to plot on. + """ vminmax = np.max(np.abs(basis_phi.interpolate(phi))) for i_plot in range(num): phases = basis_phi.project( diff --git a/femwell/thermal.py b/femwell/thermal.py index e00cfd51..695e2536 100644 --- a/femwell/thermal.py +++ b/femwell/thermal.py @@ -34,6 +34,8 @@ def solve_thermal( thermal_conductivity: thermal conductivity in W/m‧K. specific_conductivity: specific conductivity in S/m. current_densities: current densities flowing through the layer in A. + fixed_boundaries: fixed boundaries. + order: order of the basis. Returns: basis, temperature profile diff --git a/femwell/thermal_transient.py b/femwell/thermal_transient.py index 87fd539c..1cade4b6 100644 --- a/femwell/thermal_transient.py +++ b/femwell/thermal_transient.py @@ -23,6 +23,20 @@ def solve_thermal_transient( dt, steps, ): + """Thermal transient simulation. + + Args: + basis0: Basis of the thermal_conductivity. + thermal_conductivity_p0: thermal conductivity in W/m‧K. + thermal_diffusivity_p0: thermal diffusivity in m^2/s. + specific_conductivity: specific conductivity in S/m. + current_densities_0: current densities at time 0. + current_densities: current densities as a function of time. + fixed_boundaries: fixed boundaries. + dt: time step. + steps: number of steps. + + """ basis, temperature = solve_thermal( basis0, thermal_conductivity_p0, diff --git a/femwell/utils.py b/femwell/utils.py index 56458c36..758a2337 100644 --- a/femwell/utils.py +++ b/femwell/utils.py @@ -24,16 +24,14 @@ def mpc_symmetric( ) -> CondensedSystem: """Apply a multipoint constraint on the linear system. - Parameters - ---------- - A - b - The linear system to constrain. - S - M - T - g - The constraint is of the form `x[S] = T @ x[M] + g`. + Args: + A: spmatrix. + b: ndarray. + S: ndarray. + M: ndarray. + T + g + The constraint is of the form `x[S] = T @ x[M] + g`. """ if M is None: @@ -67,9 +65,9 @@ def mpc_symmetric( if b.ndim == 1: y = np.concatenate((b[U] - A[U][:, S] @ g, b[M] - A[M][:, S] @ g)) + elif np.any(np.nonzero(g)): + raise NotImplementedError("Not yet implemented for g != 0") else: - if np.any(np.nonzero(g)): - raise NotImplementedError("Not yet implemented for g != 0") y = bmat( [ [ @@ -101,7 +99,7 @@ def inside_bbox(bbox): given bounding box coordinates. Args: - bbox: 4 element list with [xmin, ymin, xmax, ymax] + bbox: 4 element list with [xmin, ymin, xmax, ymax]. """ def sel_fun(x): diff --git a/femwell/waveguide.py b/femwell/waveguide.py index 0d7bd0fc..f440d281 100644 --- a/femwell/waveguide.py +++ b/femwell/waveguide.py @@ -13,6 +13,16 @@ def mesh_waveguide(filename, wsim, hclad, hbox, wcore, hcore): + """Create a mesh for a waveguide. + + Args: + filename: path to save the mesh. + wsim: width of the simulation window. + hclad: height of the cladding. + hbox: height of the box. + wcore: width of the core. + hcore: height of the core. + """ polygons = OrderedDict( core=Polygon( [ From dce82a0b4ab460e1b8c2b72b1ed867771a618807 Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:32:49 -0700 Subject: [PATCH 10/31] run pre-commit --- femwell/mode_solver_1d.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/femwell/mode_solver_1d.py b/femwell/mode_solver_1d.py index 1215f3de..a4125034 100644 --- a/femwell/mode_solver_1d.py +++ b/femwell/mode_solver_1d.py @@ -34,13 +34,15 @@ def lhs(u, v, w): def rhs(u, v, w): return inner(u, v) -if __name__ == "__main__": + +if __name__ == "__main__": A = lhs.assemble(basis, epsilon=basis_epsilon.interpolate(epsilon)) B = rhs.assemble(basis) lams, xs = solve( - *condense(A, B, D=basis.get_dofs()), solver=solver_eigen_scipy_sym(sigma=3.55**2, which="LM") + *condense(A, B, D=basis.get_dofs()), + solver=solver_eigen_scipy_sym(sigma=3.55**2, which="LM") ) print(np.sqrt(lams)) From c9a2602be5b9ef8db02932f9f884bd81beeeb330 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 23 Apr 2024 15:46:57 -0700 Subject: [PATCH 11/31] add example for crosstalk reduction --- docs/_toc.yml | 1 + .../examples/crosstalk_reduction/3a.csv | 109 ++ .../examples/crosstalk_reduction/3b.csv | 130 ++ .../examples/crosstalk_reduction/3c.csv | 1119 +++++++++++++++++ .../crosstalk_reduction.py | 131 ++ docs/references.bib | 13 + 6 files changed, 1503 insertions(+) create mode 100644 docs/photonics/examples/crosstalk_reduction/3a.csv create mode 100644 docs/photonics/examples/crosstalk_reduction/3b.csv create mode 100644 docs/photonics/examples/crosstalk_reduction/3c.csv create mode 100644 docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py diff --git a/docs/_toc.yml b/docs/_toc.yml index 1dea3372..c1b01d7b 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -33,6 +33,7 @@ parts: - file: photonics/examples/crosstalk.py - file: photonics/examples/propagation_loss.py - file: photonics/examples/effective_area.py + - file: photonics/examples/crosstalk_reduction/crosstalk_reduction.py - file: photonics/examples/metal_heater_phase_shifter.py - file: photonics/examples/metal_heater_phase_shifter_transient.py - file: photonics/examples/si_heater_phase_shifter.py diff --git a/docs/photonics/examples/crosstalk_reduction/3a.csv b/docs/photonics/examples/crosstalk_reduction/3a.csv new file mode 100644 index 00000000..56aebf87 --- /dev/null +++ b/docs/photonics/examples/crosstalk_reduction/3a.csv @@ -0,0 +1,109 @@ +10.512200287910268, 1269.437398209328 +11.363725458520449, 1282.6882357408674 +12.356360514546019, 1297.2029641202575 +13.458477378221481, 1313.3733323207007 +14.292972045419447, 1328.0853649274702 +15.246680236502847, 1343.8182324498116 +16.26851044123506, 1358.5903141692615 +17.29034064596727, 1373.7226905647958 +18.20998783022626, 1387.3838636996534 +19.129635014485252, 1400.8648894964685 +20.151465219217457, 1416.2374623427254 +21.173295423949668, 1429.0879724563936 +22.19512562868188, 1443.2595630490368 +23.31913885388731, 1458.291857590103 +24.443152079092755, 1472.8037264879372 +25.567165304298186, 1488.1162502215134 +26.691178529503617, 1502.58808637756 +27.815191754709048, 1516.3393331814386 +28.93920497991448, 1530.9312675628466 +30.16540122559313, 1546.063643958381 +31.493780491745, 1561.8765769642964 +32.719976737423664, 1575.8880365897912 +34.048356003575535, 1591.7009695957065 +35.376735269727405, 1606.913411474815 +36.705114535879275, 1621.7255259360522 +38.03349380203116, 1636.4375585428218 +39.25969004770981, 1649.9486088959775 +40.58806931386168, 1664.1030425992833 +41.91644858001355, 1677.7713644380312 +43.244827846165435, 1691.3824966456546 +44.777573153263745, 1706.8451431609328 +46.20813543988885, 1721.4070529860005 +47.4343316855675, 1733.6170392310744 +48.86489397219259, 1747.8286625655046 +50.49982229976413, 1763.2913090807829 +52.13475062733566, 1777.628034733298 +53.76967895490721, 1792.7153742943217 +55.404607282478736, 1807.2772841193894 +57.03953561005028, 1820.9384572542467 +58.67446393762182, 1835.275182906762 +60.51375830613979, 1850.8729399255717 +62.353052674657775, 1865.074555074555 +63.98798100222932, 1877.6098073466496 +65.8272753707473, 1891.7663856611225 +67.76875275973849, 1905.6911076794117 +69.71023014872969, 1920.3497632971316 +71.6517075377209, 1932.7132083857232 +73.69536794718532, 1946.645815641031 +75.73902835664974, 1959.2015392015392 +77.78268876611416, 1972.4669340937285 +80.03071521652502, 1985.8415091907916 +82.27874166693589, 1997.7967416244928 +84.52676811734676, 2009.6973839557572 +86.77479456775762, 2020.7791747504666 +89.02282101816849, 2031.6971952378651 +91.27084746857935, 2041.523413676524 +93.51887391899021, 2050.3670102713168 +95.76690036940107, 2058.9922464563615 +98.01492681981193, 2067.289942026784 +100.2629532702228, 2074.714195958215 +102.51097972063366, 2080.6099270214104 +104.75900617104455, 2086.3964778797317 +107.00703262145541, 2091.254996996624 +109.25505907186627, 2096.113516113516 +111.50308552227713, 2099.334332157299 +113.751111972688, 2101.6817065620894 +115.99913842309886, 2104.138261171754 +118.24716487350972, 2105.612193937553 +120.49519132392058, 2106.267275166797 +122.74321777433144, 2105.66678403999 +124.9912442247423, 2104.902522605872 +127.23927067515316, 2102.718918508392 +129.48729712556403, 2100.9720352304084 +131.73532357597492, 2097.31449836713 +133.98335002638578, 2093.1110604794817 +136.23137647679664, 2088.2525413625895 +138.4794029272075, 2082.848121221327 +140.72742937761836, 2076.897800055695 +142.97545582802923, 2069.36436591939 +145.2234822784401, 2061.448801066026 +147.47150872885095, 2052.8781549834184 +149.7195351792618, 2044.1437385934994 +151.96756162967267, 2033.717029028034 +154.21558808008353, 2022.6898283357614 +156.46361453049443, 2011.335087028867 +158.7116409809053, 1999.1614941854177 +160.85748441084291, 1987.1844257107416 +162.90114482030734, 1974.7542593858384 +165.046988250245, 1960.784652172212 +167.19283168018262, 1946.7713728766362 +169.13430906917384, 1934.2477968208964 +171.07578645816503, 1920.109566846409 +173.01726384715622, 1905.3575014978524 +174.754375195201, 1892.5470241259716 +176.38930352277254, 1879.8616490721754 +178.02423185034405, 1867.0261512366776 +179.6591601779156, 1853.9654692286272 +181.29408850548714, 1840.3793574846206 +182.92901683305868, 1826.0426318321056 +184.56394516063023, 1811.7059061795903 +186.19887348820174, 1797.2190577453737 +187.83380181577328, 1782.8823320928584 +189.46873014334483, 1768.095238095238 +191.10365847091637, 1753.0829599250653 +192.63640377801468, 1738.3923734299674 +194.169149085113, 1723.5838333206755 +195.80407741268453, 1707.8960026328448 +197.23463969930964, 1693.7844611528822 +198.5630189654615, 1680.57365636313 diff --git a/docs/photonics/examples/crosstalk_reduction/3b.csv b/docs/photonics/examples/crosstalk_reduction/3b.csv new file mode 100644 index 00000000..c7eb7943 --- /dev/null +++ b/docs/photonics/examples/crosstalk_reduction/3b.csv @@ -0,0 +1,130 @@ +11.08127093915487, 1532.6261782402144 +13.431139450268383, 1627.7039399846426 +15.781007961381896, 1721.7808831843922 +18.13087647249541, 1817.3590542011607 +20.480744983608915, 1911.9364066732487 +22.830613494722428, 2009.5162147793726 +25.18048200583594, 2108.096841430176 +27.530350516949454, 2208.679105170334 +29.880219028062967, 2310.2621874551705 +32.23008753917648, 2413.8469068293634 +34.579956050289994, 2518.9328540205734 +36.92982456140351, 2624.5192104841235 +39.27969307251702, 2739.613343122116 +41.52274937857992, 2840.5959342801452 +43.765805684642814, 2957.291376589623 +46.11567419575633, 3079.391239040363 +48.358730501819224, 3192.3336118072966 +50.60178680788212, 3309.579504316347 +52.951655318995634, 3436.6834594904776 +55.08789942000793, 3554.835648792765 +57.01051911091898, 3667.98374537166 +59.039951006880656, 3786.26937714657 +61.06938290284232, 3908.958610518065 +63.098814798803986, 4039.4764689501535 +65.23505889981628, 4169.382716049384 +67.15767859072733, 4300.389863547759 +68.86667387153716, 4411.856028961292 +70.6824813573976, 4538.918283362728 +72.49828884325804, 4669.87956001114 +74.20728412406787, 4794.418917664532 +75.9162794048777, 4919.646338067391 +77.62527468568753, 5047.626009468116 +79.33426996649735, 5182.486308363502 +81.04326524730718, 5315.970481759956 +82.752260528117, 5452.894968903742 +84.35444360387622, 5584.5115434087875 +85.95662667963543, 5721.927503945049 +87.45199755034403, 5847.154924347908 +88.94736842105263, 5976.510721247564 +90.44273929176123, 6102.196850150067 +91.83129795741921, 6229.324634337167 +93.21985662307719, 6353.569107955073 +94.60841528873519, 6476.240866717058 +95.99697395439317, 6599.436863764349 +97.27872041500054, 6714.113988675393 +98.66727908065852, 6841.110713291165 +100.05583774631651, 6970.99074847613 +101.44439641197448, 7092.745090238825 +102.83295507763248, 7216.858504285406 +104.11470153823984, 7331.535629196449 +105.50326020389784, 7454.4695071010865 +107.10544327965704, 7590.705931495406 +108.60081415036564, 7716.850768897553 +109.98937281602363, 7831.921072522577 +111.59155589178283, 7960.195627958787 +113.30055117259266, 8081.982734614314 +115.00954645340249, 8196.889213775179 +116.82535393926295, 8314.395041100695 +118.96159804027522, 8427.265132528291 +121.31146655138875, 8527.84739626845 +123.66133506250225, 8598.9055129406 +126.01120357361577, 8625.927613646913 +128.36107208472927, 8627.42884146393 +130.7109405958428, 8574.885867868325 +133.0608091069563, 8483.31097103027 +135.09024100291796, 8370.281026640676 +136.7992362837278, 8238.86104149262 +138.2946071544364, 8113.174912590118 +139.6831658200944, 7979.756268979328 +140.96491228070175, 7841.986447600483 +141.92622212615728, 7724.19010489186 +142.88753197161282, 7609.696463380675 +143.95565402211895, 7466.579411491693 +145.02377607262508, 7328.966861598441 +146.09189812313124, 7173.739905318853 +147.05320796858678, 7043.007982920264 +147.90770560899168, 6904.01930752808 +148.99108654593363, 6723.943456524911 +149.6167008898015, 6605.858782759368 +150.68482294030764, 6454.484977876791 +151.8597571958644, 6288.615984405459 +152.39381822111747, 6159.994121105234 +153.03469145142117, 6052.656332188497 +153.67556468172484, 5946.2359602710485 +154.69028062970568, 5779.036712150748 +155.75840268021182, 5596.012020792723 +156.74938258262586, 5424.53149334241 +157.78783457617348, 5256.797085305858 +158.4821139090025, 5141.792311466498 +159.2297993443568, 4994.874532009036 +160.16737314424552, 4842.2775044607415 +161.20582513779314, 4680.200501253134 +161.90010447062213, 4563.033244486879 +162.9682265211283, 4393.180040047208 +163.9829424691091, 4228.831337603268 +164.89084621203935, 4095.6223893066 +165.63853164739365, 3962.7804078096488 +166.843983675822, 3779.8212462372867 +167.88158795345655, 3635.4460224635677 +168.94971000396268, 3490.127169776293 +169.8279436899344, 3335.8787916292804 +170.97914189992434, 3200.865589900678 +171.94045174537987, 3071.785018100808 +173.008573795886, 2926.4661654135352 +174.07669584639217, 2800.963519910889 +175.1448178968983, 2663.3509700176373 +176.10612774235383, 2547.2059779077326 +177.06743758780937, 2438.76728859185 +178.1355596383155, 2311.062842290913 +179.31049389387226, 2192.165599183144 +180.69905255953023, 2045.9031175823156 +182.08761122518823, 1916.940499396641 +183.47616989084622, 1783.2597366431964 +185.07835296660542, 1645.1557133574688 +186.78734824741525, 1505.4789752158176 +188.49634352822508, 1377.4993038150933 +190.2053388090349, 1254.336071660633 +192.02114629489535, 1137.1360500015471 +194.050578190857, 1014.2021720969096 +196.2936344969199, 889.0998540121345 +198.64350300803343, 776.5077677358386 +200.99337151914693, 669.4201834552714 +203.34324003026046, 578.3456958895567 +205.69310854137396, 496.77898449828353 +208.0429770524875, 422.71841219209637 +210.39284556360099, 360.66766242204903 +212.7427140747145, 301.61936828603575 +215.092582585828, 254.08048741382117 +217.44245109694154, 209.54406217564065 +219.04463417270074, 187.15074723846737 diff --git a/docs/photonics/examples/crosstalk_reduction/3c.csv b/docs/photonics/examples/crosstalk_reduction/3c.csv new file mode 100644 index 00000000..35e1120f --- /dev/null +++ b/docs/photonics/examples/crosstalk_reduction/3c.csv @@ -0,0 +1,1119 @@ +22.100000000000033, 2439.9086586540798 +22.200000000000035, 2164.4216495497967 +22.300000000000036, 2507.3748059847276 +22.400000000000038, 2861.4234552173293 +22.50000000000004, 2909.348896893149 +22.60000000000004, 2909.348896893149 +22.700000000000042, 2909.348896893149 +22.800000000000043, 2909.348896893149 +22.900000000000045, 2909.348896893149 +23.000000000000043, 2909.348896893149 +23.100000000000044, 2909.348896893149 +23.200000000000045, 2909.348896893149 +23.30000000000005, 2909.348896893149 +23.400000000000052, 2909.348896893149 +23.500000000000053, 2909.348896893149 +23.600000000000055, 2909.348896893149 +23.700000000000056, 2909.348896893149 +23.800000000000058, 2909.348896893149 +23.90000000000006, 2909.348896893149 +24.000000000000064, 2909.348896893149 +24.10000000000006, 2909.348896893149 +24.200000000000067, 2909.348896893149 +24.30000000000006, 2909.348896893149 +24.40000000000007, 2909.348896893149 +24.500000000000064, 2909.348896893149 +24.600000000000072, 2909.348896893149 +24.700000000000067, 2909.348896893149 +24.800000000000075, 2909.348896893149 +24.90000000000007, 2909.348896893149 +25.00000000000007, 2909.348896893149 +25.10000000000008, 2909.348896893149 +25.200000000000074, 2909.348896893149 +25.300000000000082, 2909.348896893149 +25.400000000000077, 2915.262765841908 +25.500000000000085, 3092.1442157119745 +25.60000000000008, 3257.924633357092 +25.700000000000088, 3324.2558821635903 +25.800000000000082, 3324.2558821635903 +25.90000000000009, 3324.2558821635903 +26.000000000000085, 3324.2558821635903 +26.100000000000087, 3324.2558821635903 +26.200000000000088, 3324.2558821635903 +26.30000000000009, 3324.2558821635903 +26.400000000000098, 3324.2558821635903 +26.500000000000092, 3324.2558821635903 +26.6000000000001, 3324.2558821635903 +26.700000000000095, 3324.2558821635903 +26.800000000000104, 3324.2558821635903 +26.900000000000098, 3324.2558821635903 +27.000000000000107, 3324.2558821635903 +27.1000000000001, 3324.2558821635903 +27.20000000000011, 3324.2558821635903 +27.300000000000104, 3324.2558821635903 +27.400000000000105, 3324.2558821635903 +27.500000000000114, 3324.2558821635903 +27.600000000000108, 3324.2558821635903 +27.700000000000117, 3324.2558821635903 +27.80000000000011, 3324.2558821635903 +27.90000000000012, 3324.2558821635903 +28.000000000000114, 3324.2558821635903 +28.100000000000122, 3324.2558821635903 +28.200000000000117, 3324.2558821635903 +28.300000000000125, 3324.2558821635903 +28.40000000000012, 3344.6939583203057 +28.50000000000012, 3430.6660825760337 +28.60000000000013, 3519.0304252494825 +28.700000000000124, 3531.7093747988692 +28.800000000000132, 3531.7093747988692 +28.900000000000126, 3531.7093747988692 +29.000000000000135, 3531.7093747988692 +29.10000000000013, 3531.7093747988692 +29.200000000000138, 3531.7093747988692 +29.300000000000132, 3531.7093747988692 +29.40000000000014, 3531.7093747988692 +29.500000000000135, 3531.7093747988692 +29.600000000000144, 3531.7093747988692 +29.700000000000138, 3531.7093747988692 +29.80000000000014, 3531.7093747988692 +29.900000000000148, 3531.7093747988692 +30.000000000000142, 3531.7093747988692 +30.10000000000015, 3531.7093747988692 +30.200000000000145, 3531.7093747988692 +30.300000000000153, 3531.7093747988692 +30.400000000000148, 3531.7093747988692 +30.500000000000156, 3531.7093747988692 +30.60000000000015, 3531.7093747988692 +30.70000000000016, 3531.7093747988692 +30.800000000000153, 3531.7093747988692 +30.900000000000162, 3531.7093747988692 +31.000000000000163, 3548.4692102518165 +31.100000000000158, 3635.633906339819 +31.200000000000166, 3723.009447138931 +31.30000000000016, 3739.16286743409 +31.40000000000017, 3739.16286743409 +31.500000000000163, 3739.16286743409 +31.600000000000172, 3739.16286743409 +31.700000000000166, 3739.16286743409 +31.800000000000175, 3739.16286743409 +31.90000000000017, 3739.16286743409 +32.00000000000018, 3739.16286743409 +32.10000000000017, 3739.16286743409 +32.20000000000017, 3739.16286743409 +32.30000000000018, 3739.16286743409 +32.400000000000176, 3739.16286743409 +32.500000000000185, 3739.16286743409 +32.60000000000018, 3739.16286743409 +32.70000000000019, 3739.16286743409 +32.80000000000018, 3739.16286743409 +32.90000000000019, 3739.16286743409 +33.000000000000185, 3739.16286743409 +33.10000000000019, 3739.16286743409 +33.20000000000019, 3739.16286743409 +33.300000000000196, 3739.16286743409 +33.4000000000002, 3854.813587415614 +33.50000000000019, 4015.217936340254 +33.6000000000002, 4154.0698527045315 +33.700000000000195, 4154.0698527045315 +33.8000000000002, 4154.0698527045315 +33.9000000000002, 4154.0698527045315 +34.000000000000206, 4154.0698527045315 +34.1000000000002, 4154.0698527045315 +34.20000000000021, 4154.0698527045315 +34.3000000000002, 4154.0698527045315 +34.40000000000021, 4154.0698527045315 +34.50000000000021, 4154.0698527045315 +34.600000000000215, 4154.0698527045315 +34.700000000000216, 4154.0698527045315 +34.80000000000021, 4154.0698527045315 +34.90000000000022, 4154.0698527045315 +35.00000000000021, 4154.0698527045315 +35.10000000000022, 4154.0698527045315 +35.200000000000216, 4154.0698527045315 +35.300000000000225, 4154.0698527045315 +35.40000000000022, 4154.0698527045315 +35.50000000000023, 4253.295494831516 +35.60000000000022, 4414.6655646646395 +35.70000000000023, 4568.976837975031 +35.80000000000023, 4568.976837975031 +35.900000000000226, 4568.976837975031 +36.000000000000234, 4568.976837975031 +36.10000000000023, 4568.976837975031 +36.20000000000024, 4568.976837975031 +36.30000000000023, 4568.976837975031 +36.40000000000024, 4568.976837975031 +36.500000000000234, 4568.976837975031 +36.60000000000024, 4568.976837975031 +36.70000000000024, 4568.976837975031 +36.800000000000246, 4568.976837975031 +36.90000000000025, 4568.976837975031 +37.00000000000025, 4568.976837975031 +37.10000000000025, 4568.976837975031 +37.200000000000244, 4568.976837975031 +37.30000000000025, 4568.976837975031 +37.40000000000025, 4568.976837975031 +37.500000000000256, 4699.094726722396 +37.60000000000025, 4859.305932893127 +37.70000000000026, 4983.8838232454145 +37.80000000000025, 4983.8838232454145 +37.90000000000026, 4983.8838232454145 +38.000000000000256, 4983.8838232454145 +38.100000000000264, 4983.8838232454145 +38.200000000000266, 4983.8838232454145 +38.30000000000026, 4983.8838232454145 +38.40000000000027, 4983.8838232454145 +38.50000000000026, 4983.8838232454145 +38.60000000000027, 4983.8838232454145 +38.700000000000266, 4983.8838232454145 +38.800000000000274, 4983.8838232454145 +38.90000000000027, 4983.8838232454145 +39.00000000000028, 4983.8838232454145 +39.10000000000027, 4983.8838232454145 +39.20000000000028, 4983.8838232454145 +39.30000000000028, 4993.492800445238 +39.40000000000028, 5082.3665674884105 +39.500000000000284, 5167.323845288891 +39.60000000000028, 5191.337315880635 +39.70000000000029, 5124.4626423851005 +39.80000000000028, 4958.784518932749 +39.90000000000029, 4781.998333756055 +40.000000000000284, 4942.719609077671 +40.10000000000029, 5105.463727633236 +40.20000000000029, 5191.337315880635 +40.300000000000296, 5191.337315880635 +40.40000000000029, 5191.337315880635 +40.5000000000003, 5191.337315880635 +40.6000000000003, 5191.337315880635 +40.7000000000003, 5191.337315880635 +40.8000000000003, 5191.337315880635 +40.9000000000003, 5192.955385810463 +41.000000000000306, 5280.964750552957 +41.1000000000003, 5363.462735501875 +41.20000000000031, 5398.790808515856 +41.3000000000003, 5398.790808515856 +41.40000000000031, 5398.790808515856 +41.500000000000306, 5398.790808515856 +41.600000000000314, 5398.790808515856 +41.700000000000315, 5398.790808515856 +41.80000000000032, 5398.790808515856 +41.90000000000032, 5398.790808515856 +42.00000000000031, 5398.790808515856 +42.10000000000032, 5398.790808515856 +42.200000000000315, 5398.790808515856 +42.300000000000324, 5457.460530547134 +42.40000000000032, 5624.802600961528 +42.50000000000033, 5802.6138915785705 +42.60000000000032, 5813.697793786356 +42.70000000000033, 5813.697793786356 +42.80000000000033, 5813.697793786356 +42.90000000000033, 5813.697793786356 +43.000000000000334, 5813.697793786356 +43.100000000000335, 5813.697793786356 +43.20000000000034, 5813.697793786356 +43.30000000000033, 5813.697793786356 +43.40000000000034, 5813.697793786356 +43.500000000000334, 5813.697793786356 +43.60000000000034, 5813.697793786356 +43.70000000000034, 5942.051494197105 +43.800000000000345, 6102.252575974038 +43.90000000000034, 6228.604779056797 +44.00000000000035, 6228.604779056797 +44.10000000000035, 6228.604779056797 +44.20000000000035, 6228.604779056797 +44.30000000000035, 6228.604779056797 +44.40000000000035, 6228.604779056797 +44.500000000000355, 6228.604779056797 +44.60000000000035, 6228.604779056797 +44.70000000000036, 6228.604779056797 +44.80000000000035, 6228.604779056797 +44.90000000000036, 6279.283075618616 +45.000000000000355, 6448.5094274369185 +45.100000000000364, 6626.428458993207 +45.200000000000365, 6643.511764327239 +45.30000000000037, 6643.511764327239 +45.40000000000037, 6643.511764327239 +45.50000000000037, 6643.511764327239 +45.60000000000037, 6643.511764327239 +45.700000000000365, 6643.511764327239 +45.800000000000374, 6643.511764327239 +45.90000000000037, 6643.511764327239 +46.00000000000038, 6643.511764327239 +46.10000000000037, 6643.511764327239 +46.20000000000038, 6643.511764327239 +46.300000000000374, 6703.4093471106025 +46.40000000000038, 6783.552032892359 +46.500000000000384, 6850.965256962518 +46.600000000000385, 6850.965256962518 +46.70000000000039, 6850.965256962518 +46.80000000000039, 6850.965256962518 +46.90000000000039, 6850.965256962518 +47.000000000000384, 6850.965256962518 +47.10000000000039, 6850.965256962518 +47.20000000000039, 6850.965256962518 +47.300000000000395, 6918.492941454228 +47.40000000000039, 6998.638315871358 +47.5000000000004, 7058.41874959768 +47.6000000000004, 7058.41874959768 +47.7000000000004, 7058.41874959768 +47.8000000000004, 7058.41874959768 +47.900000000000404, 7058.41874959768 +48.000000000000405, 7058.41874959768 +48.1000000000004, 7058.41874959768 +48.20000000000041, 7058.41874959768 +48.3000000000004, 7208.262917841261 +48.40000000000041, 7369.266864739475 +48.500000000000405, 7473.325734868122 +48.60000000000041, 7473.325734868122 +48.70000000000041, 7473.325734868122 +48.800000000000416, 7473.325734868122 +48.90000000000042, 7473.325734868122 +49.00000000000042, 7473.325734868122 +49.10000000000042, 7473.325734868122 +49.20000000000042, 7473.325734868122 +49.30000000000042, 7637.255827629822 +49.40000000000042, 7799.680793385429 +49.500000000000426, 7888.2327201386215 +49.60000000000042, 7888.2327201386215 +49.70000000000043, 7888.2327201386215 +49.80000000000042, 7888.2327201386215 +49.90000000000043, 7888.2327201386215 +50.00000000000043, 7967.564244053443 +50.100000000000435, 8131.183039479016 +50.200000000000436, 8303.139705409063 +50.30000000000044, 8303.139705409063 +50.40000000000044, 8303.139705409063 +50.50000000000043, 8303.139705409063 +50.60000000000044, 8303.139705409063 +50.700000000000436, 8303.139705409063 +50.800000000000445, 8303.139705409063 +50.90000000000044, 8373.972161852464 +51.00000000000045, 8454.231533122016 +51.10000000000045, 8510.593198044284 +51.20000000000045, 8510.593198044284 +51.30000000000045, 8510.593198044284 +51.40000000000045, 8510.593198044284 +51.500000000000455, 8510.593198044284 +51.600000000000456, 8538.671045474592 +51.70000000000046, 8622.623734261084 +51.80000000000045, 8711.595345035137 +51.90000000000046, 8718.046690679505 +52.000000000000455, 8718.046690679505 +52.10000000000046, 8718.046690679505 +52.20000000000046, 8740.379289839067 +52.300000000000466, 8917.702602693345 +52.40000000000047, 9088.63754978124 +52.50000000000047, 9132.953675950004 +52.60000000000047, 9132.953675950004 +52.70000000000047, 9132.953675950004 +52.80000000000047, 9132.953675950004 +52.900000000000475, 9132.953675950004 +53.000000000000476, 9258.651917053678 +53.10000000000047, 9418.855627338111 +53.20000000000048, 9547.860661220388 +53.30000000000047, 9547.860661220388 +53.40000000000048, 9547.860661220388 +53.50000000000048, 9547.860661220388 +53.600000000000485, 9633.968104704341 +53.700000000000486, 9796.683467882045 +53.80000000000049, 9962.767646490829 +53.90000000000049, 9962.767646490829 +54.00000000000049, 9962.767646490829 +54.10000000000049, 9962.767646490829 +54.200000000000486, 9986.887142407184 +54.300000000000495, 10071.816287838097 +54.40000000000049, 10160.698894335539 +54.5000000000005, 10170.221139126108 +54.60000000000049, 10170.221139126108 +54.7000000000005, 10170.221139126108 +54.8000000000005, 10178.20459131396 +54.9000000000005, 10267.188300799637 +55.000000000000504, 10351.62334357627 +55.100000000000506, 10377.674631761329 +55.20000000000051, 10377.674631761329 +55.30000000000051, 10399.32650188217 +55.40000000000051, 10576.759372213506 +55.500000000000504, 10747.469674036081 +55.60000000000051, 10792.58161703177 +55.700000000000514, 10792.58161703177 +55.80000000000051, 10820.251370503218 +55.90000000000051, 10996.412937578105 +56.00000000000052, 11169.140410868276 +56.10000000000053, 11207.48860230227 +56.20000000000051, 11207.48860230227 +56.300000000000516, 11241.480222906743 +56.40000000000054, 11415.646567387797 +56.50000000000053, 11590.555332064745 +56.60000000000051, 11622.395587572653 +56.70000000000052, 11622.395587572653 +56.800000000000544, 11642.689856421028 +56.900000000000524, 11728.705625717354 +57.00000000000052, 11817.040545687487 +57.10000000000054, 11829.849080207874 +57.20000000000055, 11876.316483199247 +57.30000000000053, 11957.29161198804 +57.400000000000524, 12037.302572843095 +57.50000000000055, 12037.302572843095 +57.600000000000556, 12184.620565447956 +57.700000000000536, 12345.449749355612 +57.80000000000053, 12452.209558113595 +57.90000000000055, 12452.209558113595 +58.00000000000055, 12452.209558113595 +58.10000000000054, 12452.209558113595 +58.200000000000536, 12560.673413176904 +58.30000000000056, 12783.143551743997 +58.40000000000055, 13095.545645998907 +58.50000000000055, 13273.078184030368 +58.600000000000556, 13282.023528654478 +58.700000000000564, 13282.023528654478 +58.80000000000056, 13316.597543252225 +58.90000000000055, 13412.706678554474 +59.00000000000056, 13589.053273383412 +59.100000000000556, 13677.370871206687 +59.200000000000564, 13696.930513924977 +59.30000000000056, 13696.930513924977 +59.40000000000057, 13696.930513924977 +59.50000000000056, 13697.146675282274 +59.60000000000057, 13871.80377766682 +59.70000000000058, 14035.936796699476 +59.80000000000057, 14196.163294494443 +59.90000000000057, 14359.102056921227 +60.000000000000576, 14526.74448446586 +60.100000000000584, 14526.74448446586 +60.20000000000058, 14665.823280725977 +60.30000000000057, 14872.254849688616 +60.40000000000058, 15068.69174872886 +60.50000000000059, 15149.104962371523 +60.60000000000057, 15149.104962371523 +60.70000000000058, 15149.104962371523 +60.8000000000006, 15298.795383659424 +60.900000000000595, 15540.78060159675 +61.000000000000576, 15771.465440277243 +61.100000000000584, 15771.465440277243 +61.20000000000061, 15925.167187483574 +61.3000000000006, 16194.046850665414 +61.40000000000058, 16454.717653945612 +61.50000000000059, 16601.279410818068 +61.60000000000061, 16601.279410818068 +61.70000000000059, 16601.279410818068 +61.80000000000059, 16658.93941846263 +61.90000000000061, 16773.288695405936 +62.00000000000062, 16925.583239370142 +62.1000000000006, 17013.844105773198 +62.20000000000059, 17183.7461203594 +62.300000000000615, 17469.705587936565 +62.400000000000624, 17714.353947874974 +62.500000000000604, 17878.501549593 +62.6000000000006, 18053.185944633966 +62.70000000000062, 18227.58337230439 +62.800000000000615, 18326.244115902635 +62.90000000000061, 18448.07050698885 +63.00000000000062, 18591.606061456318 +63.10000000000063, 18679.9082483527 +63.20000000000062, 18856.2355940392 +63.300000000000615, 19297.90717979468 +63.400000000000624, 19687.911525948963 +63.50000000000063, 19920.535292981716 +63.60000000000063, 19920.535292981716 +63.70000000000062, 19920.535292981716 +63.80000000000063, 20066.157974737755 +63.90000000000064, 20226.882526717032 +64.00000000000063, 20335.442278252216 +64.10000000000062, 20363.590681923495 +64.20000000000064, 20719.552027082187 +64.30000000000061, 21285.405776637024 +64.4000000000006, 21636.4322940837 +64.50000000000063, 21787.61672669876 +64.60000000000062, 21787.61672669876 +64.70000000000059, 21787.61672669876 +64.80000000000058, 22027.520735632163 +64.9000000000006, 22499.277692000614 +65.0000000000006, 22959.721874878975 +65.10000000000056, 23252.562237804348 +65.20000000000056, 23340.90572830761 +65.30000000000058, 23510.299818878935 +65.40000000000055, 23612.04260840552 +65.50000000000054, 23804.556891996413 +65.60000000000056, 24133.128375310916 +65.70000000000056, 24482.99838190124 +65.80000000000052, 24744.585175985587 +65.90000000000052, 25120.174642158556 +66.00000000000054, 25396.874142115703 +66.10000000000053, 25579.178910699557 +66.2000000000005, 25843.658451230847 +66.3000000000005, 26372.08224291267 +66.40000000000052, 26661.338848545216 +66.50000000000051, 27037.23834943137 +66.60000000000048, 27523.941968424304 +66.70000000000047, 28027.83674307441 +66.8000000000005, 28382.680072479707 +66.90000000000049, 28932.82980222779 +67.00000000000045, 29299.206879649253 +67.10000000000048, 29541.41843684722 +67.20000000000047, 29814.93586983648 +67.30000000000044, 30348.831802520843 +67.40000000000043, 30625.000135416107 +67.50000000000045, 30866.762364175054 +67.60000000000045, 31108.099101872125 +67.70000000000041, 31396.886713168526 +67.80000000000041, 32019.089421815355 +67.90000000000043, 33011.33427407552 +68.00000000000043, 33585.099515110254 +68.10000000000039, 33953.033273321285 +68.20000000000039, 34371.45336298237 +68.30000000000041, 35344.08622984623 +68.4000000000004, 35956.823195021425 +68.50000000000037, 36465.66073065321 +68.60000000000039, 36946.42752482847 +68.70000000000039, 37455.21923254349 +68.80000000000035, 38068.33425874758 +68.90000000000035, 39194.81648648094 +69.00000000000037, 39807.896534155414 +69.10000000000036, 40288.506286113756 +69.20000000000033, 40909.62753391644 +69.30000000000032, 42024.987361066334 +69.40000000000035, 42640.79588420229 +69.50000000000034, 43149.849181990605 +69.6000000000003, 43630.832757327065 +69.7000000000003, 44162.066401091346 +69.80000000000032, 44888.45617046236 +69.90000000000032, 46572.91117574065 +70.00000000000028, 47577.31618663721 +70.1000000000003, 48557.872769229056 +70.2000000000003, 49915.137662879424 +70.30000000000027, 51945.39687822282 +70.40000000000026, 53013.03723482299 +70.50000000000028, 54322.76493488124 +70.60000000000028, 55611.62845188816 +70.70000000000024, 56899.225779536006 +70.80000000000024, 58366.72031333565 +70.90000000000026, 61034.2049792817 +71.00000000000026, 62312.00410478213 +71.10000000000022, 63556.97559873975 +71.20000000000022, 65366.73497984075 +71.30000000000024, 67827.99627159181 +71.40000000000023, 69243.89873620251 +71.5000000000002, 70285.76489169104 +71.60000000000022, 71261.33994128858 +71.70000000000022, 72954.76205022942 +71.80000000000018, 76193.74850827805 +71.90000000000018, 82508.38432531041 +72.0000000000002, 86009.01100921107 +72.1000000000002, 89287.76631064428 +72.20000000000016, 95084.87870943925 +72.30000000000015, 102854.28858098999 +72.40000000000018, 108395.58786787017 +72.50000000000017, 113838.94556764863 +72.60000000000014, 118943.20376264123 +72.70000000000013, 123908.47511549143 +72.80000000000015, 130220.08027979499 +72.90000000000015, 140345.75749522055 +73.00000000000011, 145568.21586685613 +73.10000000000014, 150902.1328471932 +73.20000000000013, 158960.69301053564 +73.3000000000001, 167343.57854360595 +73.40000000000009, 172364.55250951453 +73.50000000000011, 178057.50989175212 +73.60000000000011, 183423.75334541628 +73.70000000000007, 188111.97591695204 +73.80000000000007, 194010.65352295374 +73.90000000000009, 202411.37948156195 +74.00000000000009, 206947.3839934667 +74.10000000000005, 211267.39796233634 +74.20000000000005, 217736.51015246214 +74.30000000000007, 223549.30911104154 +74.40000000000006, 227013.26269141494 +74.50000000000003, 230555.730430332 +74.60000000000005, 233981.85987594622 +74.70000000000005, 237231.66654598623 +74.80000000000001, 241955.93393201652 +74.9, 248117.90382727885 +75.00000000000003, 251806.08110460802 +75.10000000000002, 255361.45161844513 +75.19999999999999, 261192.07104781352 +75.29999999999998, 265962.3215433076 +75.4, 269169.31612743076 +75.5, 272639.2524235064 +75.59999999999997, 276149.7260206044 +76.01683029453017, 291741.7417417417 +76.09999999999997, 273077.79780171457 +76.19999999999996, 262042.9616739996 +76.29999999999993, 252577.7722502006 +76.39999999999992, 244703.12663264424 +76.49999999999994, 236566.5484611872 +76.59999999999994, 228029.27387656554 +76.6999999999999, 219839.3747718719 +76.7999999999999, 207004.2907042361 +76.89999999999992, 194157.5893767561 +76.99999999999991, 186103.9049005816 +77.09999999999988, 177563.60767255168 +77.19999999999987, 161842.42980107723 +77.2999999999999, 151568.29470474768 +77.39999999999989, 143810.89305874842 +77.49999999999986, 135831.60842833633 +77.59999999999988, 127323.65277848803 +77.69999999999987, 120502.83448989328 +77.79999999999984, 110709.24493383296 +77.89999999999984, 102629.43225409806 +77.99999999999986, 97930.86369005975 +78.09999999999985, 92919.46534157672 +78.19999999999982, 86452.10015172698 +78.29999999999981, 83924.6121158087 +78.39999999999984, 82403.79402942263 +78.49999999999983, 80767.13434453792 +78.5999999999998, 79031.15490852209 +78.69999999999982, 77453.47255793045 +78.79999999999981, 74835.15909163869 +78.8999999999998, 72810.56449141662 +78.99999999999977, 71386.20260058314 +79.0999999999998, 69707.08075563825 +79.19999999999979, 66610.98285600223 +79.29999999999976, 65051.881339316955 +79.39999999999975, 63626.24666430248 +79.49999999999977, 62089.1023819205 +79.59999999999977, 60493.25870317302 +79.69999999999973, 59070.818972074485 +79.79999999999973, 56765.72791470989 +79.89999999999975, 55249.66242695687 +79.99999999999974, 54202.256063652865 +80.09999999999971, 53061.29922974954 +80.19999999999973, 51370.74289704935 +80.29999999999973, 50778.40521370107 +80.39999999999972, 50293.85865188332 +80.49999999999969, 49811.90512714855 +80.59999999999971, 49290.60729345586 +80.6999999999997, 48581.147792039206 +80.79999999999967, 47246.363843045896 +80.89999999999966, 46418.78081591899 +80.99999999999969, 45812.70310876047 +81.09999999999968, 45150.794616226165 +81.19999999999965, 44006.53657979233 +81.29999999999964, 43476.36982334772 +81.39999999999966, 42986.666859493766 +81.49999999999966, 42506.050331554376 +81.59999999999962, 41997.43136141548 +81.69999999999965, 41384.86124125036 +81.79999999999964, 40159.42368330795 +81.89999999999964, 39474.35346731916 +81.9999999999996, 38956.37437377614 +82.09999999999962, 38406.48542026896 +82.19999999999962, 37649.54418390186 +82.29999999999959, 37384.38961986784 +82.39999999999958, 37135.89820573275 +82.4999999999996, 36895.1967089707 +82.5999999999996, 36628.38653555809 +82.69999999999956, 36257.23719405092 +82.79999999999956, 35368.53641496028 +82.89999999999958, 34828.540289300785 +82.99999999999957, 34497.84051733732 +83.09999999999954, 34173.50565538893 +83.19999999999956, 33692.59483970073 +83.29999999999956, 33425.63406820508 +83.39999999999955, 32939.86966707243 +83.49999999999952, 32455.556745583774 +83.59999999999954, 32035.737586196046 +83.69999999999953, 31670.4777142643 +83.7999999999995, 31049.32996713894 +83.8999999999995, 30776.226298326103 +83.99999999999952, 30532.94420639437 +84.09999999999951, 30257.546312519757 +84.19999999999948, 29968.32661068876 +84.29999999999947, 29880.2111269359 +84.3999999999995, 29540.660393164202 +84.49999999999949, 29214.429518608667 +84.59999999999945, 29009.868100178777 +84.69999999999948, 28894.18879538757 +84.79999999999947, 28633.05833805917 +84.89999999999947, 28458.24125023588 +84.99999999999943, 28227.96797714173 +85.09999999999945, 27817.841557521082 +85.19999999999945, 27308.258282707597 +85.29999999999941, 26971.47052668204 +85.39999999999941, 26883.165702204104 +85.49999999999943, 26800.415174777794 +85.59999999999943, 26720.198592956876 +85.69999999999939, 26544.937604525767 +85.79999999999939, 26124.47062036919 +85.89999999999941, 25769.139709425275 +85.9999999999994, 25508.72410910466 +86.09999999999937, 25267.510350972298 +86.19999999999939, 25106.87260886235 +86.29999999999939, 25084.225918014126 +86.39999999999938, 24817.249156956852 +86.49999999999935, 24564.357417125604 +86.59999999999937, 24484.51213095669 +86.69999999999936, 24361.65809809044 +86.79999999999933, 24028.15054135816 +86.89999999999932, 23673.016932048835 +86.99999999999935, 23654.698160415806 +87.09999999999934, 23538.81233908917 +87.1999999999993, 23378.41608927009 +87.2999999999993, 23239.791175145307 +87.39999999999932, 23239.791175145307 +87.49999999999932, 23239.791175145307 +87.59999999999928, 22992.602455429907 +87.6999999999993, 22672.160673986305 +87.7999999999993, 22409.977204604424 +87.8999999999993, 22409.920828739763 +87.99999999999926, 22148.078162351216 +88.09999999999928, 21901.95402556588 +88.19999999999928, 21787.61672669876 +88.29999999999924, 21767.854161731375 +88.39999999999924, 21681.675010549487 +88.49999999999926, 21593.45516116015 +88.59999999999926, 21441.403545961715 +88.69999999999922, 21281.00250783947 +88.79999999999922, 21165.25624879304 +88.89999999999924, 21156.006293269398 +88.99999999999923, 20978.425427920534 +89.0999999999992, 20665.48553582077 +89.19999999999922, 20443.434108734073 +89.29999999999922, 20335.442278252216 +89.39999999999921, 20335.442278252216 +89.49999999999918, 20335.442278252216 +89.5999999999992, 20182.045819151273 +89.69999999999919, 20020.75681283523 +89.79999999999916, 19920.535292981716 +89.89999999999915, 19920.535292981716 +89.99999999999918, 19920.535292981716 +90.09999999999917, 19760.090991906065 +90.19999999999914, 19598.092568695603 +90.29999999999913, 19437.66456320387 +90.39999999999915, 19272.188189561304 +90.49999999999915, 19095.604352201044 +90.59999999999911, 19090.721322440833 +90.69999999999914, 18968.01681750291 +90.79999999999913, 18807.784673057147 +90.89999999999912, 18659.70036538475 +90.99999999999909, 18572.311372652475 +91.09999999999911, 18485.160476422578 +91.19999999999911, 18468.360844535113 +91.29999999999907, 18468.360844535113 +91.39999999999907, 18468.360844535113 +91.49999999999909, 18466.41155043553 +91.59999999999908, 18378.281621023198 +91.69999999999905, 18157.79405900906 +91.79999999999905, 17962.64270447864 +91.89999999999907, 17846.00036662945 +91.99999999999906, 17837.3298291408 +92.09999999999903, 17659.84344369202 +92.19999999999905, 17493.237800920673 +92.29999999999905, 17431.09338135901 +92.39999999999904, 17431.09338135901 +92.499999999999, 17431.09338135901 +92.59999999999903, 17431.09338135901 +92.69999999999902, 17278.52631555905 +92.79999999999899, 17117.308063313423 +92.89999999999898, 17016.186396088568 +92.999999999999, 17016.186396088568 +93.099999999999, 17016.186396088568 +93.19999999999897, 17016.186396088568 +93.29999999999899, 16959.14035689627 +93.39999999999898, 16878.90928864089 +93.49999999999898, 16808.732903453347 +93.59999999999894, 16808.732903453347 +93.69999999999897, 16725.485826785385 +93.79999999999896, 16644.099308117642 +93.89999999999895, 16601.279410818068 +93.99999999999892, 16601.279410818068 +94.09999999999894, 16601.279410818068 +94.19999999999894, 16601.279410818068 +94.2999999999989, 16471.811660276435 +94.3999999999989, 16311.605294556415 +94.49999999999892, 16186.372425547626 +94.59999999999891, 16186.372425547626 +94.69999999999888, 16186.372425547626 +94.7999999999989, 16186.372425547626 +94.8999999999989, 16096.456702982308 +94.99999999999889, 15934.185734086961 +95.09999999999886, 15771.465440277243 +95.19999999999888, 15771.465440277243 +95.29999999999887, 15771.465440277243 +95.39999999999887, 15771.465440277243 +95.49999999999883, 15719.753352644912 +95.59999999999886, 15550.786505783384 +95.69999999999885, 15372.829357949959 +95.79999999999882, 15356.558455006743 +95.89999999999881, 15356.558455006743 +95.99999999999883, 15356.558455006743 +96.09999999999883, 15356.558455006743 +96.1999999999988, 15356.558455006743 +96.29999999999882, 15277.143648685305 +96.39999999999881, 15196.234505425906 +96.4999999999988, 15149.104962371523 +96.59999999999877, 15149.104962371523 +96.6999999999988, 15149.104962371523 +96.79999999999879, 15149.104962371523 +96.89999999999878, 15149.104962371523 +96.99999999999875, 15149.104962371523 +97.09999999999877, 15149.104962371523 +97.19999999999877, 15149.104962371523 +97.29999999999873, 15062.928531663143 +97.39999999999873, 14981.085542609042 +97.49999999999875, 14941.651469736302 +97.59999999999874, 14941.651469736302 +97.69999999999871, 14941.651469736302 +97.79999999999873, 14941.651469736302 +97.89999999999873, 14941.651469736302 +97.99999999999872, 14941.651469736302 +98.09999999999869, 14941.651469736302 +98.19999999999871, 14934.12353149458 +98.2999999999987, 14756.855775176722 +98.3999999999987, 14590.59428468591 +98.49999999999866, 14526.74448446586 +98.59999999999869, 14526.74448446586 +98.69999999999868, 14526.74448446586 +98.79999999999865, 14526.74448446586 +98.89999999999864, 14526.74448446586 +98.99999999999866, 14526.74448446586 +99.09999999999866, 14526.74448446586 +99.19999999999862, 14526.74448446586 +99.29999999999865, 14526.74448446586 +99.39999999999864, 14526.74448446586 +99.49999999999864, 14414.448223390675 +99.5999999999986, 14253.910698802734 +99.69999999999862, 14111.83749919536 +99.79999999999862, 14111.83749919536 +99.89999999999861, 14111.83749919536 +99.99999999999858, 14111.83749919536 +100.0999999999986, 14111.83749919536 +100.1999999999986, 14111.83749919536 +100.29999999999856, 14111.83749919536 +100.39999999999856, 14111.83749919536 +100.49999999999858, 14111.83749919536 +100.59999999999857, 14111.83749919536 +100.69999999999854, 14111.83749919536 +100.79999999999856, 14111.83749919536 +100.89999999999856, 14111.83749919536 +100.99999999999855, 14111.83749919536 +101.09999999999852, 14111.83749919536 +101.19999999999854, 14068.68989460863 +101.29999999999853, 13897.4191595327 +101.39999999999853, 13720.275552445557 +101.4999999999985, 13696.930513924977 +101.59999999999852, 13696.930513924977 +101.69999999999851, 13696.930513924977 +101.79999999999848, 13696.930513924977 +101.89999999999847, 13696.930513924977 +101.9999999999985, 13846.994546535425 +102.09999999999849, 14008.01478864823 +102.19999999999845, 14054.626604057848 +102.29999999999848, 13886.960848931281 +102.39999999999847, 13709.062292121584 +102.49999999999847, 13696.930513924977 +102.59999999999843, 13696.930513924977 +102.69999999999845, 13696.930513924977 +102.79999999999845, 13696.930513924977 +102.89999999999844, 13696.930513924977 +102.99999999999841, 13696.930513924977 +103.09999999999843, 13696.930513924977 +103.19999999999843, 13696.930513924977 +103.29999999999839, 13696.930513924977 +103.39999999999839, 13696.930513924977 +103.49999999999841, 13696.930513924977 +103.5999999999984, 13696.930513924977 +103.69999999999837, 13696.930513924977 +103.79999999999839, 13696.930513924977 +103.89999999999839, 13696.930513924977 +103.99999999999838, 13696.930513924977 +104.09999999999835, 13696.930513924977 +104.19999999999837, 13696.930513924977 +104.29999999999836, 13696.930513924977 +104.39999999999836, 13696.930513924977 +104.49999999999832, 13696.930513924977 +104.59999999999835, 13696.930513924977 +104.69999999999834, 13696.930513924977 +104.7999999999983, 13746.192790477595 +104.8999999999983, 13904.38400656014 +104.99999999999832, 13904.38400656014 +105.09999999999832, 13755.159119445656 +105.19999999999828, 13696.930513924977 +105.2999999999983, 13696.930513924977 +105.3999999999983, 13713.706929117732 +105.4999999999983, 13891.642167027516 +105.59999999999826, 14060.770332005108 +105.69999999999828, 14111.83749919536 +105.79999999999828, 14111.83749919536 +105.89999999999827, 14111.83749919536 +105.99999999999824, 14111.83749919536 +106.09999999999826, 14111.83749919536 +106.19999999999825, 14111.83749919536 +106.29999999999822, 14111.83749919536 +106.39999999999822, 14111.83749919536 +106.49999999999824, 14111.83749919536 +106.59999999999823, 14111.83749919536 +106.6999999999982, 14111.83749919536 +106.79999999999822, 14111.83749919536 +106.89999999999822, 14146.777420007216 +106.99999999999821, 14320.620507676096 +107.09999999999818, 14495.832820076786 +107.1999999999982, 14526.74448446586 +107.29999999999819, 14526.74448446586 +107.39999999999819, 14526.74448446586 +107.49999999999815, 14526.74448446586 +107.59999999999818, 14526.74448446586 +107.69999999999817, 14526.74448446586 +107.79999999999816, 14526.74448446586 +107.89999999999816, 14526.74448446586 +107.99999999999815, 14526.74448446586 +108.09999999999815, 14526.74448446586 +108.19999999999811, 14675.127900532738 +108.29999999999814, 14836.02801262238 +108.39999999999813, 14941.651469736302 +108.49999999999812, 14949.718706358399 +108.59999999999809, 15038.699720974953 +108.69999999999811, 15123.161420301185 +108.79999999999811, 15149.104962371523 +108.8999999999981, 15149.104962371523 +108.99999999999807, 15149.104962371523 +109.09999999999809, 15149.104962371523 +109.19999999999808, 15149.104962371523 +109.29999999999808, 15149.104962371523 +109.39999999999807, 15184.226469964662 +109.49999999999807, 15266.760473117174 +109.59999999999806, 15354.816173470113 +109.69999999999803, 15356.558455006743 +109.79999999999805, 15481.60213352117 +109.89999999999804, 15641.809765046346 +109.99999999999804, 15771.465440277243 +110.099999999998, 15771.465440277243 +110.19999999999803, 15771.465440277243 +110.29999999999802, 15771.465440277243 +110.39999999999802, 15856.915275426814 +110.49999999999798, 16060.504938236787 +110.599999999998, 16399.134865190717 +110.699999999998, 16575.846685923578 +110.799999999998, 16601.279410818068 +110.89999999999799, 16601.279410818068 +110.99999999999798, 16601.279410818068 +111.09999999999798, 16606.382677196234 +111.19999999999794, 16695.239553728374 +111.29999999999797, 16778.775989368965 +111.39999999999796, 16859.197794417792 +111.49999999999795, 16939.814361809695 +111.59999999999792, 17016.186396088568 +111.69999999999794, 17016.186396088568 +111.79999999999794, 17016.186396088568 +111.89999999999793, 17233.586082722002 +111.9999999999979, 17555.019692520844 +112.09999999999792, 17846.00036662945 +112.19999999999791, 17846.00036662945 +112.29999999999791, 17846.00036662945 +112.3999999999979, 18020.677444038098 +112.4999999999979, 18261.243589358055 +112.59999999999789, 18468.360844535113 +112.69999999999786, 18468.360844535113 +112.79999999999788, 18721.16601476475 +112.89999999999787, 19089.92976592033 +112.99999999999787, 19375.091806139273 +113.09999999999783, 19539.068428004917 +113.19999999999786, 19713.425446880166 +113.29999999999785, 19888.14951227262 +113.39999999999785, 20052.318466576864 +113.49999999999781, 20212.548013012973 +113.59999999999783, 20335.442278252216 +113.69999999999783, 20344.978787995584 +113.79999999999782, 20698.075012784277 +113.89999999999782, 21098.613145978947 +113.99999999999781, 21315.119543956826 +114.0999999999978, 21466.385315958003 +114.19999999999777, 21806.853541838645 +114.2999999999978, 22162.124351398146 +114.39999999999779, 22422.564227937197 +114.49999999999778, 22813.79295530886 +114.59999999999775, 23216.88528483291 +114.69999999999777, 23469.5424239884 +114.79999999999777, 23736.521337811544 +114.89999999999776, 24374.099357775063 +114.99999999999773, 24857.73888948164 +115.09999999999775, 25259.657797840016 +115.19999999999774, 25676.70536733663 +115.29999999999774, 26120.704681589792 +115.39999999999773, 26385.56721029547 +115.49999999999773, 26801.985833384388 +115.59999999999772, 27180.444841203687 +115.69999999999769, 27481.375805430755 +115.79999999999771, 28099.04444526136 +115.8999999999977, 29373.172114985005 +115.9999999999977, 30163.914415037958 +116.09999999999766, 30880.8509908141 +116.19999999999769, 31701.4098080658 +116.29999999999768, 32574.49494885042 +116.39999999999768, 33795.47297684697 +116.49999999999764, 35729.1283648003 +116.59999999999766, 37226.28568373178 +116.69999999999766, 38243.66672082851 +116.79999999999765, 39476.19617572217 +116.89999999999765, 41769.064861345745 +116.99999999999764, 42948.70103660459 +117.09999999999764, 43911.039764571295 +117.1999999999976, 44883.71368394344 +117.29999999999762, 45915.47111619823 +117.39999999999762, 47158.30128322536 +117.49999999999761, 49200.38781566243 +117.59999999999758, 50596.070159810595 +117.6999999999976, 53182.49380601355 +117.7999999999976, 59878.788735366485 +117.89999999999759, 73138.52704367955 +117.99999999999756, 80090.80167443468 +118.09999999999758, 87715.3811517012 +118.19999999999757, 96078.05740265397 +118.29999999999757, 105098.72072803293 +118.39999999999756, 117358.79306261835 +118.49999999999756, 140146.37545986628 +118.59999999999755, 154586.0469149877 +118.69999999999752, 165724.07409221015 +118.79999999999754, 179086.65794022492 +118.89999999999753, 203640.25683115888 +118.99999999999753, 215868.73994741624 +119.09999999999752, 226988.27652259264 +119.19999999999752, 237891.8818567697 +119.29999999999751, 249068.51709957537 +119.3999999999975, 260967.87382414597 +119.49999999999747, 284278.83207808784 +119.59999999999746, 297401.81618277385 +120, 342042.042042042 +120.19999999999743, 299096.8904877326 +120.29999999999742, 289329.1684543316 +120.39999999999742, 275894.1400873116 +120.49999999999744, 249276.7842553599 +120.59999999999744, 235170.20404014498 +120.69999999999743, 223323.8670714282 +120.7999999999974, 207578.0150595231 +120.89999999999739, 183413.79219958882 +120.99999999999739, 169872.05231604027 +121.09999999999738, 157329.8844582207 +121.1999999999974, 145330.1312496043 +121.2999999999974, 133644.34090885127 +121.39999999999739, 120572.22606303441 +121.49999999999736, 94805.03247810889 +121.59999999999735, 81260.83219377085 +121.69999999999735, 72218.25841079548 +121.79999999999734, 61975.53529165499 +121.89999999999733, 48817.87520002277 +121.99999999999736, 41922.57580223889 +122.09999999999735, 36633.87015822739 +122.19999999999735, 31670.53153060621 +122.29999999999731, 28825.640593455348 +122.3999999999973, 28176.380716231128 +122.4999999999973, 26775.472374721605 +122.5999999999973, 25902.35939219332 +122.69999999999732, 25341.805838952132 +122.79999999999731, 24451.725780277862 +122.8999999999973, 23258.745516164985 +122.99999999999727, 22400.435308429005 +123.09999999999727, 21872.442362278525 +123.19999999999726, 21377.502676602453 +123.29999999999725, 20717.328218478535 +123.39999999999725, 19772.470107717556 +123.49999999999727, 18444.70237875922 +123.59999999999727, 17912.679314966605 +123.69999999999726, 17269.42935657763 +123.79999999999723, 16383.537395521591 +123.89999999999722, 15539.214815786807 +123.99999999999721, 15116.609097935143 +124.09999999999721, 14671.73999994743 +124.19999999999723, 14251.90200688818 +124.29999999999723, 13954.188327230397 +124.39999999999722, 13624.917121957114 +124.49999999999719, 13150.56437766226 +124.59999999999718, 12883.838123897905 +124.69999999999717, 12629.320702367462 +124.79999999999717, 12273.778380045143 +124.89999999999716, 11971.38018745085 +124.99999999999719, 11793.358590016316 +125.09999999999718, 11527.932673204923 +125.19999999999717, 11270.535193181946 +125.29999999999714, 10966.302908338606 +125.39999999999714, 10572.358711019333 +125.49999999999713, 10139.735556140658 +125.59999999999712, 9964.388590851508 +125.69999999999715, 9618.618906794873 +125.79999999999714, 9098.952250795264 +125.89999999999714, 8700.263143835764 +125.9999999999971, 8510.593198044284 +126.0999999999971, 8510.593198044284 +126.19999999999709, 8510.593198044284 +126.29999999999708, 8442.676031797717 +126.39999999999708, 8273.829753907572 +126.4999999999971, 8052.03958849312 +126.5999999999971, 7880.913124571845 +126.69999999999709, 7703.690010699967 +126.79999999999706, 7394.202681241732 +126.89999999999705, 7169.440731403127 +126.99999999999704, 7058.41874959768 +127.09999999999704, 7058.41874959768 +127.19999999999706, 7058.41874959768 +127.29999999999706, 6907.82631567202 +127.39999999999705, 6746.766191826609 +127.49999999999702, 6643.511764327239 +127.59999999999701, 6607.844177048362 +127.699999999997, 6252.103546597937 +127.799999999997, 5913.169016947562 +127.899999999997, 5813.697793786356 +127.99999999999702, 5748.633959293249 +128.099999999997, 5582.610713670205 +128.199999999997, 5405.521929693001 +128.29999999999697, 5398.790808515856 +128.39999999999696, 5338.940826254897 +128.49999999999696, 5258.797057793243 +128.59999999999695, 5191.337315880635 +128.69999999999698, 5191.337315880635 +128.79999999999697, 5105.678866369533 +128.89999999999696, 5023.922848585236 +128.99999999999693, 4903.762311034079 +129.09999999999692, 4740.25643495156 +129.19999999999692, 4568.976837975031 +129.2999999999969, 4568.976837975031 +129.3999999999969, 4568.976837975031 +129.49999999999693, 4568.976837975031 +129.59999999999692, 4526.120295626402 +129.69999999999692, 4348.006265848002 +129.79999999999688, 3993.8156324428855 +129.89999999999688, 3804.184576880012 +129.99999999999687, 3739.16286743409 +130.09999999999687, 3739.16286743409 +130.1999999999969, 3739.16286743409 +130.29999999999688, 3739.16286743409 +130.39999999999688, 3739.16286743409 +130.49999999999687, 3739.16286743409 +130.59999999999684, 3710.7117915266426 +130.69999999999683, 3626.844098824309 +130.79999999999683, 3537.8874797423487 +130.89999999999682, 3531.7093747988692 +130.99999999999685, 3476.1763046994456 +131.09999999999684, 3395.8790050087264 +131.19999999999683, 3324.2558821635903 +131.2999999999968, 3324.2558821635903 +131.3999999999968, 3324.2558821635903 +131.4999999999968, 3324.2558821635903 +131.59999999999678, 3252.593924921355 +131.6999999999968, 3087.770823350933 +131.7999999999968, 2911.9866821918986 +131.8999999999968, 2909.348896893149 +131.9999999999968, 2909.348896893149 +132.09999999999675, 2909.348896893149 +132.19999999999675, 2909.348896893149 +132.29999999999674, 2907.703262279334 +132.39999999999674, 2732.345085232111 +132.49999999999676, 2567.8065950152813 +132.59999999999675, 2494.4419116227073 +132.69999999999675, 2494.4419116227073 +132.79999999999671, 2494.4419116227073 +132.8999999999967, 2494.4419116227073 +132.9999999999967, 2494.4419116227073 +133.0999999999967, 2494.4419116227073 +133.19999999999672, 2445.479123545927 +133.29999999999671, 2275.811263917596 +133.3999999999967, 2097.990936068294 +133.4999999999967, 2079.5349263522658 +133.59999999999667, 2079.5349263522658 +133.69999999999666, 2079.5349263522658 +133.79999999999666, 2079.5349263522658 +133.89999999999665, 2079.5349263522658 +133.99999999999667, 2079.5349263522658 +134.09999999999667, 2079.5349263522658 +134.19999999999666, 2047.8585924790823 +134.29999999999663, 1964.6782617290155 +134.39999999999662, 1876.0105316364206 +134.49999999999662, 1872.081433717045 +134.5999999999966, 1872.081433717045 diff --git a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py new file mode 100644 index 00000000..98b9019b --- /dev/null +++ b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py @@ -0,0 +1,131 @@ +# --- +# jupyter: +# jupytext: +# formats: py:percent,md:myst +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.15.0 +# kernelspec: +# display_name: Python 3 +# name: python3 +# --- + +# %% [markdown] +# # Bent waveguide losses +# This example reproduces Figure 3 from {cite}`Yang2020`` in which the crosstalk between adjacent waveguides is suppressed. + +# %% tags=["hide-input"] +from collections import OrderedDict + +import matplotlib.pyplot as plt +import numpy as np +from shapely.geometry import Polygon, box +from skfem import Basis, ElementTriP0 +from skfem.io import from_meshio + +from femwell.maxwell.waveguide import compute_modes +from femwell.mesh import mesh_from_OrderedDict + +# %% +w_sim = 4 +h_clad = 1 +h_box = 1 +w_core_1 = 0.5 +w_core_2 = 0.5 +gap = 0.5 +h_core = 0.22 +h_rib = 0.05 +w_core_c = 0.2 +num_c = 2 + +wavelength = 1.55 + +references = ("3a.csv", "3b.csv") + +for num_c, reference in zip([1, 2], references): + reference_data = np.loadtxt(reference, unpack=True, delimiter=",") + + w_core_cs = np.linspace(np.min(reference_data[0]), np.max(reference_data[0]), 15) * 1e-3 + coupling_lengths = [] + + for w_core_c in w_core_cs: + + def core_c_pos(i): + return ( + -gap / 2 + (gap - w_core_c * num_c) * (i + 1) / (num_c + 1) + (i + 0.5) * w_core_c + ) + + polygons = OrderedDict( + core_1=Polygon( + [ + (-w_core_1 - gap / 2, 0), + (-w_core_1 - gap / 2, h_core), + (-gap / 2, h_core), + (-gap / 2, 0), + ] + ), + core_2=Polygon( + [ + (w_core_2 + gap / 2, 0), + (w_core_2 + gap / 2, h_core), + (gap / 2, h_core), + (gap / 2, 0), + ] + ), + **{ + f"core_c_{i}": Polygon( + [ + (core_c_pos(i) - w_core_c / 2, 0), + (core_c_pos(i) - w_core_c / 2, h_core), + (core_c_pos(i) + w_core_c / 2, h_core), + (core_c_pos(i) + w_core_c / 2, 0), + ] + ) + for i in range(num_c) + }, + # rib=box(-w_sim / 2, 0, w_sim / 2, h_rib), + clad=Polygon( + [(-w_sim / 2, 0), (-w_sim / 2, h_clad), (w_sim / 2, h_clad), (w_sim / 2, 0)] + ), + box=Polygon( + [(-w_sim / 2, 0), (-w_sim / 2, -h_box), (w_sim / 2, -h_box), (w_sim / 2, 0)] + ), + ) + + resolutions = dict( + core_1={"resolution": 0.02, "distance": 0.3, "SizeMax": 0.1}, + core_2={"resolution": 0.02, "distance": 0.3, "SizeMax": 0.1}, + **{ + f"core_c_{i}": {"resolution": 0.01, "distance": 0.3, "SizeMax": 0.1} + for i in range(num_c) + }, + ) + + mesh = from_meshio( + mesh_from_OrderedDict( + polygons, resolutions, filename="mesh.msh", default_resolution_max=0.4 + ) + ) + # mesh.draw().show() + + basis0 = Basis(mesh, ElementTriP0(), intorder=5) + + epsilon = basis0.zeros() + 3.4777**2 + epsilon[basis0.get_dofs(elements=("box"))] = 1.444**2 + epsilon[basis0.get_dofs(elements=("clad"))] = 1**2 + # basis0.plot(epsilon, colorbar=True).show() + modes_both = compute_modes( + basis0, epsilon, wavelength=wavelength, num_modes=2, order=2 + ).sorted(lambda x: -x.n_eff) + # modes_both[0].show("E", direction="x") + # modes_both[1].show("E", direction="x") + coupling_length = wavelength / (2 * np.real(modes_both[0].n_eff - modes_both[1].n_eff)) + print(f"Maximum power transfer after {coupling_length} um prop length") + coupling_lengths.append(coupling_length) + + plt.plot(*reference_data, label="Reference") + plt.plot(w_core_cs * 1e3, coupling_lengths, "ro", label="Calculated") + plt.legend() + plt.show() diff --git a/docs/references.bib b/docs/references.bib index 46d9be57..2f439291 100644 --- a/docs/references.bib +++ b/docs/references.bib @@ -342,3 +342,16 @@ @article{Jansen1978 month = feb, pages = {75--82} } +@article{Yang2020, + title = {Crosstalk reduction of integrated optical waveguides with nonuniform subwavelength silicon strips}, + volume = {10}, + issn = {2045-2322}, + url = {http://dx.doi.org/10.1038/s41598-020-61149-1}, + doi = {10.1038/s41598-020-61149-1}, + number = {1}, + journal = {Scientific Reports}, + publisher = {Springer Science and Business Media LLC}, + author = {Yang, Yang and Guo, Yinghui and Huang, Yijia and Pu, Mingbo and Wang, Yanqin and Ma, Xiaoliang and Li, Xiong and Luo, Xiangang}, + year = {2020}, + month = mar +} From ae398882f0054191ee6bd1de474776291a370024 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:29:11 -0700 Subject: [PATCH 12/31] cleanup --- .../examples/crosstalk_reduction/crosstalk_reduction.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py index 98b9019b..1b031c70 100644 --- a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py +++ b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py @@ -36,7 +36,6 @@ w_core_2 = 0.5 gap = 0.5 h_core = 0.22 -h_rib = 0.05 w_core_c = 0.2 num_c = 2 @@ -85,7 +84,6 @@ def core_c_pos(i): ) for i in range(num_c) }, - # rib=box(-w_sim / 2, 0, w_sim / 2, h_rib), clad=Polygon( [(-w_sim / 2, 0), (-w_sim / 2, h_clad), (w_sim / 2, h_clad), (w_sim / 2, 0)] ), @@ -122,7 +120,7 @@ def core_c_pos(i): # modes_both[0].show("E", direction="x") # modes_both[1].show("E", direction="x") coupling_length = wavelength / (2 * np.real(modes_both[0].n_eff - modes_both[1].n_eff)) - print(f"Maximum power transfer after {coupling_length} um prop length") + # print(f"Maximum power transfer after {coupling_length} um prop length") coupling_lengths.append(coupling_length) plt.plot(*reference_data, label="Reference") From d0c8161c137654dc488b3abde4237322717a357a Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:29:22 -0700 Subject: [PATCH 13/31] cleanup example --- .../examples/crosstalk_reduction/crosstalk_reduction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py index 1b031c70..fd3c2347 100644 --- a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py +++ b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py @@ -13,7 +13,7 @@ # --- # %% [markdown] -# # Bent waveguide losses +# # Crosstalk reduction # This example reproduces Figure 3 from {cite}`Yang2020`` in which the crosstalk between adjacent waveguides is suppressed. # %% tags=["hide-input"] From d254ecfd0618b15defc6f0014c6ce5f0f43abe88 Mon Sep 17 00:00:00 2001 From: Simon Bilodeau <46427609+simbilod@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:27:40 -0700 Subject: [PATCH 14/31] fix typo in unit conversion --- femwell/pn_analytical.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/femwell/pn_analytical.py b/femwell/pn_analytical.py index 79d8b8bb..1a93aae8 100644 --- a/femwell/pn_analytical.py +++ b/femwell/pn_analytical.py @@ -76,7 +76,7 @@ def k_to_alpha_dB(k, wavelength): """Converts extinction coefficient (unitless) to absorption coefficient (dB/cm), given wavelength (um).""" wavelength = wavelength * 1e-6 # convert to m alpha = 4 * np.pi * k / wavelength - return 10 * np.log10(np.exp(1)) * alpha * 1e-2 # convert to /cm + return 10 * np.log10(np.exp(alpha * 1e-2)) # convert to /cm # Physical constants (in cm) From 4a4273765f283f328640b0d9e24ef6856eea8dc8 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Thu, 25 Apr 2024 09:04:05 -0700 Subject: [PATCH 15/31] add labels --- .../examples/crosstalk_reduction/crosstalk_reduction.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py index fd3c2347..6546c6a8 100644 --- a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py +++ b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py @@ -123,6 +123,8 @@ def core_c_pos(i): # print(f"Maximum power transfer after {coupling_length} um prop length") coupling_lengths.append(coupling_length) + plt.xlabel("Width / μm") + plt.ylabel("Coupling length / μm") plt.plot(*reference_data, label="Reference") plt.plot(w_core_cs * 1e3, coupling_lengths, "ro", label="Calculated") plt.legend() From 15820fd7feb67149f319bddc6bd322f23783896a Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Thu, 25 Apr 2024 09:22:16 -0700 Subject: [PATCH 16/31] add plots --- .../examples/crosstalk_reduction/crosstalk_reduction.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py index 6546c6a8..d53e395a 100644 --- a/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py +++ b/docs/photonics/examples/crosstalk_reduction/crosstalk_reduction.py @@ -28,7 +28,7 @@ from femwell.maxwell.waveguide import compute_modes from femwell.mesh import mesh_from_OrderedDict -# %% +# %% tags=["hide-output"] w_sim = 4 h_clad = 1 h_box = 1 @@ -123,6 +123,7 @@ def core_c_pos(i): # print(f"Maximum power transfer after {coupling_length} um prop length") coupling_lengths.append(coupling_length) + # %% plt.xlabel("Width / μm") plt.ylabel("Coupling length / μm") plt.plot(*reference_data, label="Reference") From 8b020c6c9b9d2d40fabe80a415091fea9e9dbe95 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:59:17 -0700 Subject: [PATCH 17/31] fix --- docs/julia/heater_3d.jl | 8 +++++--- src/Maxwell/Electrostatic/Electrostatic.jl | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/julia/heater_3d.jl b/docs/julia/heater_3d.jl index 133d0f9e..e188611f 100644 --- a/docs/julia/heater_3d.jl +++ b/docs/julia/heater_3d.jl @@ -101,9 +101,9 @@ thermal_diffisitivities = # The next step is to define the boundary conditions, this can be done simply via julia-dicts: # %% tags=["remove-stderr", "hide-output"] -boundary_potentials = Dict(["metal3#e1___None" => 0.4, "metal3#e2___None" => 0.0]) +boundary_potentials = Dict(["metal3#e1___clad" => 0.4, "metal3#e2___clad" => 0.0]) boundary_temperatures = - Dict("metal3#e1___None" => 0.4, "metal3#e2___None" => 0.0, "box___None" => 0.0) + Dict("metal3#e1___None" => 0.0, "metal3#e2___None" => 0.0, "box___None" => 0.0) # %% [markdown] # Now we're ready to do the simulations! First we simulate the electrical potential, @@ -136,9 +136,10 @@ println( ) # %% [markdown] -# And we write the fields to a file for visualisation using paraview: +# And we write the fields to a vtu-file for visualisation using paraview: # %% tags=["remove-stderr", "hide-output"] +Base.zero(::Type{String}) = "" writevtk( Ω, "results", @@ -148,6 +149,7 @@ writevtk( "temperature" => temperature(T0), "heat flux" => heat_flux(T0), "tags" => τ, + "tag_name" => (tag -> get_tag_name(labels, tag)) ∘ τ, ], ) diff --git a/src/Maxwell/Electrostatic/Electrostatic.jl b/src/Maxwell/Electrostatic/Electrostatic.jl index 39500482..c7ac79c4 100644 --- a/src/Maxwell/Electrostatic/Electrostatic.jl +++ b/src/Maxwell/Electrostatic/Electrostatic.jl @@ -2,7 +2,8 @@ module Electrostatic using Gridap using Gridap.Algebra -using GridapMakie, CairoMakie +using CairoMakie +using GridapMakie export compute_potential, current_density, power_density, potential, plot_potential From 5797b89ff5821020e981718dc8cd1885c47c132e Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:12:05 -0700 Subject: [PATCH 18/31] use julia 1.10.0 for now --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 267342e0..30a6b4ec 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,7 +49,7 @@ jobs: - uses: julia-actions/setup-julia@v2 with: - version: '1.10.2' + version: '1.10.0' - uses: julia-actions/cache@v1 with: cache-name: ${{ runner.os }}-${{ steps.get-date.outputs.date }} From bd5017df505d5ca3a391e7f34387a42d6dec8e10 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:26:23 -0700 Subject: [PATCH 19/31] precompile julia dependencies --- .github/workflows/docs.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 30a6b4ec..cd63a8c6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: installer-parallel: true - name: Install dependencies run: | - sudo apt-get install -y libglu1-mesa + sudo apt-get install -y libglu1-mesa xvfb poetry install --no-interaction pip install --upgrade scipy mamba install slepc4py=*=complex* -y @@ -55,10 +55,13 @@ jobs: cache-name: ${{ runner.os }}-${{ steps.get-date.outputs.date }} cache-compiled: "true" - uses: julia-actions/julia-buildpkg@v1 - - name: Install dependencies + - name: Install julia dependencies run: | pip install juliacall julia -e 'using Pkg; Pkg.add("PythonCall")' + - name: Precompile julia dependencies + run: | + julia -e 'using Pkg; Pkg.precomplile()' - uses: actions/cache@v4 with: path: | From 0e8ef2bcaee485d449cdaaa34f1169f079f89eec Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:30:57 -0700 Subject: [PATCH 20/31] fix typo --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cd63a8c6..6c01cc5e 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -61,7 +61,7 @@ jobs: julia -e 'using Pkg; Pkg.add("PythonCall")' - name: Precompile julia dependencies run: | - julia -e 'using Pkg; Pkg.precomplile()' + julia -e 'using Pkg; Pkg.precompile()' - uses: actions/cache@v4 with: path: | From 6154df58cc425b72d9ce34cb71cbda2d7f6fa47a Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:41:33 -0700 Subject: [PATCH 21/31] use percent format --- docs/benchmarks/mode_solver.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/benchmarks/mode_solver.py b/docs/benchmarks/mode_solver.py index b3bfca65..2ec352e6 100644 --- a/docs/benchmarks/mode_solver.py +++ b/docs/benchmarks/mode_solver.py @@ -1,26 +1,28 @@ # --- # jupyter: # jupytext: -# formats: py:light,md:myst +# formats: py:percent,md:myst # text_representation: # extension: .py -# format_name: light -# format_version: '1.5' -# jupytext_version: 1.14.4 +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.16.1 # kernelspec: # display_name: Python 3 # name: python3 # --- +# %% [markdown] # # Benchmark of the mode solver 2 +# %% [markdown] # Reproducing {cite}`Hadley2002`, where the modes of a strip and # several rib waveguide were calculated and presented with an error value. # The error for all modes is calculated to be smaller than $\pm 3 \cdot 10^{-6}$, # thus this should be the maximum derivation for our simulations. # The results are presented here: -# + tags=["remove-stderr", "hide-input", "hide-output"] +# %% tags=["remove-stderr", "hide-input", "hide-output"] from collections import OrderedDict import numpy as np @@ -135,7 +137,7 @@ neff_values_femwell_scipy.append(np.real(modes[0].n_eff)) -# + tags=["remove-stderr", "hide-input"] +# %% tags=["remove-stderr", "hide-input"] pd.DataFrame( { "slab_thickness": slab_thicknesses, @@ -160,8 +162,8 @@ ], subset=["difference scipy", "difference julia"], # "difference slepc", ) -# - +# %% [markdown] # ## Bibliography # # ```{bibliography} From 02ace4050746ccc55fa6d2c6678835c9afde4502 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:47:06 -0700 Subject: [PATCH 22/31] fix --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6c01cc5e..015b0366 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -61,7 +61,7 @@ jobs: julia -e 'using Pkg; Pkg.add("PythonCall")' - name: Precompile julia dependencies run: | - julia -e 'using Pkg; Pkg.precompile()' + julia --project=~/work/femwell/femwell -e 'using Pkg; Pkg.precompile()' - uses: actions/cache@v4 with: path: | From 53b06b47707ac681519f06fe390d2826544fa3bc Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Tue, 30 Apr 2024 18:52:27 -0700 Subject: [PATCH 23/31] continue in precompile errors --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 015b0366..e92a68ef 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -60,6 +60,7 @@ jobs: pip install juliacall julia -e 'using Pkg; Pkg.add("PythonCall")' - name: Precompile julia dependencies + continue-on-error: true run: | julia --project=~/work/femwell/femwell -e 'using Pkg; Pkg.precompile()' - uses: actions/cache@v4 From d32d513569a437222ecc4c1dfb37b48c1b6e0520 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 1 May 2024 11:28:43 -0700 Subject: [PATCH 24/31] update julia to 1.10.3 --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e92a68ef..91b19410 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,7 +49,7 @@ jobs: - uses: julia-actions/setup-julia@v2 with: - version: '1.10.0' + version: '1.10.3' - uses: julia-actions/cache@v1 with: cache-name: ${{ runner.os }}-${{ steps.get-date.outputs.date }} From 8fb8bd2331d748b117ea74f173151b8ab78486db Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 1 May 2024 11:38:35 -0700 Subject: [PATCH 25/31] convert docs file to percent format --- docs/benchmarks/mode_solver_rectangle.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/benchmarks/mode_solver_rectangle.py b/docs/benchmarks/mode_solver_rectangle.py index b4a18d7d..a50c9540 100644 --- a/docs/benchmarks/mode_solver_rectangle.py +++ b/docs/benchmarks/mode_solver_rectangle.py @@ -1,26 +1,28 @@ # --- # jupyter: # jupytext: -# formats: py:light,md:myst +# formats: py:percent,md:myst # text_representation: # extension: .py -# format_name: light -# format_version: '1.5' -# jupytext_version: 1.14.4 +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.15.0 # kernelspec: # display_name: Python 3 # name: python3 # --- +# %% [markdown] # # Benchmark of the mode solver 1 +# %% [markdown] # Reproducing {cite}`Hadley2002`, where the modes of a analytically solvable geometry are calculated. # The error for all modes is calculated to be smaller than $\pm 1 \cdot 10^{-8}$. # We'll show that we get pretty close, but will stop at a resonable resolution to keep the runtime sensible. # Getting even higher accurancy will be left open for adaptive refinement. # The results are presented here: -# + tags=["remove-stderr", "hide-input"] +# %% tags=["remove-stderr", "hide-input"] from collections import OrderedDict import numpy as np @@ -107,8 +109,8 @@ ], subset=["difference slepc", "difference scipy"], ) -# - +# %% [markdown] # ## Bibliography # # ```{bibliography} From 8627974438c5ffa3a5263b86a254e870b86faf29 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 1 May 2024 11:42:54 -0700 Subject: [PATCH 26/31] rename variable --- docs/benchmarks/mode_solver_rectangle.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/benchmarks/mode_solver_rectangle.py b/docs/benchmarks/mode_solver_rectangle.py index a50c9540..db4d88d6 100644 --- a/docs/benchmarks/mode_solver_rectangle.py +++ b/docs/benchmarks/mode_solver_rectangle.py @@ -62,8 +62,8 @@ for epsilons, boundaries in zip(epsilons_paper, boundaries): epsilon = basis0.zeros() - for subdomain, e in epsilons.items(): - epsilon[basis0.get_dofs(elements=subdomain)] = e + for subdomain, epsilon in epsilons.items(): + epsilon[basis0.get_dofs(elements=subdomain)] = epsilon modes = compute_modes( basis0, From 7f446a535e1eadce51627a20e57fd59f460475b8 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 1 May 2024 11:46:53 -0700 Subject: [PATCH 27/31] Fix --- docs/benchmarks/mode_solver_rectangle.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/benchmarks/mode_solver_rectangle.py b/docs/benchmarks/mode_solver_rectangle.py index db4d88d6..f1b7f9db 100644 --- a/docs/benchmarks/mode_solver_rectangle.py +++ b/docs/benchmarks/mode_solver_rectangle.py @@ -62,8 +62,8 @@ for epsilons, boundaries in zip(epsilons_paper, boundaries): epsilon = basis0.zeros() - for subdomain, epsilon in epsilons.items(): - epsilon[basis0.get_dofs(elements=subdomain)] = epsilon + for subdomain, e in epsilons.items(): + epsilon[basis0.get_dofs(elements=subdomain)] = e modes = compute_modes( basis0, @@ -89,16 +89,16 @@ pd.DataFrame( { - "epsilons": [ + "Epsilons": [ f"{epsilons['core']:.2f} / {epsilons['clad']:.2f}" for epsilons in epsilons_paper ], - "reference value": (f"{n:.8f}" for n in neff_values_paper), - "calculated value slepc": (f"{n:.8f}" for n in neff_values_femwell_slepc), - "difference slepc": ( + "Reference value": (f"{n:.8f}" for n in neff_values_paper), + "Calculated value slepc": (f"{n:.8f}" for n in neff_values_femwell_slepc), + "Difference slepc": ( f"{n1-n2:.8f}" for n1, n2 in zip(neff_values_paper, neff_values_femwell_slepc) ), - "calculated value scipy": (f"{n:.8f}" for n in neff_values_femwell_scipy), - "difference scipy": ( + "Calculated value scipy": (f"{n:.8f}" for n in neff_values_femwell_scipy), + "Difference scipy": ( f"{n1-n2:.8f}" for n1, n2 in zip(neff_values_paper, neff_values_femwell_scipy) ), } From 37c2885e7341ab5aa4f2a625bc9107033e3dd25c Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 1 May 2024 13:26:30 -0700 Subject: [PATCH 28/31] fix --- docs/benchmarks/mode_solver_rectangle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/benchmarks/mode_solver_rectangle.py b/docs/benchmarks/mode_solver_rectangle.py index f1b7f9db..0a828060 100644 --- a/docs/benchmarks/mode_solver_rectangle.py +++ b/docs/benchmarks/mode_solver_rectangle.py @@ -107,7 +107,7 @@ "background-color: green" if abs(float(difference)) < 5e-6 else "background-color: red" for difference in differences ], - subset=["difference slepc", "difference scipy"], + subset=["Difference slepc", "Difference scipy"], ) # %% [markdown] From a7def39bb5de1eaf8f7685afa7a8dde14193bdae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 05:02:15 +0000 Subject: [PATCH 29/31] build(deps): bump julia-actions/cache from 1 to 2 Bumps [julia-actions/cache](https://github.com/julia-actions/cache) from 1 to 2. - [Release notes](https://github.com/julia-actions/cache/releases) - [Commits](https://github.com/julia-actions/cache/compare/v1...v2) --- updated-dependencies: - dependency-name: julia-actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- .github/workflows/docs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2379a50c..51f4e30b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: - uses: julia-actions/setup-julia@v2 with: version: '1.10.2' - - uses: julia-actions/cache@v1 + - uses: julia-actions/cache@v2 - name: Install JuliaFormatter and format run: | julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter"))' diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 91b19410..33805c7d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,7 +50,7 @@ jobs: - uses: julia-actions/setup-julia@v2 with: version: '1.10.3' - - uses: julia-actions/cache@v1 + - uses: julia-actions/cache@v2 with: cache-name: ${{ runner.os }}-${{ steps.get-date.outputs.date }} cache-compiled: "true" From 0260a94d8f3fe077996692f5b7f1d127b32b55ca Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 8 May 2024 10:33:04 -0700 Subject: [PATCH 30/31] fix example --- docs/julia/heater_3d_mesh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/julia/heater_3d_mesh.py b/docs/julia/heater_3d_mesh.py index 0ddc4803..37af8f5f 100644 --- a/docs/julia/heater_3d_mesh.py +++ b/docs/julia/heater_3d_mesh.py @@ -8,7 +8,7 @@ # Choose some component c = gf.component.Component() -waveguide = c << gf.get_component(gf.components.straight_heater_metal(length=40)) +waveguide = c << gf.get_component(gf.components.straight_heater_metal(length=80)) e1 = c << gf.components.straight(1, cross_section="xs_m3") e1.connect(e1["e1"], waveguide["l_e1"]) e2 = c << gf.components.straight(1, cross_section="xs_m3") From 8618162631ede2b60050638a5285f14ca58dee64 Mon Sep 17 00:00:00 2001 From: Helge Gehring <42973196+HelgeGehring@users.noreply.github.com> Date: Wed, 8 May 2024 10:34:32 -0700 Subject: [PATCH 31/31] fix toc --- docs/_toc.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/_toc.yml b/docs/_toc.yml index c1b01d7b..bf9ab8e6 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -9,15 +9,15 @@ parts: - file: install - caption: Derivation of the equations chapters: - - file: math/maxwell - sections: - - file: math/maxwell_quantities - - file: math/waveguide_port - - file: math/overlap_integrals - - file: math/thermal - - file: math/dispersion - - file: math/coupled_mode_theory - - file: math/schroedinger + - file: math/maxwell + sections: + - file: math/maxwell_quantities + - file: math/waveguide_port + - file: math/overlap_integrals + - file: math/thermal + - file: math/dispersion + - file: math/coupled_mode_theory + - file: math/schroedinger - caption: Examples chapters: